]> git.baikalelectronics.ru Git - kernel.git/commit
vfs: use lockref_get_not_zero() for optimistic lockless dget_parent()
authorWaiman Long <Waiman.Long@hp.com>
Mon, 2 Sep 2013 18:29:22 +0000 (11:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 2 Sep 2013 18:29:22 +0000 (11:29 -0700)
commiteb72ec82eeeae0b744961be4b4d8fa9df1669694
treee25e1f06ad304ab4c87293f37961b8e97d7fd242
parentdcbfb2ad3bbd1c3c1b8dab86797e3c1c20a8d31b
vfs: use lockref_get_not_zero() for optimistic lockless dget_parent()

A valid parent pointer is always going to have a non-zero reference
count, but if we look up the parent optimistically without locking, we
have to protect against the (very unlikely) race against renaming
changing the parent from under us.

We do that by using lockref_get_not_zero(), and then re-checking the
parent pointer after getting a valid reference.

[ This is a re-implementation of a chunk from the original patch by
  Waiman Long: "dcache: Enable lockless update of dentry's refcount".
  I've completely rewritten the patch-series and split it up, but I'm
  attributing this part to Waiman as it's close enough to his earlier
  patch  - Linus ]

Signed-off-by: Waiman Long <Waiman.Long@hp.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/dcache.c