[dm-devel] Adding new resiliency type to LVM

Shehbaz Jaffer shehbazjaffer007 at gmail.com
Thu Nov 19 21:25:44 UTC 2015


Hi,

I am trying to add a new resiliency type to LVM, which I call dyre -
dynamic reliability. As a first step, I plan to create a simple
striped volume, similar to what we can get using the below command:

lvcreate -i 2 -I 8 -L 30M -n root vol_vg

this will create a volume "root' in volume group "vol_vg" of size 30MB
with 2 stripes and stripesize of 8KB.

I have added relevant code in lvm so that the command gives the same
results as above:

lvcreate --type dyre --stripes  --stripesize 8 -L 30M -n root vol_vg

However, I notice that in first case, when lvm creates the volume
named root, it creates a soft link to /dev/dm-0 :

$ ls -alrt /dev/vol_vg/root
lrwxrwxrwx 1 root root 23 Nov 19 15:35 /dev/vol_vg/root ->
/dev/mapper/vol_vg-root
$ ls -alrt /dev/mapper/vol_vg-root
lrwxrwxrwx 1 root root 9 Nov 19 15:36 /dev/mapper/vol_vg-root -> /dev/dm-0

If I run my command (the second command with my new defined resiliency
type) using gdb, place a breakpoint before the function -
dev_cache_get() and in a new terminal check for file /dev/vol_vg/root
file, it exists but only as an archive file (i.e., there is no link
between /dev/mapper/vol_vg-root and /dev/dm-0).
Since there is no actual device linked to the file, functions like
stat() that are used in dev_cache_get() code return error - no such
file or directory which results in unsuccessful volume creation. I
also noticed that the temporary file is deleted by lvm.

I think the part of code that does this linking is in device mapper
code, but I am not sure where this is being done.

Furthermore, when I create a link artifically by using the command

ln -s /dev/dm-0 /dev/mapper/vol_vg-root

and resume from breakpoint, my volume gets created.

I need some help regarding which code in lvm does this linking of
archive (temporary?) file to /dev/dm-0.

Thanks,

-- 
Shehbaz Jaffer
First Year Graduate Student
Sir Edward S Rogers Sr Department of Electrical and Computer Engineering
University of Toronto




More information about the dm-devel mailing list