• Anand Jain's avatar
    btrfs: undo sysfs when open_ctree() fails · 2365dd3c
    Anand Jain authored
    
    
    reproducer:
    mkfs.btrfs -f /dev/sdb &&\
    mount /dev/sdb /btrfs &&\
    btrfs dev add -f /dev/sdc /btrfs &&\
    umount /btrfs &&\
    wipefs -a /dev/sdc &&\
    mount -o degraded /dev/sdb /btrfs
    //above mount fails so try with RO
    mount -o degraded,ro /dev/sdb /btrfs
    
    ------
    sysfs: cannot create duplicate filename '/fs/btrfs/3f48c79e-5ed0-4e87-b189-86e749e503f4'
    ::
    
    dump_stack+0x49/0x5e
    warn_slowpath_common+0x87/0xb0
    warn_slowpath_fmt+0x41/0x50
    strlcat+0x69/0x80
    sysfs_warn_dup+0x87/0xa0
    sysfs_add_one+0x40/0x50
    create_dir+0x76/0xc0
    sysfs_create_dir_ns+0x7a/0xc0
    kobject_add_internal+0xad/0x220
    kobject_add_varg+0x38/0x60
    kobject_init_and_add+0x53/0x70
    mutex_lock+0x11/0x40
    __free_pages+0x25/0x30
    free_pages+0x41/0x50
    selinux_sb_copy_data+0x14e/0x1e0
    mount_fs+0x3e/0x1a0
    vfs_kern_mount+0x71/0x120
    do_mount+0x3f7/0x980
    SyS_mount+0x8b/0xe0
    system_call_fastpath+0x16/0x1b
    ------
    
    further 'modprobe -r btrfs' fails as well
    Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
    Signed-off-by: default avatarJosef Bacik <jbacik@fb.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    2365dd3c