Skip to content

detect online disk resize

Andrew Patterson linux-scsi lkml 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest5 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/5Wrapper for lower-level revalidate_disk routines.fs/block_dev.c include/linux/fs.h+22 -00 replies
2/5Adjust block device size after an online resize of a disk.fs/block_dev.c+21 -00 replies
3/5SCSI sd driver calls revalidate_disk wrapper.drivers/scsi/sd.c+2 -20 replies
4/5Added flush_disk to factor out common buffer cache flushing code.fs/block_dev.c+28 -50 replies
5/5Call flush_disk() after detecting an online resize.fs/block_dev.c+3 -20 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/5] detect online disk resize

This patch series handles online disk resizes that are currently not completely recognized by the kernel using the existing revalidate_disk routines. An online resize can occur when growing or shrinking a Fibre Channel LUN or perhaps by adding a disk to an existing RAID volume.

The kernel currently recognizes a device size change when revalidate_disk() is called; however, the block layer does not use the new size while it has any current openers on the device. So, for example, if LVM has an volume open on the device, you will generally not see the size change until after a reboot. We fix this problem by creating a wrapper to be used with lower-level revalidate_disk routines. This wrapper first calls the lower-level driver's revalidate_disk routine. It then compares the gendisk capacity to the block devices inode size. If there is a difference, we adjust the block device's size. If the size has changed, we then flush the disk for safety.

This patch series only modifies the sd driver to use these changes as that is all that I currently have to test with. Device drivers like cciss and DAC960 should probably use it as well.

Diff stats:

 drivers/scsi/sd.c  |    4 +--
 fs/block_dev.c     |   76 +++++++++++++++++++++++++++++++++++++++++++++++++---
 include/linux/fs.h |    1 +
 3 files changed, 74 insertions(+), 7 deletions(-)

Commits:

- Wrapper for lower-level revalidate_disk routines.
- Adjust block device size after an online resize of a disk.
- SCSI sd driver calls revalidate_disk wrapper.
- Added flush_disk to factor out common buffer cache flushing code.
- Call flush_disk() after detecting an online resize.

Signature · 1 line
Andrew Patterson