btrfs: test direct IO write against compressed extent

Test that doing a direct IO write against a file range that contains one
prealloc extent and one compressed extent works correctly.

From the linux kernel 4.0 onwards, this either triggered an assertion
failure (leading to a BUG_ON) when CONFIG_BTRFS_ASSERT=y or resulted
in an arithmetic underflow of an inode's space reservation for write
operations.

That issue is fixed by the following linux kernel patch:

  "Btrfs: fix extent accounting for partial direct IO writes"

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Filipe Manana
2015-12-21 17:03:17 +11:00
committed by Dave Chinner
parent e597459397
commit e8341568c1
3 changed files with 124 additions and 0 deletions
+15
View File
@@ -0,0 +1,15 @@
QA output created by 026
wrote 102400/102400 bytes at offset 716800
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 81920/81920 bytes at offset 655360
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 134217728/134217728 bytes at offset 270532608
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
wrote 268435456/268435456 bytes at offset 3145728
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
File digests before remounting the file system:
647d815906324ccdf288c7681f900ec0 SCRATCH_MNT/foo
5876dba1217b4c2915cda86f4c67640e SCRATCH_MNT/bar
File digests after remounting the file system:
647d815906324ccdf288c7681f900ec0 SCRATCH_MNT/foo
5876dba1217b4c2915cda86f4c67640e SCRATCH_MNT/bar