That doesn't always help, because the dentry can be unhashed as part of
the failure, depending on when the failure happened.
A concrete example:
Case 1:
user$ cd /net/bar
check dcache for bar - not there
call autofs_lookup
look up host bar - not found
return ENOENT (leave /net/bar -ve)
bar: no such file or directory
user$ cd /net/bar
check dcache for bar - found
failed recently
bar: no such file or directory
Case 2:
user$ cd /net/foo
check dcache for foo - not there
call autofs_lookup - blocks
look up host foo - OK
mkdir /net/foo - OK
mount foo:/ /net/foo - failed
rmdir /net/foo - d_drops /net/foo
return ENOENT
foo: no such file or directory
user$ cd /net/foo
check dcache for foo - not there
call autofs_lookup...
ditto
The rmdir has to d_drop because you can't turn a +ve into a -ve.
J
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/