From: Samuel Holland <samuel.holland@sifive.com>
To: Christoph Hellwig <hch@lst.de>, Al Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>, Denis Efremov <efremov@linux.com>,
Josef Bacik <josef@toxicpanda.com>,
Stefan Haberland <sth@linux.ibm.com>,
Jan Hoeppner <hoeppner@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
"Darrick J . Wong" <djwong@kernel.org>, Chris Mason <clm@fb.com>,
David Sterba <dsterba@suse.com>,
linux-block@vger.kernel.org, nbd@other.debian.org,
linux-s390@vger.kernel.org, linux-btrfs@vger.kernel.org,
linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 07/17] nbd: call blk_mark_disk_dead in nbd_clear_sock_ioctl
Date: Wed, 20 Sep 2023 15:41:11 -0500 [thread overview]
Message-ID: <79af9398-167f-440e-a493-390dc4ccbd85@sifive.com> (raw)
In-Reply-To: <20230811100828.1897174-8-hch@lst.de>
On 2023-08-11 5:08 AM, Christoph Hellwig wrote:
> nbd_clear_sock_ioctl kills the socket and with that the block
> device. Instead of just invalidating file system buffers,
> mark the device as dead, which will also invalidate the buffers
> as part of the proper shutdown sequence. This also includes
> invalidating partitions if there are any.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
> drivers/block/nbd.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
> index 8576d696c7a221..42e0159bb258fa 100644
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@ -1434,12 +1434,10 @@ static int nbd_start_device_ioctl(struct nbd_device *nbd)
> return ret;
> }
>
> -static void nbd_clear_sock_ioctl(struct nbd_device *nbd,
> - struct block_device *bdev)
> +static void nbd_clear_sock_ioctl(struct nbd_device *nbd)
> {
> + blk_mark_disk_dead(nbd->disk);
> nbd_clear_sock(nbd);
> - __invalidate_device(bdev, true);
> - nbd_bdev_reset(nbd);
This change breaks nbd-client, which calls the NBD_CLEAR_SOCK ioctl during
device setup and socket reconnection. After merging this series (bisected to
511fb5bafed1), all NBD devices are immediately dead on arrival:
[ 14.605849] nbd0: detected capacity change from 0 to 4194304
[ 14.606211] Buffer I/O error on dev nbd0, logical block 0, async page read
[ 14.619101] Buffer I/O error on dev nbd0, logical block 0, async page read
[ 14.630490] nbd0: unable to read partition table
I wonder if disk_force_media_change() is the right thing to call here instead.
Regards,
Samuel
> if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF,
> &nbd->config->runtime_flags))
> nbd_config_put(nbd);
> @@ -1465,7 +1463,7 @@ static int __nbd_ioctl(struct block_device *bdev, struct nbd_device *nbd,
> case NBD_DISCONNECT:
> return nbd_disconnect(nbd);
> case NBD_CLEAR_SOCK:
> - nbd_clear_sock_ioctl(nbd, bdev);
> + nbd_clear_sock_ioctl(nbd);
> return 0;
> case NBD_SET_SOCK:
> return nbd_add_socket(nbd, arg, false);
next prev parent reply other threads:[~2023-09-20 20:41 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-11 10:08 remove get_super Christoph Hellwig
2023-08-11 10:08 ` [PATCH 01/17] FOLD: reverts part of "fs: use the super_block as holder when mounting file systems" Christoph Hellwig
2023-08-11 10:44 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 02/17] btrfs: always open the device read-only in btrfs_scan_one_device Christoph Hellwig
2023-08-11 12:00 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 03/17] btrfs: call btrfs_close_devices from ->kill_sb Christoph Hellwig
2023-08-11 12:03 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 04/17] btrfs: split btrfs_fs_devices.opened Christoph Hellwig
2023-08-11 12:40 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 05/17] btrfs: open block devices after superblock creation Christoph Hellwig
2023-08-11 12:44 ` Christian Brauner
2023-08-11 13:11 ` David Sterba
2023-08-17 13:24 ` David Sterba
2023-08-11 10:08 ` [PATCH 06/17] btrfs: use the super_block as holder when mounting file systems Christoph Hellwig
2023-08-11 12:45 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 07/17] nbd: call blk_mark_disk_dead in nbd_clear_sock_ioctl Christoph Hellwig
2023-09-20 20:41 ` Samuel Holland [this message]
2023-09-25 7:48 ` Christoph Hellwig
2023-10-01 17:10 ` Wouter Verhelst
2023-10-02 6:21 ` Christoph Hellwig
2023-10-02 19:15 ` Samuel Holland
2023-08-11 10:08 ` [PATCH 08/17] block: simplify the disk_force_media_change interface Christoph Hellwig
2023-08-11 10:08 ` [PATCH 09/17] floppy: call disk_force_media_change when changing the format Christoph Hellwig
2023-08-11 10:08 ` [PATCH 10/17] amiflop: don't call fsync_bdev in FDFMTBEG Christoph Hellwig
2023-08-11 10:08 ` [PATCH 11/17] dasd: also call __invalidate_device when setting the device offline Christoph Hellwig
2023-08-11 10:08 ` [PATCH 12/17] block: drop the "busy inodes on changed media" log message Christoph Hellwig
2023-08-11 10:08 ` [PATCH 13/17] block: consolidate __invalidate_device and fsync_bdev Christoph Hellwig
2023-08-12 10:51 ` Christoph Hellwig
2023-08-12 17:04 ` Heiko Carstens
2023-08-12 17:28 ` Heiko Carstens
2023-08-12 20:43 ` Matthew Wilcox
2023-08-11 10:08 ` [PATCH 14/17] block: call into the file system for bdev_mark_dead Christoph Hellwig
2023-08-11 10:08 ` [PATCH 15/17] block: call into the file system for ioctl BLKFLSBUF Christoph Hellwig
2023-08-11 14:06 ` Josef Bacik
2023-08-11 10:08 ` [PATCH 16/17] fs: remove get_super Christoph Hellwig
2023-08-11 12:46 ` Christian Brauner
2023-08-11 10:08 ` [PATCH 17/17] fs: simplify invalidate_inodes Christoph Hellwig
2023-08-11 12:48 ` Christian Brauner
2023-08-11 13:58 ` remove get_super Josef Bacik
2023-08-11 19:05 ` Josef Bacik
2023-08-14 19:19 ` David Sterba
2023-09-12 17:42 ` David Sterba
2023-09-14 8:48 ` Jan Kara
2023-09-14 12:03 ` David Sterba
2023-09-14 12:54 ` Jan Kara
2023-09-15 17:28 ` Jan Kara
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=79af9398-167f-440e-a493-390dc4ccbd85@sifive.com \
--to=samuel.holland@sifive.com \
--cc=agordeev@linux.ibm.com \
--cc=axboe@kernel.dk \
--cc=brauner@kernel.org \
--cc=clm@fb.com \
--cc=djwong@kernel.org \
--cc=dsterba@suse.com \
--cc=efremov@linux.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hch@lst.de \
--cc=hoeppner@linux.ibm.com \
--cc=josef@toxicpanda.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nbd@other.debian.org \
--cc=sth@linux.ibm.com \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox