diff options
Diffstat (limited to 'results/classifier/gemma3:12b/files/1507')
| -rw-r--r-- | results/classifier/gemma3:12b/files/1507 | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/results/classifier/gemma3:12b/files/1507 b/results/classifier/gemma3:12b/files/1507 new file mode 100644 index 000000000..e72333d8d --- /dev/null +++ b/results/classifier/gemma3:12b/files/1507 @@ -0,0 +1,38 @@ + +export/fuse/fuse.c:fuse_fallocate does not do anything but returns success +Description of problem: +block/export/fuse.c:fuse_fallocate with `FALLOC_FL_PUNCH_HOLE` does not do anything even though it returns 0 (success). A later read incorrectly returns old data instead of zeros. +Should probably return EOPNOTSUPP. + +FALLOC_FL_PUNCH_HOLE: +>Within the specified range, partial filesystem blocks are zeroed, +and whole filesystem blocks are removed from the file. After a +successful call, subsequent reads from this range will return +zeros. +https://man7.org/linux/man-pages/man2/fallocate.2.html +Steps to reproduce: +```sh +touch /tmp/data /tmp/fuse_exp +dd if=/dev/random of=/tmp/data count=1000 bs=1M +qemu-storage-daemon --blockdev node-name=node0,driver=raw,file.driver=file,file.filename=/tmp/data --export type=fuse,id=node0-export,node-name=node0,mountpoint=/tmp/fuse_exp,writable=on + +hexdump /tmp/fuse_exp -n 16 +# 0000000 4d5f db2d 57ab 02f6 f9c2 d2f1 0c1b 4b86 +fallocate -l 1G --punch-hole /tmp/fuse_exp +echo $? +# 0 +hexdump /tmp/fuse_exp -n 16 +# 0000000 4d5f db2d 57ab 02f6 f9c2 d2f1 0c1b 4b86 + + +hexdump /tmp/data -n 16 +# 0000000 4d5f db2d 57ab 02f6 f9c2 d2f1 0c1b 4b86 +fallocate -l 1G --punch-hole /tmp/data +hexdump /tmp/data -n 16 +# 0000000 0000 0000 0000 0000 0000 0000 0000 0000 + +# sudo bpftrace -e 'uretprobe:/usr/bin/qemu-storage-daemon:blk_co_pdiscard { printf("ret=%d\n",retval); }' +# ret=0 +# sudo bpftrace -e 'kretfunc:fuse_file_fallocate { printf("len=%d \t mode=%d ret=%d\n", args->length , args->mode,retval); }' +# len=1073741824 mode=3 ret=0 +``` |