lockref: Relax in cmpxchg loop
authorLuck, Tony <tony.luck@intel.com>
Tue, 3 Sep 2013 21:49:49 +0000 (14:49 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 3 Sep 2013 22:36:42 +0000 (15:36 -0700)
While we are likley to succeed and break out of this loop, it isn't
guaranteed.  We should be power and thread friendly if we do have to
go around for a second (or third, or more) attempt.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
lib/lockref.c

index 7819c2d1d315eff9a010b989d716f1b46387ef4e..9d76f404ce9a6589e7e5b98733d7317b0ad5bb1a 100644 (file)
@@ -19,6 +19,7 @@
                if (likely(old.lock_count == prev.lock_count)) {                \
                        SUCCESS;                                                \
                }                                                               \
+               cpu_relax();                                                    \
        }                                                                       \
 } while (0)