]> git.baikalelectronics.ru Git - kernel.git/commitdiff
cifs: add a timestamp to track when the lease of the cached dir was taken
authorRonnie Sahlberg <lsahlber@redhat.com>
Mon, 8 Mar 2021 23:07:33 +0000 (09:07 +1000)
committerSteve French <stfrench@microsoft.com>
Sun, 25 Apr 2021 21:28:23 +0000 (16:28 -0500)
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>
fs/cifs/cifsglob.h
fs/cifs/smb2misc.c
fs/cifs/smb2ops.c

index 64a1095d7cfd94ea999bbaa5797e6b892a7aee60..b23a0ee8c6f8264e4d739691adffd7b1e8f3742a 100644 (file)
@@ -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;
index aac384f69f74b684900144f2dab1e2d5f7d6156f..06d555d4da9a8c31beb9d848722f1d82fe4dc645 100644 (file)
@@ -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,
index 65d303466581d72afb6fcbc4a56b725122205d72..49cdc6e0d9d8b9175643320058a11c5da02057df 100644 (file)
@@ -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);