[dm-devel] LVM2, RHEL 4: incorrect open status on logical volumes
Phil Lowden (plowden)
plowden at cisco.com
Wed Jan 4 18:42:51 UTC 2006
On RHEL4 update 2 in some cases LVM2 won't
remove or deactivate logical volumes or volume
groups due to their being open, but the open count is 0:
# dmsetup info -c vgtest1-lvtest1
Name Maj Min Stat Open Targ Event UUID
vgtest1-lvtest1 253 128 L--w 0 1 0
iR59EFyd6g26fCGazrriGlhRBNYp9S7N8axDoKhnJFPpfzhVSQjoOTxUchar6517
# lvremove /dev/vgtest1/lvtest1
Can't remove open logical volume "lvtest1"
Removing the dm table entry allows this to work:
# dmsetup remove vgtest1-lvtest1
# lvremove /dev/vgtest1/lvtest1
Logical volume "lvtest1" successfully removed
Same behavior for these commands:
# vgchange -a n vgtest1
Can't deactivate volume group "vgtest1" with 1 open logical volume(s)
# lvchange -a n vgtest1/lvtest1
LV vgtest1/lvtest1 in use: not removing
This happens on some VGs with both striped and non-striped LVs,
on PVs built on both sd and multipath devices. Reproduced on EMC
Clariion,
EMC Symmetrix and IBM SAN volume controller storage (in front
of the same EMC Symmetrix). It only happens for some volume
groups, but when it happens it's consistent (i.e. lvremove
either works without "dmsetup remove" or it doesn't).
Environment details below.
Thanks in advance for any help,
Phil Lowden
# uname -a
Linux <removed> 2.6.9-22.0.1.ELsmp #1 SMP Tue Oct 18 18:39:27 EDT 2005
i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
# lvremove --version
LVM version: 2.01.14 (2005-08-04)
Library version: 1.01.04 (2005-08-02)
Driver version: 4.4.0
# lvm dumpconfig
devices {
dir="/dev"
scan="/dev"
filter=["a|^/dev/mapper/.*|", "a|^/dev/sdx|", "r/.*/"]
cache="/etc/lvm/.cache"
write_cache_state=1
types=["device-mapper", 1]
sysfs_scan=1
md_component_detection=0
}
activation {
missing_stripe_filler="/dev/ioerror"
mirror_region_size=512
reserved_stack=256
reserved_memory=8192
process_priority=-18
}
global {
umask=63
test=0
activation=1
proc="/proc"
locking_type=1
locking_dir="/var/lock/lvm"
}
shell {
history_size=100
}
backup {
backup=1
backup_dir="/etc/lvm/backup"
archive=1
archive_dir="/etc/lvm/archive"
retain_min=10
retain_days=30
}
log {
verbose=0
syslog=1
overwrite=0
level=0
indent=1
command_names=0
prefix=" "
}
# lvdisplay vgtest1/lvtest1
--- Logical volume ---
LV Name /dev/vgtest1/lvtest1
VG Name vgtest1
LV UUID wTrWm1-qhtc-Ov1z-0Jws-ogOT-wkF6-81CK42
LV Write Access read/write
LV Status available
# open 1
LV Size 16.00 MB
Current LE 4
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:128
# lvs -o +devices vgtest1/lvtest1
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
lvtest1 vgtest1 -wi-ao 16.00M
/dev/dm-110(0)
# vgs
VG #PV #LV #SN Attr VSize VFree
vgtest1 64 1 0 wz--n 1.75G 1.73G
# multipath -l 360050768018080bad000000000000011
[size=32 MB][features="0"][hwhandler="0"]
\_ round-robin 0 [active]
\_ 1:0:1:15 sdev 129:112 [active]
\_ 0:0:1:15 sdx 65:112 [active]
# lvremove -vvvv /dev/vgtest1/lvtest1
[output trimmed due to size - 64 PVs in vgtest1]
#lvmcmdline.c:836 Processing: lvremove -vvvv
/dev/vgtest1/lvtest1
#lvmcmdline.c:839 O_DIRECT will be used
#config/config.c:773 Setting global/locking_type to 1
#config/config.c:758 Setting global/locking_dir to /var/lock/lvm
#locking/locking.c:139 File-based locking enabled.
#toollib.c:130 Using logical volume(s) on command line
#locking/file_locking.c:164 Locking /var/lock/lvm/V_vgtest1 WB
#filters/filter-regex.c:188 /dev/ramdisk: Skipping (regex)
[snip]
#filters/filter-regex.c:188 /dev/sdx: Skipping (regex)
[snip]
#filters/filter-regex.c:188 /dev/sdef: Skipping (regex)
[snip]
#device/dev-io.c:425 Opened /dev/dm-110 RW O_DIRECT
#device/dev-io.c:134 /dev/dm-110: block size is 4096 bytes
#label/label.c:168 /dev/dm-110: lvm2 label detected
#cache/lvmcache.c:426 lvmcache: /dev/dm-110 now orphaned
#cache/lvmcache.c:426 lvmcache: /dev/dm-110 now in VG vgtest1
[snip]
#label/label.c:168 /dev/dm-110: lvm2 label detected
[snip]
#label/label.c:168 /dev/dm-50: lvm2 label detected
#format_text/format-text.c:311 Read vgtest1 metadata (89) from
/dev/dm-1
24 at 49152 size 9144
#metadata/pv_manip.c:242 /dev/dm-110 0: 0 4:
lvtest1(0:0)
#metadata/pv_manip.c:242 /dev/dm-110 1: 4 3: NULL(0:0)
#metadata/pv_manip.c:242 /dev/dm-111 0: 0 7: NULL(0:0)
[snip]
#config/config.c:758 Setting activation/missing_stripe_filler to
/dev/ioer
ror
#activate/dev_manager.c:1048 Getting device info for
vgtest1-lvtest1
#ioctl/libdm-iface.c:1326 dm version O
#ioctl/libdm-iface.c:1326 dm info
iR59EFyd6g26fCGazrriGlhRBNYp9S7NeyMR2
uDRyetvFPXlvNKK9rMrVweI3lmE O
#lvremove.c:59 Can't remove open logical volume "lvtest1"
#locking/file_locking.c:59 Unlocking /var/lock/lvm/V_vgtest1
[snip]
#device/dev-io.c:456 Closed /dev/dm-110
More information about the dm-devel
mailing list