On Jul 29, 2014, at 5:09 AM, Liu Bo <bo.li....@oracle.com> wrote: > Commit 49c6f736f34f901117c20960ebd7d5e60f12fcac( > btrfs: dev replace should replace the sysfs entry) added the missing sysfs > entry > in the process of device replace, but didn't take missing devices into > account, > so now we have > > BUG: unable to handle kernel NULL pointer dereference at 0000000000000088 > IP: [<ffffffffa0268551>] btrfs_kobj_rm_device+0x21/0x40 [btrfs] > ... > > To reproduce it, > 1. mkfs.btrfs -f disk1 disk2 > 2. mkfs.ext4 disk1 > 3. mount disk2 /mnt -odegraded > 4. btrfs replace start -B 1 disk3 /mnt > -------------------------- > > This fixes the problem. > > Reported-by: Chris Murphy <li...@colorremedies.com> > Signed-off-by: Liu Bo <bo.li....@oracle.com> > --- > fs/btrfs/sysfs.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c > index 7869936..12e5355 100644 > --- a/fs/btrfs/sysfs.c > +++ b/fs/btrfs/sysfs.c > @@ -614,7 +614,7 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, > if (!fs_info->device_dir_kobj) > return -EINVAL; > > - if (one_device) { > + if (one_device && one_device->bdev) { > disk = one_device->bdev->bd_part; > disk_kobj = &part_to_dev(disk)->kobj; >
Applied to 3.16.0 and tested, problem is fixed. Chris Murphy -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html