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

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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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,
+2 −0
Original line number Diff line number Diff line
@@ -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);