• Al Viro's avatar
    lookup_fast(): consolidate the RCU success case · b023e172
    Al Viro authored
    1) in case of __follow_mount_rcu() failure, lookup_fast() proceeds
    to call unlazy_child() and, should it succeed, handle_mounts().
    Note that we have status > 0 (or we wouldn't be calling
    __follow_mount_rcu() at all), so all stuff conditional upon
    non-positive status won't be even touched.
    
    Consolidate just that sequence after the call of __follow_mount_rcu().
    
    2) calling d_is_negative() and keeping its result is pointless -
    we either don't get past checking ->d_seq (and don't use the results of
    d_is_negative() at all), or we are guaranteed that ->d_inode and
    type bits of ->d_flags had been consistent at the time of d_is_negative()
    call.  IOW, we could only get to the use of its result if it's
    equal to !inode.  The same ->d_seq check guarantees that after that point
    this CPU won't observe ->d_flags values older than ->d_inode update.
    So 'negative' variable is completely pointless these days.
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    b023e172
namei.c 124 KB