• Li Zefan's avatar
    Btrfs: fix direct-io vs nodatacow · f0dd9592
    Li Zefan authored
    To reproduce the bug:
    
      # mount -o nodatacow /dev/sda7 /mnt/
      # dd if=/dev/zero of=/mnt/tmp bs=4K count=1
      1+0 records in
      1+0 records out
      4096 bytes (4.1 kB) copied, 0.000136115 s, 30.1 MB/s
      # dd if=/dev/zero of=/mnt/tmp bs=4K count=1 conv=notrunc oflag=direct
      dd: writing `/mnt/tmp': Input/output error
      1+0 records in
      0+0 records out
    
    btrfs_ordered_update_i_size() may return 1, but btrfs_endio_direct_write()
    mistakenly takes it as an error.
    Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
    f0dd9592
inode.c 198 KB