diff options
author | David Howells <dhowells@redhat.com> | 2019-05-14 13:23:43 +0200 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2019-05-16 23:23:21 +0200 |
commit | b8359153252d4465cb74f8de6c50e8c6295cbe2e (patch) | |
tree | 5ec539b6936cde10dc725cbc90acff2220c0f814 /fs/afs/internal.h | |
parent | afs: Fix unlink to handle YFS.RemoveFile2 better (diff) | |
download | linux-b8359153252d4465cb74f8de6c50e8c6295cbe2e.tar.xz linux-b8359153252d4465cb74f8de6c50e8c6295cbe2e.zip |
afs: Pass pre-fetch server and volume break counts into afs_iget5_set()
Pass the server and volume break counts from before the status fetch
operation that queried the attributes of a file into afs_iget5_set() so
that the new vnode's break counters can be initialised appropriately.
This allows detection of a volume or server break that happened whilst we
were fetching the status or setting up the vnode.
Fixes: c435ee34551e ("afs: Overhaul the callback handling")
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'fs/afs/internal.h')
-rw-r--r-- | fs/afs/internal.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index f80ca638e70f..2073c1a3ab4b 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h @@ -66,6 +66,8 @@ struct afs_fs_context { struct afs_iget_data { struct afs_fid fid; struct afs_volume *volume; /* volume on which resides */ + unsigned int cb_v_break; /* Pre-fetch volume break count */ + unsigned int cb_s_break; /* Pre-fetch server break count */ }; enum afs_call_state { @@ -1023,7 +1025,7 @@ extern int afs_fetch_status(struct afs_vnode *, struct key *, bool, afs_access_t extern int afs_iget5_test(struct inode *, void *); extern struct inode *afs_iget_pseudo_dir(struct super_block *, bool); extern struct inode *afs_iget(struct super_block *, struct key *, - struct afs_fid *, struct afs_status_cb *, + struct afs_iget_data *, struct afs_status_cb *, struct afs_cb_interest *, struct afs_vnode *); extern void afs_zap_data(struct afs_vnode *); |