[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