Skip to contentSkip to conversation

mount a multi-device filesystem using a loopback device

DISCUSSION Jeff Liu 3 participants 6 messages Sep 7, 2011 – Sep 8, 2011 1 message not in the archive Btrfs file system

lore
Share & tools
lore

Jeff Liu

author
#0 lore raw

Hello,

I was trying to create a multi-device Btrfs filesystem using two loopback devices, by referring to the following page:
https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices

However, I met a strange thing while mounting the first loop device without any extra mount options,

1. Create and format two images, the 1st in 400Mbytes, and 2nd in 286Mbytes.

root@pibroch:/btrfs-progs# ls -lh /usr/src/linux-3.0/img*
-rw-r--r-- 1 jeff jeff 400M 2011-09-07 12:00 /usr/src/linux-3.0/img0
-rw-r--r-- 1 jeff jeff 286M 2011-09-07 12:00 /usr/src/linux-3.0/img1
root@pibroch:/btrfs-progs# mkfs.btrfs /usr/src/linux-3.0/img0 /usr/src/linux-3.0/img1

WARNING! - Btrfs v0.19-35-g1b444cd IS EXPERIMENTAL WARNING! - see http://btrfs.wiki.kernel.org before using

failed to read /dev/sr0
failed to read /dev/sr0
adding device /usr/src/linux-3.0/img1 id 2 fs created label (null) on /usr/src/linux-3.0/img0

    nodesize 4096 leafsize 4096 sectorsize 4096 size 685.50MB

Btrfs v0.19-35-g1b444cd

2. Setup the loopback manually:

root@pibroch:/btrfs-progs# losetup /dev/loop0 /usr/src/linux-3.0/img0
root@pibroch:/btrfs-progs# losetup /dev/loop1 /usr/src/linux-3.0/img1
root@pibroch:/btrfs-progs# losetup -a
/dev/loop0: [0802]:1736614 (/usr/src/linux-3.0/img0)
/dev/loop1: [0802]:1736726 (/usr/src/linux-3.0/img1)

3. Try to mount loop0, it will failed as below:

root@pibroch:/btrfs-progs# mount /dev/loop0 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

4. Try to mount loop1, it works:

root@pibroch:/btrfs-progs# mount /dev/loop1 /mnt
root@pibroch:/btrfs-progs# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              46G   23G   21G  52% /
none                  896M  700K  895M   1% /dev
none                  957M   80K  957M   1% /dev/shm
none                  957M  104K  957M   1% /var/run
none                  957M     0  957M   0% /var/lock
/dev/loop1            686M   56K  493M   1% /mnt

5. umount loop1, and try to mount loop0 again, it works at this time:

root@pibroch:/btrfs-progs# umount /mnt
root@pibroch:/btrfs-progs# mount /dev/loop0 /mnt
root@pibroch:/btrfs-progs# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              46G   23G   21G  52% /
none                  896M  700K  895M   1% /dev
none                  957M   80K  957M   1% /dev/shm
none                  957M  104K  957M   1% /var/run
none                  957M     0  957M   0% /var/lock
/dev/loop0            686M   56K  493M   1% /mnt

According to my debugging result, for the 1st time, mount loop0 failed at around volumes.c:3468:

                map->stripes[i].dev = btrfs_find_device(root, devid, uuid,
                                                        NULL);
                if (!map->stripes[i].dev && !btrfs_test_opt(root, 
DEGRADED)) {
                        kfree(map);
                        free_extent_map(em);
                        return -EIO;

So I repeat the above steps again, and try to mount loop0 with "-o degraded" option, it works as expected:

root@pibroch:/btrfs-progs# mount -o degraded /dev/loop0 /mnt
root@pibroch:/btrfs-progs# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              46G   23G   21G  52% /
none                  896M  700K  895M   1% /dev
none                  957M  140K  957M   1% /dev/shm
none                  957M  104K  957M   1% /var/run
none                  957M     0  957M   0% /var/lock
/dev/loop0            686M   56K  136M   1% /mnt

kernel version 3.1.0-rc2+.

Is it a bug? or Am I missing something?

Thanks,
-Jeff

#1 lore raw

Review

Quoted 4 lines

1. Create and format two images, the 1st in 400Mbytes, and 2nd in 286Mbytes.

root@pibroch:/btrfs-progs# ls -lh /usr/src/linux-3.0/img*
(quoted diff) +0 -2
-rw-r--r-- 1 jeff jeff 400M 2011-09-07 12:00 /usr/src/linux-3.0/img0
-rw-r--r-- 1 jeff jeff 286M 2011-09-07 12:00 /usr/src/linux-3.0/img1

Very small btrfs filesystem require special handling, mixed block groups in particular, which I believe also requires an updated mkfs from the integration repo.

author
#6 lore raw
In reply to a message not in the archive
Quoted 5 lines · Li Zefan
Quoted 2 lines

Is it a bug? or Am I missing something?

You need to run this before mounting the devices:

   # btrfs device scan

Thank you, it works by executing device scan.

-Jeff

author
#2 lore raw
In reply to cwillu
Quoted 7 lines · cwillu

Review

Quoted 4 lines

1. Create and format two images, the 1st in 400Mbytes, and 2nd in 286Mbytes.

root@pibroch:/btrfs-progs# ls -lh /usr/src/linux-3.0/img*
(quoted diff) +0 -2
-rw-r--r-- 1 jeff jeff 400M 2011-09-07 12:00 /usr/src/linux-3.0/img0
-rw-r--r-- 1 jeff jeff 286M 2011-09-07 12:00 /usr/src/linux-3.0/img1

Very small btrfs filesystem require special handling, mixed block groups in particular, which I believe also requires an updated mkfs from the integration repo.

Thanks for your response, however, even if I enlarged the image size to 2G, still got no luck. Per Zefan's comments, run 'btrfs device scan' fixed this issue.

-Jeff

Quoted 4 lines

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

#3 lore raw
Quoted 3 lines · Jeff Liu
Quoted 2 lines · cwillu
Quoted 2 lines

1. =C2=A0Create and format two images, the 1st in 400Mbytes, and 2n=

d in

Quoted 3 lines
Quoted 3 lines
Quoted 3 lines

286Mbytes.

root@pibroch:/btrfs-progs# ls -lh /usr/src/linux-3.0/img*
-rw-r--r-- 1 jeff jeff 400M 2011-09-07 12:00 /usr/src/linux-3.0/img=

0

Quoted 1 line
Quoted 1 line
Quoted 1 line

-rw-r--r-- 1 jeff jeff 286M 2011-09-07 12:00 /usr/src/linux-3.0/img=

1

Quoted 6 lines
Quoted 4 lines

Very small btrfs filesystem require special handling, mixed block groups in particular, which I believe also requires an updated mkfs from the integration repo.

Thanks for your response, however, even if I enlarged the image size =

to 2G,

Quoted 2 lines

still got no luck.
Per Zefan's comments, run 'btrfs device scan' fixed this issue.

you should be able to achieve this via device=3D mount option(s?) as = well:

https://btrfs.wiki.kernel.org/index.php/Getting_started#Mount_Options

=2E.. for completeness :-) ... and posterity or whatever.

C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" = in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

author
#4 lore raw
Quoted 10 lines · C Anthony Risinger
Quoted 9 lines · Jeff Liu
Quoted 8 lines · cwillu

Review

Quoted 5 lines

1. Create and format two images, the 1st in 400Mbytes, and 2nd in 286Mbytes.

root@pibroch:/btrfs-progs# ls -lh /usr/src/linux-3.0/img*
(quoted diff) +0 -2
-rw-r--r-- 1 jeff jeff 400M 2011-09-07 12:00 /usr/src/linux-3.0/img0
-rw-r--r-- 1 jeff jeff 286M 2011-09-07 12:00 /usr/src/linux-3.0/img1

Very small btrfs filesystem require special handling, mixed block groups in particular, which I believe also requires an updated mkfs from the integration repo.

Quoted 8 lines
Quoted 3 lines

Thanks for your response, however, even if I enlarged the image size to 2G, still got no luck.
Per Zefan's comments, run 'btrfs device scan' fixed this issue.

you should be able to achieve this via device= mount option(s?) as well:

https://btrfs.wiki.kernel.org/index.php/Getting_started#Mount_Options

... for completeness :-) ... and posterity or whatever.

Nice, thanks for your sharing. 8-)

-Jeff

Quoted 5 lines

C Anthony
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html