smb3: do not try to cache root directory if dir leases not supported
authorSteve French <stfrench@microsoft.com>
Wed, 21 Oct 2020 05:15:42 +0000 (00:15 -0500)
committerSteve French <stfrench@microsoft.com>
Wed, 21 Oct 2020 22:57:07 +0000 (17:57 -0500)
To servers which do not support directory leases (e.g. Samba)
it is wasteful to try to open_shroot (ie attempt to cache the
root directory handle).  Skip attempt to open_shroot when
server does not indicate support for directory leases.

Cuts the number of requests on mount from 17 to 15, and
cuts the number of requests on stat of the root directory
from 4 to 3.

Signed-off-by: Steve French <stfrench@microsoft.com>
CC: Stable <stable@vger.kernel.org> # v5.1+
fs/cifs/connect.c

index d096cfda56eb5f56f22cb17f8b2f35e50f5d2ca7..3a9980bf0d6ee9e1482dc062bee56046722b573d 100644 (file)
@@ -3608,7 +3608,10 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb_vol *volume_info)
         */
        tcon->retry = volume_info->retry;
        tcon->nocase = volume_info->nocase;
-       tcon->nohandlecache = volume_info->nohandlecache;
+       if (ses->server->capabilities & SMB2_GLOBAL_CAP_DIRECTORY_LEASING)
+               tcon->nohandlecache = volume_info->nohandlecache;
+       else
+               tcon->nohandlecache = 1;
        tcon->nodelete = volume_info->nodelete;
        tcon->local_lease = volume_info->local_lease;
        INIT_LIST_HEAD(&tcon->pending_opens);