• M
    Btrfs: don't clear the default compression type · a7e252af
    Miao Xie 提交于
    We met a oops caused by the wrong compression type:
    [  556.512356] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [  556.512370] IP: [<ffffffff811dbaa0>] __list_del_entry+0x1/0x98
    [SNIP]
    [  556.512490]  [<ffffffff811dbb44>] ? list_del+0xd/0x2b
    [  556.512539]  [<ffffffffa05dd5ce>] find_workspace+0x97/0x175 [btrfs]
    [  556.512546]  [<ffffffff813c14b5>] ? _raw_spin_lock+0xe/0x10
    [  556.512576]  [<ffffffffa05de276>] btrfs_compress_pages+0x2d/0xa2 [btrfs]
    [  556.512601]  [<ffffffffa05af060>] compress_file_range.constprop.54+0x1f2/0x4e8 [btrfs]
    [  556.512627]  [<ffffffffa05af388>] async_cow_start+0x32/0x4d [btrfs]
    [  556.512655]  [<ffffffffa05cc7a1>] worker_loop+0x144/0x4c3 [btrfs]
    [  556.512661]  [<ffffffff81059404>] ? finish_task_switch+0x80/0xb8
    [  556.512689]  [<ffffffffa05cc65d>] ? btrfs_queue_worker+0x244/0x244 [btrfs]
    [  556.512695]  [<ffffffff8104fa4e>] kthread+0x8d/0x95
    [  556.512699]  [<ffffffff81050000>] ? bit_waitqueue+0x34/0x7d
    [  556.512704]  [<ffffffff8104f9c1>] ? __kthread_parkme+0x65/0x65
    [  556.512709]  [<ffffffff813c7eec>] ret_from_fork+0x7c/0xb0
    [  556.512713]  [<ffffffff8104f9c1>] ? __kthread_parkme+0x65/0x65
    
    Steps to reproduce:
     # mkfs.btrfs -f <dev>
     # mount -o nodatacow <dev> <mnt>
     # touch <mnt>/<file>
     # chattr =c <mnt>/<file>
     # dd if=/dev/zero of=<mnt>/<file> bs=1M count=10
    
    It is because we cleared the default compression type when setting the
    nodatacow. In fact, we needn't do it because we have used COMPRESS flag to
    indicate if we need compressed the file data or not, needn't use the
    variant -- compress_type -- in btrfs_info to do the same thing, and just
    use it to hold the default compression type. Or we would get a wrong compress
    type for a file whose own compress flag is set but the compress flag of its
    filesystem is not set.
    Reported-by: NTsutomu Itoh <t-itoh@jp.fujitsu.com>
    Signed-off-by: NMiao Xie <miaox@cn.fujitsu.com>
    Reviewed-by: NLiu Bo <bo.li.liu@oracle.com>
    Signed-off-by: NChris Mason <clm@fb.com>
    a7e252af
super.c 49.8 KB