diff options
author | Christoph Hellwig <hch@lst.de> | 2023-10-25 16:10:18 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-12-03 07:33:03 +0100 |
commit | 468a549d2ab57c89085f5e8f9a308908c6d689e5 (patch) | |
tree | cce8422147d20b0a014750ad76fab7fd949c0b04 /block | |
parent | 3461e3bff21f00487f0be2ecfe30b05abdb107df (diff) | |
download | linux-rpi-468a549d2ab57c89085f5e8f9a308908c6d689e5.tar.gz linux-rpi-468a549d2ab57c89085f5e8f9a308908c6d689e5.tar.bz2 linux-rpi-468a549d2ab57c89085f5e8f9a308908c6d689e5.zip |
block: update the stable_writes flag in bdev_add
[ Upstream commit 1898efcdbed32bb1c67269c985a50bab0dbc9493 ]
Propagate the per-queue stable_write flags into each bdev inode in bdev_add.
This makes sure devices that require stable writes have it set for I/O
on the block device node as well.
Note that this doesn't cover the case of a flag changing on a live device
yet. We should handle that as well, but I plan to cover it as part of a
more general rework of how changing runtime paramters on block devices
works.
Fixes: 1cb039f3dc16 ("bdi: replace BDI_CAP_STABLE_WRITES with a queue and a sb flag")
Reported-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20231025141020.192413-3-hch@lst.de
Tested-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'block')
-rw-r--r-- | block/bdev.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/block/bdev.c b/block/bdev.c index f3b13aa1b7d4..04dba25b0019 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -425,6 +425,8 @@ void bdev_set_nr_sectors(struct block_device *bdev, sector_t sectors) void bdev_add(struct block_device *bdev, dev_t dev) { + if (bdev_stable_writes(bdev)) + mapping_set_stable_writes(bdev->bd_inode->i_mapping); bdev->bd_dev = dev; bdev->bd_inode->i_rdev = dev; bdev->bd_inode->i_ino = dev; |