• Laurent Vivier's avatar
    loop: manage partitions in disk image · 476a4813
    Laurent Vivier authored
    This patch allows to use loop device with partitionned disk image.
    
    Original behavior of loop is not modified.
    
    A new parameter is introduced to define how many partition we want to be
    able to manage per loop device. This parameter is "max_part".
    
    For instance, to manage 63 partitions / loop device, we will do:
    # modprobe loop max_part=63
    # ls -l /dev/loop?*
    brw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0
    brw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1
    brw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2
    brw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3
    brw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4
    brw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5
    brw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6
    brw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7
    
    And to attach a raw partitionned disk image, the original losetup is used:
    
    # losetup -f etch.img
    # ls -l /dev/loop?*
    brw-rw---- 1 root disk 7,   0 2008-03-05 14:55 /dev/loop0
    brw-rw---- 1 root disk 7,   1 2008-03-05 14:57 /dev/loop0p1
    brw-rw---- 1 root disk 7,   2 2008-03-05 14:57 /dev/loop0p2
    brw-rw---- 1 root disk 7,   5 2008-03-05 14:57 /dev/loop0p5
    brw-rw---- 1 root disk 7,  64 2008-03-05 14:55 /dev/loop1
    brw-rw---- 1 root disk 7, 128 2008-03-05 14:55 /dev/loop2
    brw-rw---- 1 root disk 7, 192 2008-03-05 14:55 /dev/loop3
    brw-rw---- 1 root disk 7, 256 2008-03-05 14:55 /dev/loop4
    brw-rw---- 1 root disk 7, 320 2008-03-05 14:55 /dev/loop5
    brw-rw---- 1 root disk 7, 384 2008-03-05 14:55 /dev/loop6
    brw-rw---- 1 root disk 7, 448 2008-03-05 14:55 /dev/loop7
    # mount /dev/loop0p1 /mnt
    # ls /mnt
    bench  cdrom  home        lib         mnt   root     srv  usr
    bin    dev    initrd      lost+found  opt   sbin     sys  var
    boot   etc    initrd.img  media       proc  selinux  tmp  vmlinuz
    # umount /mnt
    # losetup -d /dev/loop0
    
    Of course, the same behavior can be done using kpartx on a loop device,
    but modifying loop avoids to stack several layers of block device (loop +
    device mapper), this is a very light modification (40% of modifications
    are to manage the new parameter).
    Signed-off-by: default avatarLaurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
    476a4813
loop.c 38.7 KB