Comment 10 for bug 1817097

Revision history for this message
In , nkshirsa (nkshirsa-redhat-bugs) wrote :

Description of problem:

lvm should not allow extending an LV with a PV of different sector size than existing PVs making up the LV, since the FS on the LV does not mount once LVM adds in the new PV and extends the LV.

How reproducible:
Steps to Reproduce:

** Device: sdc (using the device with default sector size of 512)

# blockdev --report /dev/sdc
RO RA SSZ BSZ StartSec Size Device
rw 8192 512 4096 0 1073741824 /dev/sdc

** LVM is created with the default sector size of 512.

# blockdev --report /dev/mapper/testvg-testlv
RO RA SSZ BSZ StartSec Size Device
rw 8192 512 4096 0 1069547520 /dev/mapper/testvg-testlv

** The filesystem will also pick up 512 sector size.

# mkfs.xfs /dev/mapper/testvg-testlv
meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=65280 blks
         = sectsz=512 attr=2, projid32bit=1
         = crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=261120, imaxpct=25
         = sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
         = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

** Now we will mount it

# xfs_info /test
meta-data=/dev/mapper/testvg-testlv isize=512 agcount=4, agsize=65280 blks
         = sectsz=512 attr=2, projid32bit=1
         = crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=261120, imaxpct=25
         = sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2
         = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

** Let's extend it with a PV with a sector size of 4096:

#modprobe scsi_debug sector_size=4096 dev_size_mb=512

# fdisk -l /dev/sdd

Disk /dev/sdd: 536 MB, 536870912 bytes, 131072 sectors
Units = sectors of 1 * 4096 = 4096 bytes <==============
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 262144 bytes

# blockdev --report /dev/sdd
RO RA SSZ BSZ StartSec Size Device
rw 8192 4096 4096 0 536870912 /dev/sdd

# vgextend testvg /dev/sdd
  Physical volume "/dev/sdd" successfully created
  Volume group "testvg" successfully extended

# lvextend -l +100%FREE /dev/mapper/testvg-testlv
  Size of logical volume testvg/testlv changed from 1020.00 MiB (255 extents) to 1.49 GiB (382 extents).
  Logical volume testlv successfully resized.

# umount /test

# mount /dev/mapper/testvg-testlv /test
mount: mount /dev/mapper/testvg-testlv on /test failed: Function not implemented <===========

# dmesg | grep -i dm-2

[ 477.517515] XFS (dm-2): Unmounting Filesystem
[ 486.905933] XFS (dm-2): device supports 4096 byte sectors (not 512) <============

The sector size of the lv is now 4096.
# blockdev --report /dev/mapper/testvg-testlv
RO RA SSZ BSZ StartSec Size Device
rw 8192 4096 4096 0 1602224128 /dev/mapper/testvg-testlv

Expected results:
LVM should fail the lvextend if sector size is different to existing PV's

Additional info:
Discussed with Zdenek during LVM meeting in Brno