[linux-lvm] can't remove snapshot

Lentes, Bernd bernd.lentes at helmholtz-muenchen.de
Wed Apr 10 13:36:18 UTC 2019

----- Am 9. Apr 2019 um 15:24 schrieb Zdenek Kabelac zdenek.kabelac at gmail.com:

> Dne 09. 04. 19 v 15:00 Lentes, Bernd napsal(a):
>> Hello list,
>> I have a two-node HA-cluster which uses local and cluster LVM.
>> cLVM is currently stopped, I try to remove a snapshot from the root lv which
>> is located on a local VG.
>> I get this error:
>> ha-idg-2:/mnt/spp # lvremove -fv vg_local/lv_snap_pre_sp4
>>    connect() failed on local socket: No such file or directory
>>    Internal cluster locking initialisation failed.
>>    WARNING: Falling back to local file-based locking.
>>    Volume Groups with the clustered attribute will be inaccessible.
>>      Archiving volume group "vg_local" metadata (seqno 26).
>>      Removing snapshot volume vg_local/lv_snap_pre_sp4.
>>      Loading table for vg_local-lv_root (254:8).
>>    device-mapper: reload ioctl on  (254:8) failed: Invalid argument
>>    Failed to refresh lv_root without snapshot.
> Hi
> Have you tried to converted clustered VG to be a non-clustered one ?
> And use file locking to proceed with operation on local device?
> Zdenek


i tried all i found on the net.
Stopping udev before lvremove, dmsetup remove before, lock the device with lockdev,
tried to deactivate the snapshot before removing (which didn't work because then i also had 
to deactivate the root lv which is the source for the snapshot),
stopped monitoring the snapshot, update of the complete system ...
nothing succeeded.
I have a SLES 12 SP4 with 4.12.14-95.13-default and lvm2-2.02.180-9.7.1.x86_64.

I finally did a strace on the program:
write(2, "Loading table for vg_local-lv_ro"..., 43Loading table for vg_local-lv_root (254:9).) = 43
write(2, "\n", 1
)                       = 1
ioctl(3, DM_TABLE_STATUS, 0x563eacb00c80) = 0
ioctl(3, DM_TABLE_LOAD, 0x563eacb00c80) = -1 EINVAL (Invalid argument)    <========================================================
write(2, "  ", 2  )                       = 2
write(2, "device-mapper: reload ioctl on  "..., 64device-mapper: reload ioctl on  (254:9) failed: Invalid argument) = 64
write(2, "\n", 1
)                       = 1
brk(0x563eacf92000)                     = 0x563eacf92000
write(2, "  ", 2  )                       = 2
write(2, "Failed to refresh lv_root withou"..., 43Failed to refresh lv_root without snapshot.) = 43
write(2, "\n", 1
)                       = 1

This seems to be the culprit:
ioctl(3, DM_TABLE_LOAD, 0x563eacb00c80) = -1 EINVAL

fd 3 seems to be /dev/mapper/control. DM_TABLE_LOAD is defined in include/uapi/linux/dm-ioctl.h:
#define DM_TABLE_LOAD    _IOWR(DM_IOCTL, DM_TABLE_LOAD_CMD, struct dm_ioctl)
And the memory adress is the same as the one used successfully one line before.
Error -1 is, following man: 
EINVAL: request or argp is not valid
In the manpage sys/ioctl.h is mentioned, but i don't find it in my sources.

Any ideas ?



Helmholtz Zentrum Muenchen
Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH)
Ingolstaedter Landstr. 1
85764 Neuherberg
Stellv. Aufsichtsratsvorsitzender: MinDirig. Dr. Manfred Wolter
Geschaeftsfuehrung: Prof. Dr. med. Dr. h.c. Matthias Tschoep, Heinrich Bassler, Kerstin Guenther
Registergericht: Amtsgericht Muenchen HRB 6466
USt-IdNr: DE 129521671

More information about the linux-lvm mailing list