Details
-
Type: Bug
-
Status: Resolved
-
Priority: Major
-
Resolution: Fixed
-
Fix Version/s: Vz7.0-Update13
-
Component/s: Containers::Kernel
-
Security Level: Public
-
Environment:Virtuozzo Linux release 7.6
Description
>Description of problem:
Using a FUSE filesystem, the
kernel shortcuts the FS_IOC_FIEMAP ioctl call and returns EOPNOTSUPP. Causing a crash.
>How reproducible:
Compile and execute the attached file.
>Steps to Reproduce:
1. Install mergerfs or mhddfs (or any other FUSE fs).
2. compile filemap.c
3. run filemap over a file exposed by fuse. Immediate fuse crash.
>Actual results:
208235 14:59:03.705684 writev(3, [{"\x78\x00\x00\x00\x00\x00\x00\x00\x82\xa6\x0b\x00\x00\x00\x00\x00", 16}, {"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xe0\xbf\x10\x10\x08\x00\x00\x27\xf6\x52\xfe\x00\x00\x00\x00\xd8\x29\x7f\x00\x00\x00\x00\x00\x1b\xa3\xda\x5d\x00\x00\x00\x00\x46\xa8\xda\x5d\x00\x00\x00\x00\x46\xa8\xda\x5d\x00\x00\x00\x00\x16\x79\xb9\x0d\x2d\x66\x3b\x1e\x2d\x66\x3b\x1e\xb6\x81\x00\x00\x01\x00\x00\x00\xe9\x03\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", 104}], 2) = 120 <0.000040>
208235 14:59:03.705775 read(3, <unfinished ...>
208236 14:59:03.711995 <... read resumed> "\x68\x00\x00\x00\x27\x00\x00\x00\x84\xa6\x0b\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\xe9\x03\x00\x00\x7b\x2d\x03\x00\x00\x00\x00\x00\x90\x0a\x00\xf4\x84\x7f\x00\x00\x00\x00\x00\x00\x0b\x66\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x82\x7d\x9d\xff\xff\xff\xff\x00\x00\x41\xfe\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", 1052672) = 104 <0.023616>
208236 14:59:03.712124 mmap(NULL, 4294971392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f83ebfff000 <0.000049>
208236 14:59:03.712293 write(2, "ioctl cmd: -1071618549; in_bufsz: 2642248417; out_bufsz: 4294967295\n", 68) = 68 <0.000027>
208236 14:59:03.712406 write(2, "mergerfs: lib/fuse.c:4126: fuse_lib_ioctl: Assertion `!in_bufsz || !out_bufsz || in_bufsz == out_bufsz' failed.\n", 112) = 112 <0.000025>
208236 14:59:03.712473 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f85147d2000 <0.000028>
208236 14:59:03.712551 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 <0.000025>
208236 14:59:03.712623 tgkill(208231, 208236, SIGABRT) = 0 <0.000028>
208236 14:59:03.712692 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=208231, si_uid=0} ---
208231 14:59:03.712967 <... futex resumed> ) = ? <unavailable>
208235 14:59:03.712983 <... read resumed> ) = ? <unavailable>
208240 14:59:03.944445 +++ killed by SIGABRT (core dumped) +++
>Expected results:
Working
>Host OS:
OpenVZ 7.6
>Guest OS:
N/A
>Additional info (see https://openvz.org/Reporting_OpenVZ_problem):
I've been trying to debug this with the author of mergerfs, and it's starting to look like kernel issue....
Using a FUSE filesystem, the
kernel shortcuts the FS_IOC_FIEMAP ioctl call and returns EOPNOTSUPP. Causing a crash.
>How reproducible:
Compile and execute the attached file.
>Steps to Reproduce:
1. Install mergerfs or mhddfs (or any other FUSE fs).
2. compile filemap.c
3. run filemap over a file exposed by fuse. Immediate fuse crash.
>Actual results:
208235 14:59:03.705684 writev(3, [{"\x78\x00\x00\x00\x00\x00\x00\x00\x82\xa6\x0b\x00\x00\x00\x00\x00", 16}, {"\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef\xe0\xbf\x10\x10\x08\x00\x00\x27\xf6\x52\xfe\x00\x00\x00\x00\xd8\x29\x7f\x00\x00\x00\x00\x00\x1b\xa3\xda\x5d\x00\x00\x00\x00\x46\xa8\xda\x5d\x00\x00\x00\x00\x46\xa8\xda\x5d\x00\x00\x00\x00\x16\x79\xb9\x0d\x2d\x66\x3b\x1e\x2d\x66\x3b\x1e\xb6\x81\x00\x00\x01\x00\x00\x00\xe9\x03\x00\x00\xe9\x03\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", 104}], 2) = 120 <0.000040>
208235 14:59:03.705775 read(3, <unfinished ...>
208236 14:59:03.711995 <... read resumed> "\x68\x00\x00\x00\x27\x00\x00\x00\x84\xa6\x0b\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xe9\x03\x00\x00\xe9\x03\x00\x00\x7b\x2d\x03\x00\x00\x00\x00\x00\x90\x0a\x00\xf4\x84\x7f\x00\x00\x00\x00\x00\x00\x0b\x66\x20\xc0\x00\x00\x00\x00\x00\x00\x00\x00\xe1\x82\x7d\x9d\xff\xff\xff\xff\x00\x00\x41\xfe\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", 1052672) = 104 <0.023616>
208236 14:59:03.712124 mmap(NULL, 4294971392, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f83ebfff000 <0.000049>
208236 14:59:03.712293 write(2, "ioctl cmd: -1071618549; in_bufsz: 2642248417; out_bufsz: 4294967295\n", 68) = 68 <0.000027>
208236 14:59:03.712406 write(2, "mergerfs: lib/fuse.c:4126: fuse_lib_ioctl: Assertion `!in_bufsz || !out_bufsz || in_bufsz == out_bufsz' failed.\n", 112) = 112 <0.000025>
208236 14:59:03.712473 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f85147d2000 <0.000028>
208236 14:59:03.712551 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 <0.000025>
208236 14:59:03.712623 tgkill(208231, 208236, SIGABRT) = 0 <0.000028>
208236 14:59:03.712692 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=208231, si_uid=0} ---
208231 14:59:03.712967 <... futex resumed> ) = ? <unavailable>
208235 14:59:03.712983 <... read resumed> ) = ? <unavailable>
208240 14:59:03.944445 +++ killed by SIGABRT (core dumped) +++
>Expected results:
Working
>Host OS:
OpenVZ 7.6
>Guest OS:
N/A
>Additional info (see https://openvz.org/Reporting_OpenVZ_problem):
I've been trying to debug this with the author of mergerfs, and it's starting to look like kernel issue....