Re: [RFC PATCH V3 1/1] block: reject I/O for same fd if block size changed

From: Christoph Hellwig
Date: Mon Jan 04 2021 - 12:12:08 EST


On Mon, Jan 04, 2021 at 10:06:59PM +0900, Minwoo Im wrote:
> + if (q->backing_dev_info && q->backing_dev_info->owner &&
> + limits->logical_block_size != size) {
> + bdev = blkdev_get_no_open(q->backing_dev_info->owner->devt);
> + bdev->bd_disk->flags |= GENHD_FL_BLOCK_SIZE_CHANGED;
> + blkdev_put_no_open(bdev);
> + }

We really need the backpointer from the queue to the gendisk I've wanted
to add for a while. Can we at least restrict this to a live gendisk?

Also I think the size change flag should go into the ->state field and
use the atomic bitops helpers to avoid concurrency problems.