From 39db9815da489b47b50b8e6e4fc7566a77bd18bf Mon Sep 17 00:00:00 2001 From: David Howells Date: Tue, 14 May 2019 12:33:10 +0100 Subject: 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 --- fs/afs/afs.h | 1 + 1 file changed, 1 insertion(+) (limited to 'fs/afs/afs.h') diff --git a/fs/afs/afs.h b/fs/afs/afs.h index a7d3f902a91c..3f4e460c6655 100644 --- a/fs/afs/afs.h +++ b/fs/afs/afs.h @@ -150,6 +150,7 @@ struct afs_file_status { struct afs_status_cb { struct afs_file_status status; struct afs_callback callback; + unsigned int cb_break; /* Pre-op callback break counter */ bool have_status; /* True if status record was retrieved */ bool have_cb; /* True if cb record was retrieved */ bool have_error; /* True if status.abort_code indicates an error */ -- cgit v1.2.3