Dmitry Antipov
2020-Apr-09 08:53 UTC
[Gluster-users] glfs_fallocate() looks completely broken on disperse volumes with sharding enabled
(closely related to https://github.com/gluster/glusterfs/issues/1148) 1) # prove -vf ./tests/bugs/shard/zero-flag.t ./tests/bugs/shard/zero-flag.t .. 1..34 ok 1 [ 190/ 1454] < 13> 'glusterd' ok 2 [ 9/ 5] < 14> 'pidof glusterd' ok 3 [ 9/ 201] < 15> 'gluster --mode=script --wignore volume create patchy replica 2 localhost.localdomain:/d/backends/patchy0 localhost.localdomain:/d/backends/patchy1 localhost.localdomain:/d/backends/patchy2 localhost.localdomain:/d/backends/patchy3' ok 4 [ 13/ 155] < 16> 'gluster --mode=script --wignore volume set patchy features.shard on' ok 5 [ 30/ 198] < 17> 'gluster --mode=script --wignore volume set patchy features.shard-block-size 4MB' ok 6 [ 30/ 1463] < 18> 'gluster --mode=script --wignore volume start patchy' ok 7 [ 11/ 57] < 20> '_GFS --attribute-timeout=0 --entry-timeout=0 --volfile-id=patchy --volfile-server=localhost.localdomain /mnt/glusterfs/0' ok 8 [ 10/ 90] < 21> 'build_tester ./tests/bugs/shard/shard-fallocate.c -lgfapi -Wall -O2' ok 9 [ 10/ 7] < 25> 'touch /mnt/glusterfs/0/tmp' ok 10 [ 13/ 1] < 26> '' ok 11 [ 10/ 7] < 27> 'touch /mnt/glusterfs/0/file1' ok 12 [ 20/ 11049] < 31> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 0 6291456 /file1 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' ok 13 [ 17/ 4] < 33> '6291456 stat -c %s /mnt/glusterfs/0/file1' ok 14 [ 10/ 2] < 36> 'stat /d/backends/patchy0/.shard' ok 15 [ 10/ 2] < 37> 'stat /d/backends/patchy1/.shard' ok 16 [ 9/ 2] < 38> 'stat /d/backends/patchy2/.shard' ok 17 [ 9/ 2] < 39> 'stat /d/backends/patchy3/.shard' ok 18 [ 25/ 2] < 41> '2097152 echo 2097152 2097152' ok 19 [ 9/ 17] < 42> '1 file_all_zeroes /mnt/glusterfs/0/file1' ok 20 [ 8/ 7] < 47> 'truncate -s 6M /mnt/glusterfs/0/file2' ok 21 [ 9/ 6] < 48> 'dd if=/mnt/glusterfs/0/tmp of=/mnt/glusterfs/0/file2 bs=1 seek=3145728 count=26 conv=notrunc' ok 22 [ 32/ 11045] < 51> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 3145728 26 /file2 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' ok 23 [ 17/ 4] < 53> '6291456 stat -c %s /mnt/glusterfs/0/file2' ok 24 [ 27/ 2] < 54> '007d0186a1231a3a874a6aa09a1b7dcf echo 007d0186a1231a3a874a6aa09a1b7dcf' ok 25 [ 9/ 7] < 59> 'touch /mnt/glusterfs/0/file3' ok 26 [ 13/ 7] < 63> 'dd if=/mnt/glusterfs/0/tmp of=/mnt/glusterfs/0/file3 bs=1 seek=9437184 count=26 conv=notrunc' ok 27 [ 10/ 2] < 64> '! stat /d/backends/patchy*/.shard/cfa95fe6-8367-4478-957c-edf8561dab21.1' ok 28 [ 9/ 2] < 65> 'stat /d/backends/patchy0/.shard/cfa95fe6-8367-4478-957c-edf8561dab21.2 /d/backends/patchy1/.shard/cfa95fe6-8367-4478-957c-edf8561dab21.2' ok 29 [ 52/ 2] < 67> '1048602 echo 1048602 1048602' ok 30 [ 15/ 11046] < 69> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 5242880 1048576 /file3 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' ok 31 [ 41/ 2] < 70> 'db677843bb19004c18b71597026b2181 echo db677843bb19004c18b71597026b2181' ok 32 [ 9/ 7] < 72> 'Y force_umount /mnt/glusterfs/0' ok 33 [ 9/ 5152] < 73> 'gluster --mode=script --wignore volume stop patchy' ok 34 [ 17/ 580] < 74> 'gluster --mode=script --wignore volume delete patchy' ok All tests successful. Files=1, Tests=34, 43 wallclock secs ( 0.03 usr 0.00 sys + 1.14 cusr 0.67 csys = 1.84 CPU) Result: PASS 2) diff --git a/tests/bugs/shard/zero-flag.t b/tests/bugs/shard/zero-flag.t index 1f39787ab..9332a7fc7 100644 --- a/tests/bugs/shard/zero-flag.t +++ b/tests/bugs/shard/zero-flag.t @@ -12,7 +12,7 @@ require_fallocate -z -l 512k $M0/file && rm -f $M0/file TEST glusterd TEST pidof glusterd -TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1,2,3} +TEST $CLI volume create $V0 disperse 3 redundancy 1 $H0:$B0/${V0}{0,1,2} TEST $CLI volume set $V0 features.shard on TEST $CLI volume set $V0 features.shard-block-size 4MB TEST $CLI volume start $V0 3) # prove -vf ./tests/bugs/shard/zero-flag.t ./tests/bugs/shard/zero-flag.t .. 1..34 ok 1 [ 191/ 1435] < 13> 'glusterd' ok 2 [ 9/ 5] < 14> 'pidof glusterd' ok 3 [ 9/ 159] < 15> 'gluster --mode=script --wignore volume create patchy disperse 3 redundancy 1 localhost.localdomain:/d/backends/patchy0 localhost.localdomain:/d/backends/patchy1 localhost.localdomain:/d/backends/patchy2' ok 4 [ 9/ 138] < 16> 'gluster --mode=script --wignore volume set patchy features.shard on' ok 5 [ 10/ 135] < 17> 'gluster --mode=script --wignore volume set patchy features.shard-block-size 4MB' ok 6 [ 12/ 1397] < 18> 'gluster --mode=script --wignore volume start patchy' ok 7 [ 12/ 43] < 20> '_GFS --attribute-timeout=0 --entry-timeout=0 --volfile-id=patchy --volfile-server=localhost.localdomain /mnt/glusterfs/0' ok 8 [ 10/ 92] < 21> 'build_tester ./tests/bugs/shard/shard-fallocate.c -lgfapi -Wall -O2' ok 9 [ 10/ 6] < 25> 'touch /mnt/glusterfs/0/tmp' ok 10 [ 13/ 1] < 26> '' ok 11 [ 10/ 6] < 27> 'touch /mnt/glusterfs/0/file1' ok 12 [ 19/ 13044] < 31> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 0 6291456 /file1 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' ok 13 [ 16/ 4] < 33> '6291456 stat -c %s /mnt/glusterfs/0/file1' ok 14 [ 10/ 2] < 36> 'stat /d/backends/patchy0/.shard' ok 15 [ 11/ 2] < 37> 'stat /d/backends/patchy1/.shard' ok 16 [ 11/ 2] < 38> 'stat /d/backends/patchy2/.shard' stat: cannot stat '/d/backends/patchy3/.shard': No such file or directory not ok 17 [ 11/ 2] < 39> 'stat /d/backends/patchy3/.shard' -> '' not ok 18 [ 27/ 3] < 41> '2097152 echo 1048576 1048576 1048576' -> 'Got "1048576 1048576 1048576" instead of "2097152"' ok 19 [ 11/ 22] < 42> '1 file_all_zeroes /mnt/glusterfs/0/file1' ok 20 [ 11/ 6] < 47> 'truncate -s 6M /mnt/glusterfs/0/file2' dd: error writing '/mnt/glusterfs/0/file2': Transport endpoint is not connected dd: closing input file '/mnt/glusterfs/0/tmp': Transport endpoint is not connected not ok 21 [ 11/ 360] < 48> 'dd if=/mnt/glusterfs/0/tmp of=/mnt/glusterfs/0/file2 bs=1 seek=3145728 count=26 conv=notrunc' -> '' md5sum: /mnt/glusterfs/0/file2: Transport endpoint is not connected ok 22 [ 17/ 13054] < 51> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 3145728 26 /file2 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' stat: cannot stat '/mnt/glusterfs/0/file2': Transport endpoint is not connected not ok 23 [ 16/ 3] < 53> '6291456 stat -c %s /mnt/glusterfs/0/file2' -> 'Got "" instead of "6291456"' md5sum: /mnt/glusterfs/0/file2: Transport endpoint is not connected ok 24 [ 13/ 2] < 54> ' echo' touch: cannot touch '/mnt/glusterfs/0/file3': Transport endpoint is not connected not ok 25 [ 10/ 2] < 59> 'touch /mnt/glusterfs/0/file3' -> '' dd: failed to open '/mnt/glusterfs/0/tmp': Transport endpoint is not connected not ok 26 [ 13/ 1] < 63> 'dd if=/mnt/glusterfs/0/tmp of=/mnt/glusterfs/0/file3 bs=1 seek=9437184 count=26 conv=notrunc' -> '' ok 27 [ 8/ 1] < 64> '! stat /d/backends/patchy*/.shard/.1' stat: cannot stat '/d/backends/patchy*/.shard/.2': No such file or directory not ok 28 [ 9/ 2] < 65> 'stat /d/backends/patchy*/.shard/.2' -> '' md5sum: /mnt/glusterfs/0/file3: Transport endpoint is not connected stat: missing operand Try 'stat --help' for more information. not ok 29 [ 24/ 2] < 67> '1048602 echo' -> 'Got "" instead of "1048602"' glfs_open: returned NULL ok 30 [ 13/ 13054] < 69> './tests/bugs/shard/shard-fallocate localhost.localdomain patchy 0 5242880 1048576 /file3 /opt/glusterfs/var/log/glusterfs/glfs-patchy.log' md5sum: /mnt/glusterfs/0/file3: Transport endpoint is not connected ok 31 [ 21/ 3] < 70> ' echo' ok 32 [ 11/ 7] < 72> 'Y force_umount /mnt/glusterfs/0' ok 33 [ 11/ 4160] < 73> 'gluster --mode=script --wignore volume stop patchy' ok 34 [ 17/ 586] < 74> 'gluster --mode=script --wignore volume delete patchy' Failed 8/34 subtests Test Summary Report ------------------- ./tests/bugs/shard/zero-flag.t (Wstat: 0 Tests: 34 Failed: 8) Failed tests: 17-18, 21, 23, 25-26, 28-29 Files=1, Tests=34, 48 wallclock secs ( 0.02 usr 0.01 sys + 1.00 cusr 0.64 csys = 1.67 CPU) Result: FAIL Dmitry