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: Ronnie Sahlberg <lsahlber@redhat.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
6ef4e9cbe1
commit
ed20f54a3c
|
@ -988,6 +988,7 @@ struct cached_fid {
|
|||
bool is_valid:1; /* Do we have a useable root fid */
|
||||
bool file_all_info_is_valid:1;
|
||||
bool has_lease:1;
|
||||
unsigned long time; /* jiffies of when lease was taken */
|
||||
struct kref refcount;
|
||||
struct cifs_fid *fid;
|
||||
struct mutex fid_mutex;
|
||||
|
|
|
@ -667,6 +667,7 @@ smb2_is_valid_lease_break(char *buffer)
|
|||
!memcmp(rsp->LeaseKey,
|
||||
tcon->crfid.fid->lease_key,
|
||||
SMB2_LEASE_KEY_SIZE)) {
|
||||
tcon->crfid.time = 0;
|
||||
INIT_WORK(&tcon->crfid.lease_break,
|
||||
smb2_cached_lease_break);
|
||||
queue_work(cifsiod_wq,
|
||||
|
|
|
@ -912,6 +912,8 @@ int open_cached_dir(unsigned int xid, struct cifs_tcon *tcon,
|
|||
&rsp_iov[1], sizeof(struct smb2_file_all_info),
|
||||
(char *)&tcon->crfid.file_all_info))
|
||||
tcon->crfid.file_all_info_is_valid = true;
|
||||
tcon->crfid.time = jiffies;
|
||||
|
||||
|
||||
oshr_exit:
|
||||
mutex_unlock(&tcon->crfid.fid_mutex);
|
||||
|
|
Loading…
Reference in New Issue