[Btrfs-devel] btrfs-0.13 breaks boot on reiserfs-3.6

fdbugs fdbugs at dupoux.com
Sat Mar 15 10:06:40 PDT 2008


Hi,

Thanks for your quick reply. Unfortunately, it still does not work:
http://temp.dupoux.com/btrfs/btrfs-0.13-bug-reiserfs-2.png

Thanks

On Sat, Mar 15, 2008 at 4:11 PM, Yan Zheng <yanzheng at 21cn.com> wrote:
> 2008/3/15, fdbugs <fdbugs at dupoux.com>:
>
>
> > Hi,
>  >
>  >  I recompiled my kernel today, and when the btrfs-0.13 option is
>  >  enabled (CONFIG_BTR_FS=y) I cannot boot on my reiserfs-3.6 partition
>  >  any more. The kernel says that is cannot mount /dev/sdc6. I can boot
>  >  the kernel when I recompile it with the same options and
>  >  CONFIG_BTR_FS=n, and with the same boot options as well. Everything is
>  >  amd64 on my system (kernel + programs).
>  >
>  >  Here is a screenshot of the error:
>  >  http://temp.dupoux.com/btrfs/btrfs-0.13-bug-reiserfs.png
>  >
>  >  Here are my kernel options (it's 2.6.24.3 with several patches)
>  >  http://temp.dupoux.com/btrfs/btrfs-0.13-bug-reiserfs-working.cfg (the
>  >  one with CONFIG_BTR_FS=n that works)
>  >
>  >  Here are the kernel patches I am using:
>  >  http://temp.dupoux.com/btrfs/patches/
>  >
>  >  Thanks
>  >
>
>  This bug is caused by wrong error code. btrfs_fill_super should return
>  -EINVAL instead of -EIO when no btrfs found on the device. Please try
>  the patch attached below.
>
>  Regards
>  YZ
>  ---
>  diff -r e4cd88595ed7 disk-io.c
>  --- a/disk-io.c Thu Feb 21 14:54:12 2008 -0500
>  +++ b/disk-io.c Sat Mar 15 23:44:53 2008 +0800
>  @@ -635,7 +635,7 @@ struct btrfs_root *open_ctree(struct sup
>         struct btrfs_fs_info *fs_info = kmalloc(sizeof(*fs_info),
>                                                 GFP_NOFS);
>         int ret;
>  -       int err = -EIO;
>  +       int err = -EINVAL;
>         struct btrfs_super_block *disk_super;
>
>         if (!extent_root || !tree_root || !fs_info) {
>  diff -r e4cd88595ed7 super.c
>  --- a/super.c   Thu Feb 21 14:54:12 2008 -0500
>  +++ b/super.c   Sat Mar 15 23:44:53 2008 +0800
>  @@ -232,9 +232,9 @@ static int btrfs_fill_super(struct super
>
>         tree_root = open_ctree(sb);
>
>  -       if (!tree_root || IS_ERR(tree_root)) {
>  +       if (IS_ERR(tree_root)) {
>                 printk("btrfs: open_ctree failed\n");
>  -               return -EIO;
>  +               return PTR_ERR(tree_root);
>         }
>         sb->s_fs_info = tree_root;
>         disk_super = &tree_root->fs_info->super_copy;
>



-- 
Francois Dupoux
fd at dupoux.com



More information about the Btrfs-devel mailing list