linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hugo Mills <hugo@carfax.org.uk>
To: Hendrik Friedel <hendrik@friedels.name>
Cc: Btrfs BTRFS <linux-btrfs@vger.kernel.org>
Subject: Re: booting from BTRFS works only with one device in the pool
Date: Mon, 1 Feb 2016 22:11:20 +0000	[thread overview]
Message-ID: <20160201221120.GD8313@carfax.org.uk> (raw)
In-Reply-To: <56AFCEC3.9050803@friedels.name>

[-- Attachment #1: Type: text/plain, Size: 7878 bytes --]

On Mon, Feb 01, 2016 at 10:31:47PM +0100, Hendrik Friedel wrote:
> Hello,
> 
> I am running CentOS from a btrfs root.
> This worked fine until I added a device to that pool:
> btrfs device add /dev/sda3 /
> reboot
> 
> This now causes the errors:
> BTRFS: failed to read chunk tree on sdb3
> BTRFS: open_ctree failed
> 
> Here  I am stuck in a recovery prompt.
> 
> btrfs fi show displays the file system correctly with 2.1GiB used
> for sdb3 and 0.00GiB used on sda3

   By far the simplest and most reliable method of doing this is to
use an initramfs with the command "btrfs dev scan" in it somewhere
before mounting. Most of the major distributions already have an
initramfs set up (as does yours, I see), and will install the correct
commands in the initramfs if you install the btrfs-progs package
(btrfs-tools in Debian derivatives).

   The other approach is to add "device=/dev/sda3,device=/dev/sdb3" to
the "rootflags=" option on the grub command line, but that's going to
break if your kernel or hardware decides to reorder your devices.

   Do the sensible thing and just use the initramfs solution.

   Hugo.

> btrfs-tools version reports
> btrfs-progs v4.3.1
> 
> Now, I read that in case of this issue, should add the second device
> of the pool to the commandline argument of the kernel/the boot
> options/grub.cfg
> 
> But I am not sure how to do this.
> I can mount /boot/  and the /boot/grub2/grub.cfg contains:
> insmod ext2 (but not btrfs!)
> set root='hd0,msdos1'
> search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1
> --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1
> --hint='hd0,msdos1' 4a470ac6-f013-4e7b-a4f3-3a58cc4debc3
> 
> after removing sda3 from the pool again, the system boots normally.
> 
> blkid gives:
> /dev/sdb3: LABEL="rockstor_rockstor"
> UUID="f9de7c11-012e-4e5d-8b53-0e6d6c2916a3"
> UUID_SUB="24bdf07b-dbd3-44dc-9195-4b0bfedf974f" TYPE="btrfs"
> PARTLABEL="Linux filesystem"
> PARTUUID="c438bd3c-df9a-4e49-8607-47cd9b45e212"
> (note /dev/sda3 is not shown here)
> 
> btrfs fi show
> Label: 'rockstor_rockstor'  uuid: f9de7c11-012e-4e5d-8b53-0e6d6c2916a3
>         Total devices 1 FS bytes used 1.38GiB
>         devid    1 size 6.87GiB used 2.10GiB path /dev/sdb3
> 
> 
> 
> 
> 
> It's a pitty that the only NAS Distribution built around btrfs does
> not support the full feature-set of btrfs on its root partition.
> Could you please help me fixing this?
> 
> Below you find the complete grub.cfg.
> 
> Regards,
> Hendrik
> 
> 
> 
> 
> 
> 
> 
> cat /boot/grub2/grub.cfg
> #
> # DO NOT EDIT THIS FILE
> #
> # It is automatically generated by grub2-mkconfig using templates
> # from /etc/grub.d and settings from /etc/default/grub
> #
> 
> ### BEGIN /etc/grub.d/00_header ###
> set pager=1
> 
> if [ -s $prefix/grubenv ]; then
>   load_env
> fi
> if [ "${next_entry}" ] ; then
>    set default="${next_entry}"
>    set next_entry=
>    save_env next_entry
>    set boot_once=true
> else
>    set default="${saved_entry}"
> fi
> 
> if [ x"${feature_menuentry_id}" = xy ]; then
>   menuentry_id_option="--id"
> else
>   menuentry_id_option=""
> fi
> 
> export menuentry_id_option
> 
> if [ "${prev_saved_entry}" ]; then
>   set saved_entry="${prev_saved_entry}"
>   save_env saved_entry
>   set prev_saved_entry=
>   save_env prev_saved_entry
>   set boot_once=true
> fi
> 
> function savedefault {
>   if [ -z "${boot_once}" ]; then
>     saved_entry="${chosen}"
>     save_env saved_entry
>   fi
> }
> 
> function load_video {
>   if [ x$feature_all_video_module = xy ]; then
>     insmod all_video
>   else
>     insmod efi_gop
>     insmod efi_uga
>     insmod ieee1275_fb
>     insmod vbe
>     insmod vga
>     insmod video_bochs
>     insmod video_cirrus
>   fi
> }
> 
> terminal_output console
> if [ x$feature_timeout_style = xy ] ; then
>   set timeout_style=menu
>   set timeout=5
> # Fallback normal timeout code in case the timeout_style feature is
> # unavailable.
> else
>   set timeout=5
> fi
> ### END /etc/grub.d/00_header ###
> 
> ### BEGIN /etc/grub.d/00_tuned ###
> set tuned_params=""
> ### END /etc/grub.d/00_tuned ###
> 
> ### BEGIN /etc/grub.d/01_users ###
> if [ -f ${prefix}/user.cfg ]; then
>   source ${prefix}/user.cfg
>   if [ -n "${GRUB2_PASSWORD}" ]; then
>     set superusers="root"
>     export superusers
>     password_pbkdf2 root ${GRUB2_PASSWORD}
>   fi
> fi
> ### END /etc/grub.d/01_users ###
> 
> ### BEGIN /etc/grub.d/10_linux ###
> menuentry 'Rockstor (4.3.3-1.el7.elrepo.x86_64) 3 (Core)' --class
> rhel fedora --class gnu-linux --class gnu --class os --unrestricted
> $menuentry_id_option 'gnulinux-4.3.3-1.el7.elrepo.x86_64-advanced-f9de7c11-012e-4e5d-8b53-0e6d6c2916a3'
> {
>         load_video
>         set gfxpayload=keep
>         insmod gzio
>         insmod part_msdos
>         insmod ext2
>         set root='hd0,msdos1'
>         if [ x$feature_platform_search_hint = xy ]; then
>           search --no-floppy --fs-uuid --set=root
> --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1
> --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'
> 4a470ac6-f013-4e7b-a4f3-3a58cc4debc3
>         else
>           search --no-floppy --fs-uuid --set=root
> 4a470ac6-f013-4e7b-a4f3-3a58cc4debc3
>         fi
>         linux16 /vmlinuz-4.3.3-1.el7.elrepo.x86_64
> root=UUID=f9de7c11-012e-4e5d-8b53-0e6d6c2916a3 ro
> rootflags=subvol=root crashkernel=auto rhgb quiet LANG=en_US.UTF-8
>         initrd16 /initramfs-4.3.3-1.el7.elrepo.x86_64.img
> }
> menuentry 'Rockstor (0-rescue-f5f625480f394bdc90d6d3c06be7fb88) 3
> (Core)' --class rhel fedora --class gnu-linux --class gnu --class os
> --unrestricted $menuentry_id_option 'gnulinux-0-rescue-f5f625480f394bdc90d6d3c06be7fb88-advanced-f9de7c11-012e-4e5d-8b53-0e6d6c2916a3'
> {
>         load_video
>         insmod gzio
>         insmod part_msdos
>         insmod ext2
>         set root='hd0,msdos1'
>         if [ x$feature_platform_search_hint = xy ]; then
>           search --no-floppy --fs-uuid --set=root
> --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1
> --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'
> 4a470ac6-f013-4e7b-a4f3-3a58cc4debc3
>         else
>           search --no-floppy --fs-uuid --set=root
> 4a470ac6-f013-4e7b-a4f3-3a58cc4debc3
>         fi
>         linux16 /vmlinuz-0-rescue-f5f625480f394bdc90d6d3c06be7fb88
> root=UUID=f9de7c11-012e-4e5d-8b53-0e6d6c2916a3 ro
> rootflags=subvol=root crashkernel=auto rhgb quiet
>         initrd16 /initramfs-0-rescue-f5f625480f394bdc90d6d3c06be7fb88.img
> }
> 
> ### END /etc/grub.d/10_linux ###
> 
> ### BEGIN /etc/grub.d/20_linux_xen ###
> 
> ### END /etc/grub.d/20_linux_xen ###
> 
> ### BEGIN /etc/grub.d/20_ppc_terminfo ###
> ### END /etc/grub.d/20_ppc_terminfo ###
> 
> ### BEGIN /etc/grub.d/30_os-prober ###
> ### END /etc/grub.d/30_os-prober ###
> 
> ### BEGIN /etc/grub.d/40_custom ###
> # This file provides an easy way to add custom menu entries.  Simply
> type the
> # menu entries you want to add after this comment.  Be careful not to change
> # the 'exec tail' line above.
> ### END /etc/grub.d/40_custom ###
> 
> ### BEGIN /etc/grub.d/41_custom ###
> if [ -f  ${config_directory}/custom.cfg ]; then
>   source ${config_directory}/custom.cfg
> elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
>   source $prefix/custom.cfg;
> fi
> ### END /etc/grub.d/41_custom ###
> 
> 
> ---
> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
> https://www.avast.com/antivirus
> 

-- 
Hugo Mills             | I must be musical: I've got *loads* of CDs
hugo@... carfax.org.uk |
http://carfax.org.uk/  |
PGP: E2AB1DE4          |                                     Fran, Black Books

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2016-02-01 22:11 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-01 21:31 booting from BTRFS works only with one device in the pool Hendrik Friedel
2016-02-01 22:11 ` Hugo Mills [this message]
2016-02-01 23:02   ` Duncan
2016-02-01 23:15     ` Hugo Mills
2016-02-02 22:01   ` Hendrik Friedel
2016-02-02 22:06     ` Chris Murphy
2016-02-03  6:31       ` Hendrik Friedel
2016-02-02 22:09     ` Hugo Mills
2016-02-01 23:29 ` Chris Murphy
2016-02-02 21:59   ` Hendrik Friedel
2016-02-02 22:04     ` Chris Murphy
2016-02-03 18:14       ` Hendrik Friedel
2016-02-03 20:30         ` Chris Murphy
2016-02-03 22:19           ` Chris Murphy
2016-02-13 14:38             ` Hendrik Friedel
2016-02-13 18:20               ` Chris Murphy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160201221120.GD8313@carfax.org.uk \
    --to=hugo@carfax.org.uk \
    --cc=hendrik@friedels.name \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).