diff options
author | Steve French <stfrench@microsoft.com> | 2019-07-18 17:22:18 -0500 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2019-07-18 17:44:13 -0500 |
commit | 89a5bfa350faf87156acda4d7c457808bfecaa0e (patch) | |
tree | 9560165181bb65a6966bd21681ea9b777517447c /fs/cifs/smb2ops.c | |
parent | bf3c90ee1efe4dd3417d2129f9f6c68a4c76de00 (diff) | |
download | linux-89a5bfa350faf87156acda4d7c457808bfecaa0e.tar.bz2 |
smb3: optimize open to not send query file internal info
We can cut one third of the traffic on open by not querying the
inode number explicitly via SMB3 query_info since it is now
returned on open in the qfid context.
This is better in multiple ways, and
speeds up file open about 10% (more if network is slow).
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Diffstat (limited to 'fs/cifs/smb2ops.c')
-rw-r--r-- | fs/cifs/smb2ops.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index fed75e1646c1..a5bc1b671c12 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -754,11 +754,12 @@ int open_shroot(unsigned int xid, struct cifs_tcon *tcon, struct cifs_fid *pfid) tcon->crfid.is_valid = true; kref_init(&tcon->crfid.refcount); + /* BB TBD check to see if oplock level check can be removed below */ if (o_rsp->OplockLevel == SMB2_OPLOCK_LEVEL_LEASE) { kref_get(&tcon->crfid.refcount); - oplock = smb2_parse_lease_state(server, o_rsp, - &oparms.fid->epoch, - oparms.fid->lease_key); + smb2_parse_contexts(server, o_rsp, + &oparms.fid->epoch, + oparms.fid->lease_key, &oplock, NULL); } else goto oshr_exit; |