Commit ed20f54a authored by Ronnie Sahlberg's avatar Ronnie Sahlberg Committed by Steve French

cifs: add a timestamp to track when the lease of the cached dir was taken

and clear the timestamp when we receive a lease break.
Signed-off-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 6ef4e9cb
...@@ -988,6 +988,7 @@ struct cached_fid { ...@@ -988,6 +988,7 @@ struct cached_fid {
bool is_valid:1; /* Do we have a useable root fid */ bool is_valid:1; /* Do we have a useable root fid */
bool file_all_info_is_valid:1; bool file_all_info_is_valid:1;
bool has_lease:1; bool has_lease:1;
unsigned long time; /* jiffies of when lease was taken */
struct kref refcount; struct kref refcount;
struct cifs_fid *fid; struct cifs_fid *fid;
struct mutex fid_mutex; struct mutex fid_mutex;
......
...@@ -667,6 +667,7 @@ smb2_is_valid_lease_break(char *buffer) ...@@ -667,6 +667,7 @@ smb2_is_valid_lease_break(char *buffer)
!memcmp(rsp->LeaseKey, !memcmp(rsp->LeaseKey,
tcon->crfid.fid->lease_key, tcon->crfid.fid->lease_key,
SMB2_LEASE_KEY_SIZE)) { SMB2_LEASE_KEY_SIZE)) {
tcon->crfid.time = 0;
INIT_WORK(&tcon->crfid.lease_break, INIT_WORK(&tcon->crfid.lease_break,
smb2_cached_lease_break); smb2_cached_lease_break);
queue_work(cifsiod_wq, queue_work(cifsiod_wq,
......
...@@ -912,6 +912,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon, ...@@ -912,6 +912,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
&rsp_iov[1], sizeof(struct smb2_file_all_info), &rsp_iov[1], sizeof(struct smb2_file_all_info),
(char *)&tcon->crfid.file_all_info)) (char *)&tcon->crfid.file_all_info))
tcon->crfid.file_all_info_is_valid = true; tcon->crfid.file_all_info_is_valid = true;
tcon->crfid.time = jiffies;
oshr_exit: oshr_exit:
mutex_unlock(&tcon->crfid.fid_mutex); mutex_unlock(&tcon->crfid.fid_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment