diff options
author | Rohith Surabattula <rohiths@microsoft.com> | 2021-04-13 00:26:42 -0500 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2021-05-03 11:20:35 -0500 |
commit | c3f207ab29f793b8c942ce8067ed123f18d5b81b (patch) | |
tree | ecfa1fdb80e4aa3281c34008d6962d61eb471573 /fs/cifs/cifsproto.h | |
parent | fee742b502894c8ed02506fff61d7605934f93cb (diff) | |
download | linux-c3f207ab29f793b8c942ce8067ed123f18d5b81b.tar.gz linux-c3f207ab29f793b8c942ce8067ed123f18d5b81b.tar.bz2 linux-c3f207ab29f793b8c942ce8067ed123f18d5b81b.zip |
cifs: Deferred close for files
When file is closed, SMB2 close request is not sent to server
immediately and is deferred for acregmax defined interval. When file is
reopened by same process for read or write, the file handle
is reused if an oplock is held.
When client receives a oplock/lease break, file is closed immediately
if reference count is zero, else oplock is downgraded.
Signed-off-by: Rohith Surabattula <rohiths@microsoft.com>
Reviewed-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/cifsproto.h')
-rw-r--r-- | fs/cifs/cifsproto.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index c8faa3e82fe7..c6dacce87d3a 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h @@ -267,6 +267,17 @@ extern void cifs_add_pending_open_locked(struct cifs_fid *fid, struct tcon_link *tlink, struct cifs_pending_open *open); extern void cifs_del_pending_open(struct cifs_pending_open *open); + +extern bool cifs_is_deferred_close(struct cifsFileInfo *cfile, + struct cifs_deferred_close **dclose); + +extern void cifs_add_deferred_close(struct cifsFileInfo *cfile, + struct cifs_deferred_close *dclose); + +extern void cifs_del_deferred_close(struct cifsFileInfo *cfile); + +extern void cifs_close_deferred_file(struct cifsInodeInfo *cifs_inode); + extern struct TCP_Server_Info *cifs_get_tcp_session(struct smb3_fs_context *ctx); extern void cifs_put_tcp_session(struct TCP_Server_Info *server, int from_reconnect); |