OSDN Git Service

afs: Fix application of the results of a inline bulk status fetch
authorDavid Howells <dhowells@redhat.com>
Tue, 14 May 2019 11:33:10 +0000 (12:33 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 16 May 2019 21:23:21 +0000 (22:23 +0100)
commit39db9815da489b47b50b8e6e4fc7566a77bd18bf
treefbdb5d1e2e32e4a3ec9c695f000d295b36138c2e
parentb8359153252d4465cb74f8de6c50e8c6295cbe2e
afs: Fix application of the results of a inline bulk status fetch

Fix afs_do_lookup() such that when it does an inline bulk status fetch op,
it will update inodes that are already extant (something that afs_iget()
doesn't do) and to cache permits for each inode created (thereby avoiding a
follow up FS.FetchStatus call to determine this).

Extant inodes need looking up in advance so that their cb_break counters
before and after the operation can be compared.  To this end, the inode
pointers are cached so that they don't need looking up again after the op.

Fixes: 5cf9dd55a0ec ("afs: Prospectively look up extra files when doing a single lookup")
Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/afs.h
fs/afs/dir.c