Re: [PATCH v2] cifs: do not query ifaces on smb1 mounts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10 January 2023 22:42:33 GMT-03:00, Tom Talpey <tom@xxxxxxxxxx> wrote:
>On 1/10/2023 5:23 PM, Paulo Alcantara wrote:
>> Users have reported the following error on every 600 seconds
>> (SMB_INTERFACE_POLL_INTERVAL) when mounting SMB1 shares:
>> 
>> 	CIFS: VFS: \\srv\share error -5 on ioctl to get interface list
>> 
>> It's supported only by SMB2+, so do not query network interfaces on
>> SMB1 mounts.
>> 
>> Fixes: 6e1c1c08cdf3 ("cifs: periodically query network interfaces from server")
>> Signed-off-by: Paulo Alcantara (SUSE) <pc@xxxxxx>
>> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
>> ---
>> v1 -> v2:
>> 	remove cifs_tcon::iface_query_poll and then check version and
>> 	server's capability multichannel
>> 
>>   fs/cifs/connect.c | 9 ++++++---
>>   1 file changed, 6 insertions(+), 3 deletions(-)
>> 
>> diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
>> index d371259d6808..b2a04b4e89a5 100644
>> --- a/fs/cifs/connect.c
>> +++ b/fs/cifs/connect.c
>> @@ -2606,11 +2606,14 @@ cifs_get_tcon(struct cifs_ses *ses, struct smb3_fs_context *ctx)
>>   	INIT_LIST_HEAD(&tcon->pending_opens);
>>   	tcon->status = TID_GOOD;
>>   -	/* schedule query interfaces poll */
>>   	INIT_DELAYED_WORK(&tcon->query_interfaces,
>>   			  smb2_query_server_interfaces);
>> -	queue_delayed_work(cifsiod_wq, &tcon->query_interfaces,
>> -			   (SMB_INTERFACE_POLL_INTERVAL * HZ));
>> +	if (ses->server->dialect >= SMB30_PROT_ID &&
>
>The dialect test is actually unnecessary, because the server
>global capability, indicating the support, is what's important.
>But it's harmless to be explicit, so..

The dialect test is still necessary, otherwise we'd end up mixing SMB2_GLOBAL_CAP_MULTI_CHANNEL with CAP_LARGE_FILES[1] and then scheduling the worker for smb1 mounts.

I quickly tested it and the global cap test passed for smb1 mount due to CAP_LARGE_FILES being set.

[1] https://git.cjr.nz/linux.git/tree/fs/cifs/cifspdu.h#n533


>
>Reviewed-by: Tom Talpey <tom@xxxxxxxxxx>
>
>LGTM.
>
>> +	    (ses->server->capabilities & SMB2_GLOBAL_CAP_MULTI_CHANNEL)) {
>> +		/* schedule query interfaces poll */
>> +		queue_delayed_work(cifsiod_wq, &tcon->query_interfaces,
>> +				   (SMB_INTERFACE_POLL_INTERVAL * HZ));
>> +	}
>>     	spin_lock(&cifs_tcp_ses_lock);
>>   	list_add(&tcon->tcon_list, &ses->tcon_list);





[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux