Skip to contentSkip to conversation

lvm2 vgchange -a n problem

linux-lvm Michael Ossmann 2 participants 3 messages Mar 5, 2004 – Mar 10, 2004

lore
Share & tools
lore
#0 lore raw

I'm using lvm2 with linux 2.6.4-rc1. When I try to deactivate lvm with 'vgchange -a n' it always tells me:

LV vgfoo/lvbar in use: not removing

even when the lv is not mounted at all. So I try to 'lvchange -a n' the lv, but it tells me the same thing.

My workaround is to do 'dmsetup remove vgfoo-lvbar' for each lv prior to deactivation. Then 'vgchange -a n' and 'lvchange -a n' work. My shutdown script includes:

  for lv in $(lvs --noheadings | awk '{print $2 "-" $1}'); do
    dmsetup remove $lv
  done 
  /sbin/vgchange -a n

Is this how I'm supposed to do this? Am I missing something?

Thanks,

mossmann

#1 lore raw
Quoted 1 line · Michael Ossmann

Is this how I'm supposed to do this?

No. There's a couple of things you could try:

i) do a 'dmsetup info <dev>' and confirm that the 'open count' is 0

ii) use 'lsof' to find out who has opened the device.

Device mapper uses reference counting on the devices, so you will always be able to remove the device successfully, but it wont really be destroyed until the last opener closes it.

- Joe

#2 lore raw
Quoted 2 lines · Joe Thornber

i) do a 'dmsetup info <dev>' and confirm that the 'open count' is 0

# dmsetup info 
Name:              pvfoo
State:             ACTIVE
Tables present:    LIVE
Open count:        3
Event number:      0
Major, minor:      254, 1
Number of targets: 1
Name:              vgfoo-lvfoo
State:             ACTIVE
Tables present:    LIVE
Open count:        0
Event number:      0

Major, minor: 254, 3
Number of targets: 1
UUID: [snipped]

Name:              vgfoo-lvbar
State:             ACTIVE
Tables present:    LIVE
Open count:        1
Event number:      0

Major, minor: 254, 2
Number of targets: 1
UUID: [snipped]

Quoted 1 line

ii) use 'lsof' to find out who has opened the device.

# lsof /dev/mapper/vgfoo-lvfoo
# lsof /dev/mapper/vgfoo-lvbar
COMMAND     PID     USER   FD   TYPE DEVICE     SIZE    NODE NAME
[snipped many lines of output]
# lvchange -a n vgfoo/lvfoo
  LV vgfoo/lvfoo in use: not removing

Hmmmm. Looks to me like it shouldn't be complaining. I don't know if this would affect anything at the lv layer, but the only unusual thing here is that my pv happens to be built on top of device mapper (dm-crypt). Everything has been working fine except for lv and vg deactivation.

mossmann