linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed
@ 2018-12-11  6:17 medadyoung
  2018-12-13 14:21 ` Adriana Kobylak
  0 siblings, 1 reply; 5+ messages in thread
From: medadyoung @ 2018-12-11  6:17 UTC (permalink / raw)
  To: jbacik, axboe; +Cc: linux-block, nbd, linux-kernel, openbmc, Medad

From: Medad <medadyoung@gmail.com>

    If we do NOT clear NBD_BOUND flag when NBD connection is closed,
    then the original NBD device could not be used again.

Signed-off-by: Medad <medadyoung@gmail.com>
---
 drivers/block/nbd.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 64278f4..5c88490 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -277,10 +277,14 @@ static void sock_shutdown(struct nbd_device *nbd)
 	struct nbd_config *config = nbd->config;
 	int i;
 
-	if (config->num_connections == 0)
+	if (config->num_connections == 0) {
+		clear_bit(NBD_BOUND, &config->runtime_flags);
 		return;
-	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags))
+	}
+	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags)) {
+		clear_bit(NBD_BOUND, &config->runtime_flags);
 		return;
+	}
 
 	for (i = 0; i < config->num_connections; i++) {
 		struct nbd_sock *nsock = config->socks[i];
@@ -944,7 +948,7 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg)
 		sockfd_put(old);
 
 		clear_bit(NBD_DISCONNECTED, &config->runtime_flags);
-
+		clear_bit(NBD_BOUND, &config->runtime_flags);
 		/* We take the tx_mutex in an error path in the recv_work, so we
 		 * need to queue_work outside of the tx_mutex.
 		 */
@@ -1020,6 +1024,7 @@ static int nbd_disconnect(struct nbd_device *nbd)
 	dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n");
 	set_bit(NBD_DISCONNECT_REQUESTED, &config->runtime_flags);
 	send_disconnects(nbd);
+	clear_bit(NBD_BOUND, &config->runtime_flags);
 	return 0;
 }
 
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed
  2018-12-11  6:17 [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed medadyoung
@ 2018-12-13 14:21 ` Adriana Kobylak
  2019-04-03 17:13   ` Adriana Kobylak
  0 siblings, 1 reply; 5+ messages in thread
From: Adriana Kobylak @ 2018-12-13 14:21 UTC (permalink / raw)
  To: medadyoung, joel, jk
  Cc: jbacik, axboe, linux-block, openbmc, linux-kernel, nbd, openbmc

On 2018-12-11 00:17, medadyoung@gmail.com wrote:
> From: Medad <medadyoung@gmail.com>
> 
>     If we do NOT clear NBD_BOUND flag when NBD connection is closed,
>     then the original NBD device could not be used again.
> 
> Signed-off-by: Medad <medadyoung@gmail.com>

Tested on Witherspoon (OpenPOWER P9 with AST2500) and verified with
this patch that the NBD device could be disconnected/reconnected.

Tested by: Adriana Kobylak <anoo@linux.ibm.com>

> ---
>  drivers/block/nbd.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
> index 64278f4..5c88490 100644
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@ -277,10 +277,14 @@ static void sock_shutdown(struct nbd_device *nbd)
>  	struct nbd_config *config = nbd->config;
>  	int i;
> 
> -	if (config->num_connections == 0)
> +	if (config->num_connections == 0) {
> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>  		return;
> -	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags))
> +	}
> +	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags)) {
> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>  		return;
> +	}
> 
>  	for (i = 0; i < config->num_connections; i++) {
>  		struct nbd_sock *nsock = config->socks[i];
> @@ -944,7 +948,7 @@ static int nbd_reconnect_socket(struct nbd_device
> *nbd, unsigned long arg)
>  		sockfd_put(old);
> 
>  		clear_bit(NBD_DISCONNECTED, &config->runtime_flags);
> -
> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>  		/* We take the tx_mutex in an error path in the recv_work, so we
>  		 * need to queue_work outside of the tx_mutex.
>  		 */
> @@ -1020,6 +1024,7 @@ static int nbd_disconnect(struct nbd_device *nbd)
>  	dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n");
>  	set_bit(NBD_DISCONNECT_REQUESTED, &config->runtime_flags);
>  	send_disconnects(nbd);
> +	clear_bit(NBD_BOUND, &config->runtime_flags);
>  	return 0;
>  }


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed
  2018-12-13 14:21 ` Adriana Kobylak
@ 2019-04-03 17:13   ` Adriana Kobylak
  2019-04-03 17:49     ` Josef Bacik
  0 siblings, 1 reply; 5+ messages in thread
From: Adriana Kobylak @ 2019-04-03 17:13 UTC (permalink / raw)
  To: josef, axboe; +Cc: medadyoung, openbmc, nbd, linux-block

Adding Josef (updated email address in the maintainers file).

On 2018-12-13 08:21, Adriana Kobylak wrote:
> On 2018-12-11 00:17, medadyoung@gmail.com wrote:
>> From: Medad <medadyoung@gmail.com>
>> 
>>     If we do NOT clear NBD_BOUND flag when NBD connection is closed,
>>     then the original NBD device could not be used again.
>> 
>> Signed-off-by: Medad <medadyoung@gmail.com>
> 
> Tested on Witherspoon (OpenPOWER P9 with AST2500) and verified with
> this patch that the NBD device could be disconnected/reconnected.
> 
> Tested by: Adriana Kobylak <anoo@linux.ibm.com>
> 
>> ---
>>  drivers/block/nbd.c | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>> 
>> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
>> index 64278f4..5c88490 100644
>> --- a/drivers/block/nbd.c
>> +++ b/drivers/block/nbd.c
>> @@ -277,10 +277,14 @@ static void sock_shutdown(struct nbd_device 
>> *nbd)
>>  	struct nbd_config *config = nbd->config;
>>  	int i;
>> 
>> -	if (config->num_connections == 0)
>> +	if (config->num_connections == 0) {
>> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>>  		return;
>> -	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags))
>> +	}
>> +	if (test_and_set_bit(NBD_DISCONNECTED, &config->runtime_flags)) {
>> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>>  		return;
>> +	}
>> 
>>  	for (i = 0; i < config->num_connections; i++) {
>>  		struct nbd_sock *nsock = config->socks[i];
>> @@ -944,7 +948,7 @@ static int nbd_reconnect_socket(struct nbd_device
>> *nbd, unsigned long arg)
>>  		sockfd_put(old);
>> 
>>  		clear_bit(NBD_DISCONNECTED, &config->runtime_flags);
>> -
>> +		clear_bit(NBD_BOUND, &config->runtime_flags);
>>  		/* We take the tx_mutex in an error path in the recv_work, so we
>>  		 * need to queue_work outside of the tx_mutex.
>>  		 */
>> @@ -1020,6 +1024,7 @@ static int nbd_disconnect(struct nbd_device 
>> *nbd)
>>  	dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n");
>>  	set_bit(NBD_DISCONNECT_REQUESTED, &config->runtime_flags);
>>  	send_disconnects(nbd);
>> +	clear_bit(NBD_BOUND, &config->runtime_flags);
>>  	return 0;
>>  }


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed
  2019-04-03 17:13   ` Adriana Kobylak
@ 2019-04-03 17:49     ` Josef Bacik
  2019-04-04 15:31       ` Adriana Kobylak
  0 siblings, 1 reply; 5+ messages in thread
From: Josef Bacik @ 2019-04-03 17:49 UTC (permalink / raw)
  To: Adriana Kobylak; +Cc: josef, axboe, medadyoung, openbmc, nbd, linux-block

On Wed, Apr 03, 2019 at 12:13:53PM -0500, Adriana Kobylak wrote:
> Adding Josef (updated email address in the maintainers file).
> 
> On 2018-12-13 08:21, Adriana Kobylak wrote:
> > On 2018-12-11 00:17, medadyoung@gmail.com wrote:
> > > From: Medad <medadyoung@gmail.com>
> > > 
> > >     If we do NOT clear NBD_BOUND flag when NBD connection is closed,
> > >     then the original NBD device could not be used again.
> > > 
> > > Signed-off-by: Medad <medadyoung@gmail.com>

This doesn't sound right, this is just making sure we don't use the IOCTL
configuration stuff with the netlink stuff.  Once the disconnect happens the
configuration should go away and it doesn't matter anymore.  What are you doing
to reproduce this problem?  Thanks,

Josef

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed
  2019-04-03 17:49     ` Josef Bacik
@ 2019-04-04 15:31       ` Adriana Kobylak
  0 siblings, 0 replies; 5+ messages in thread
From: Adriana Kobylak @ 2019-04-04 15:31 UTC (permalink / raw)
  To: Josef Bacik; +Cc: axboe, medadyoung, openbmc, nbd, linux-block

On 2019-04-03 12:49, Josef Bacik wrote:
> On Wed, Apr 03, 2019 at 12:13:53PM -0500, Adriana Kobylak wrote:
>> Adding Josef (updated email address in the maintainers file).
>> 
>> On 2018-12-13 08:21, Adriana Kobylak wrote:
>> > On 2018-12-11 00:17, medadyoung@gmail.com wrote:
>> > > From: Medad <medadyoung@gmail.com>
>> > >
>> > >     If we do NOT clear NBD_BOUND flag when NBD connection is closed,
>> > >     then the original NBD device could not be used again.
>> > >
>> > > Signed-off-by: Medad <medadyoung@gmail.com>
> 
> This doesn't sound right, this is just making sure we don't use the 
> IOCTL
> configuration stuff with the netlink stuff.  Once the disconnect 
> happens the
> configuration should go away and it doesn't matter anymore.  What are 
> you doing
> to reproduce this problem?  Thanks,
> 
> Josef

I'm not seeing an issue now that we've moved to a new version of Yocto 
containing
NBD 3.17. For reference we were reproducing by setting up a virtual 
media device
on a BMC (https://github.com/openbmc/jsnbd).
We can close this patch request unless Medad still sees an issue in his 
environment.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-04-04 15:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-11  6:17 [PATCH] nbd:clear NBD_BOUND flag when NBD connection is closed medadyoung
2018-12-13 14:21 ` Adriana Kobylak
2019-04-03 17:13   ` Adriana Kobylak
2019-04-03 17:49     ` Josef Bacik
2019-04-04 15:31       ` Adriana Kobylak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).