diff mbox

[v2,3/4] CIFS: remove bad_network_name flag

Message ID d573d29c68474595aaa803447ebfec8f04eb75fc.1491415908.git-series.germano.percossi@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Germano Percossi April 7, 2017, 11:29 a.m. UTC
STATUS_BAD_NETWORK_NAME can be received during node failover,
causing the flag to be set and making the reconnect thread
always unsuccessful, thereafter.

Once the only place where it is set is removed, the remaining
bits are rendered moot.

Removing it does not prevent "mount" from failing when a non
existent share is passed.

What happens when the share really ceases to exist while the
share is mounted is undefined now as much as it was before.

Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
---
 fs/cifs/cifsglob.h | 1 -
 fs/cifs/smb2pdu.c  | 5 -----
 2 files changed, 6 deletions(-)

Comments

Pavel Shilovsky April 10, 2017, 5:39 p.m. UTC | #1
2017-04-07 4:29 GMT-07:00 Germano Percossi <germano.percossi@citrix.com>:
> STATUS_BAD_NETWORK_NAME can be received during node failover,
> causing the flag to be set and making the reconnect thread
> always unsuccessful, thereafter.
>
> Once the only place where it is set is removed, the remaining
> bits are rendered moot.
>
> Removing it does not prevent "mount" from failing when a non
> existent share is passed.
>
> What happens when the share really ceases to exist while the
> share is mounted is undefined now as much as it was before.
>
> Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
> ---
>  fs/cifs/cifsglob.h | 1 -
>  fs/cifs/smb2pdu.c  | 5 -----
>  2 files changed, 6 deletions(-)
>
> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
> index c34bdb1..b04f107 100644
> --- a/fs/cifs/cifsglob.h
> +++ b/fs/cifs/cifsglob.h
> @@ -947,7 +947,6 @@ struct cifs_tcon {
>         bool use_persistent:1; /* use persistent instead of durable handles */
>  #ifdef CONFIG_CIFS_SMB2
>         bool print:1;           /* set if connection to printer share */
> -       bool bad_network_name:1; /* set if ret status STATUS_BAD_NETWORK_NAME */
>         __le32 capabilities;
>         __u32 share_flags;
>         __u32 maximal_access;
> diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
> index 17af75a..3d1cb32 100644
> --- a/fs/cifs/smb2pdu.c
> +++ b/fs/cifs/smb2pdu.c
> @@ -1171,9 +1171,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>         else
>                 return -EIO;
>
> -       if (tcon && tcon->bad_network_name)
> -               return -ENOENT;
> -
>         unc_path = kmalloc(MAX_SHARENAME_LENGTH * 2, GFP_KERNEL);
>         if (unc_path == NULL)
>                 return -ENOMEM;
> @@ -1273,8 +1270,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>  tcon_error_exit:
>         if (rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
>                 cifs_dbg(VFS, "BAD_NETWORK_NAME: %s\n", tree);
> -               if (tcon)
> -                       tcon->bad_network_name = true;
>         }
>         goto tcon_exit;
>  }
> --
> git-series 0.9.1
> --
> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>

--
Best regards,
Pavel Shilovsky
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve French April 10, 2017, 10:33 p.m. UTC | #2
isn't this stable candidate?

On Mon, Apr 10, 2017 at 12:39 PM, Pavel Shilovsky <piastryyy@gmail.com> wrote:
> 2017-04-07 4:29 GMT-07:00 Germano Percossi <germano.percossi@citrix.com>:
>> STATUS_BAD_NETWORK_NAME can be received during node failover,
>> causing the flag to be set and making the reconnect thread
>> always unsuccessful, thereafter.
>>
>> Once the only place where it is set is removed, the remaining
>> bits are rendered moot.
>>
>> Removing it does not prevent "mount" from failing when a non
>> existent share is passed.
>>
>> What happens when the share really ceases to exist while the
>> share is mounted is undefined now as much as it was before.
>>
>> Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
>> ---
>>  fs/cifs/cifsglob.h | 1 -
>>  fs/cifs/smb2pdu.c  | 5 -----
>>  2 files changed, 6 deletions(-)
>>
>> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
>> index c34bdb1..b04f107 100644
>> --- a/fs/cifs/cifsglob.h
>> +++ b/fs/cifs/cifsglob.h
>> @@ -947,7 +947,6 @@ struct cifs_tcon {
>>         bool use_persistent:1; /* use persistent instead of durable handles */
>>  #ifdef CONFIG_CIFS_SMB2
>>         bool print:1;           /* set if connection to printer share */
>> -       bool bad_network_name:1; /* set if ret status STATUS_BAD_NETWORK_NAME */
>>         __le32 capabilities;
>>         __u32 share_flags;
>>         __u32 maximal_access;
>> diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
>> index 17af75a..3d1cb32 100644
>> --- a/fs/cifs/smb2pdu.c
>> +++ b/fs/cifs/smb2pdu.c
>> @@ -1171,9 +1171,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>>         else
>>                 return -EIO;
>>
>> -       if (tcon && tcon->bad_network_name)
>> -               return -ENOENT;
>> -
>>         unc_path = kmalloc(MAX_SHARENAME_LENGTH * 2, GFP_KERNEL);
>>         if (unc_path == NULL)
>>                 return -ENOMEM;
>> @@ -1273,8 +1270,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>>  tcon_error_exit:
>>         if (rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
>>                 cifs_dbg(VFS, "BAD_NETWORK_NAME: %s\n", tree);
>> -               if (tcon)
>> -                       tcon->bad_network_name = true;
>>         }
>>         goto tcon_exit;
>>  }
>> --
>> git-series 0.9.1
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
> Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
>
> --
> Best regards,
> Pavel Shilovsky
Germano Percossi April 11, 2017, 9:04 a.m. UTC | #3
Yes, Steve.

Sorry, I forgot to mark them for stable

Germano

On 04/10/2017 11:33 PM, Steve French wrote:
> isn't this stable candidate?
> 
> On Mon, Apr 10, 2017 at 12:39 PM, Pavel Shilovsky <piastryyy@gmail.com> wrote:
>> 2017-04-07 4:29 GMT-07:00 Germano Percossi <germano.percossi@citrix.com>:
>>> STATUS_BAD_NETWORK_NAME can be received during node failover,
>>> causing the flag to be set and making the reconnect thread
>>> always unsuccessful, thereafter.
>>>
>>> Once the only place where it is set is removed, the remaining
>>> bits are rendered moot.
>>>
>>> Removing it does not prevent "mount" from failing when a non
>>> existent share is passed.
>>>
>>> What happens when the share really ceases to exist while the
>>> share is mounted is undefined now as much as it was before.
>>>
>>> Signed-off-by: Germano Percossi <germano.percossi@citrix.com>
>>> ---
>>>  fs/cifs/cifsglob.h | 1 -
>>>  fs/cifs/smb2pdu.c  | 5 -----
>>>  2 files changed, 6 deletions(-)
>>>
>>> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
>>> index c34bdb1..b04f107 100644
>>> --- a/fs/cifs/cifsglob.h
>>> +++ b/fs/cifs/cifsglob.h
>>> @@ -947,7 +947,6 @@ struct cifs_tcon {
>>>         bool use_persistent:1; /* use persistent instead of durable handles */
>>>  #ifdef CONFIG_CIFS_SMB2
>>>         bool print:1;           /* set if connection to printer share */
>>> -       bool bad_network_name:1; /* set if ret status STATUS_BAD_NETWORK_NAME */
>>>         __le32 capabilities;
>>>         __u32 share_flags;
>>>         __u32 maximal_access;
>>> diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
>>> index 17af75a..3d1cb32 100644
>>> --- a/fs/cifs/smb2pdu.c
>>> +++ b/fs/cifs/smb2pdu.c
>>> @@ -1171,9 +1171,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>>>         else
>>>                 return -EIO;
>>>
>>> -       if (tcon && tcon->bad_network_name)
>>> -               return -ENOENT;
>>> -
>>>         unc_path = kmalloc(MAX_SHARENAME_LENGTH * 2, GFP_KERNEL);
>>>         if (unc_path == NULL)
>>>                 return -ENOMEM;
>>> @@ -1273,8 +1270,6 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
>>>  tcon_error_exit:
>>>         if (rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
>>>                 cifs_dbg(VFS, "BAD_NETWORK_NAME: %s\n", tree);
>>> -               if (tcon)
>>> -                       tcon->bad_network_name = true;
>>>         }
>>>         goto tcon_exit;
>>>  }
>>> --
>>> git-series 0.9.1
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>> Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
>>
>> --
>> Best regards,
>> Pavel Shilovsky
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index c34bdb1..b04f107 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -947,7 +947,6 @@  struct cifs_tcon {
 	bool use_persistent:1; /* use persistent instead of durable handles */
 #ifdef CONFIG_CIFS_SMB2
 	bool print:1;		/* set if connection to printer share */
-	bool bad_network_name:1; /* set if ret status STATUS_BAD_NETWORK_NAME */
 	__le32 capabilities;
 	__u32 share_flags;
 	__u32 maximal_access;
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
index 17af75a..3d1cb32 100644
--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -1171,9 +1171,6 @@  SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
 	else
 		return -EIO;
 
-	if (tcon && tcon->bad_network_name)
-		return -ENOENT;
-
 	unc_path = kmalloc(MAX_SHARENAME_LENGTH * 2, GFP_KERNEL);
 	if (unc_path == NULL)
 		return -ENOMEM;
@@ -1273,8 +1270,6 @@  SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
 tcon_error_exit:
 	if (rsp->hdr.sync_hdr.Status == STATUS_BAD_NETWORK_NAME) {
 		cifs_dbg(VFS, "BAD_NETWORK_NAME: %s\n", tree);
-		if (tcon)
-			tcon->bad_network_name = true;
 	}
 	goto tcon_exit;
 }