• Waiman Long's avatar
    vfs: use lockref_get_not_zero() for optimistic lockless dget_parent() · df3d0bbc
    Waiman Long authored
    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: default avatarWaiman Long <Waiman.Long@hp.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    df3d0bbc
dcache.c 78.8 KB