Skip to content

Instantly share code, notes, and snippets.

@rfjakob
Created March 31, 2019 17:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rfjakob/95ead6b3022f3100456ec5a88f5efc1b to your computer and use it in GitHub Desktop.
Save rfjakob/95ead6b3022f3100456ec5a88f5efc1b to your computer and use it in GitHub Desktop.
05a3771cbea72f2f7d50be19daa19f3dff2d6163 is the first bad commit
commit 05a3771cbea72f2f7d50be19daa19f3dff2d6163
Author: Kirill Smelkov <kirr@nexedi.com>
Date: Sat Feb 16 22:21:52 2019 +0300
fuse: Enable parallel lookup and readdir by default
After Linux VFS was enhanced to be able to do several lookups and
readdirs in parallel, FUSE client in Linux, in fear to break existing
filesystems, explicitly reverted it back to be serial in FUSE exchange
and requested filesystems to indicate via CAP_PARALLEL_DIROPS flag that
the filesystem server is ready to handle parallel lookup and readdir
requests.
https://git.kernel.org/linus/5c672ab3f0
We should be ready to handle and we provide MountOptions.SingleThreaded
for those filesystems, which are not ready to handle requests in
parallel.
:040000 040000 a1df1c27d5c778d795b8463b9a1396a6e1251c4e a1e4ff7d832cb918dc4ddc9108cda7846e04deaf M fuse
osboxes@osboxes:~/go/src/github.com/hanwen/go-fuse$ git bisect log
git bisect start
# bad: [cc423d1b07bd9ba15ac1db4139d378d85fbbc84a] fuse: make opcode uint32 instead of int32
git bisect bad cc423d1b07bd9ba15ac1db4139d378d85fbbc84a
# good: [6df8ddc41a9d6e5e186b0768169271deb06aa941] fuse/nodefs: fix some lint errors
git bisect good 6df8ddc41a9d6e5e186b0768169271deb06aa941
# bad: [025020407f031e55b479d6a5d3010ea529a828c6] nodefs: don't embed RawFileSystem
git bisect bad 025020407f031e55b479d6a5d3010ea529a828c6
# bad: [ce2558b4d3b53e91362dc522d960f2adebb867cb] fuse/test: disable TestFopenKeepCache
git bisect bad ce2558b4d3b53e91362dc522d960f2adebb867cb
# good: [4255d6fdaa8b238cbbb856733cca90daeaef2ba5] fuse/test: verify that rename of nonexistent returns ENOENT
git bisect good 4255d6fdaa8b238cbbb856733cca90daeaef2ba5
# good: [8d47a84b76f8260650e3b2ca792ef78e3f84bab7] nodefs: delay directory read till ReadDir
git bisect good 8d47a84b76f8260650e3b2ca792ef78e3f84bab7
# good: [b4c00f53cea9f5a3949b2663596d684fe92bfb09] fuse: fix printing of SetAttrIn.Gid
git bisect good b4c00f53cea9f5a3949b2663596d684fe92bfb09
# good: [afd12f375701921a093f032477b4bc610cca1834] fuse: Fix print for CAP_{PARALLEL_DIROPS,POSIX_ACL,HANDLE_KILLPRIV}
git bisect good afd12f375701921a093f032477b4bc610cca1834
# bad: [05a3771cbea72f2f7d50be19daa19f3dff2d6163] fuse: Enable parallel lookup and readdir by default
git bisect bad 05a3771cbea72f2f7d50be19daa19f3dff2d6163
# good: [c56c9e20ac85038528f165cb11f5bb70424b4f36] fuse: Add CAP_{ABORT_ERROR,MAX_PAGES,CACHE_SYMLINKS,NO_OPENDIR_SUPPORT}
git bisect good c56c9e20ac85038528f165cb11f5bb70424b4f36
# first bad commit: [05a3771cbea72f2f7d50be19daa19f3dff2d6163] fuse: Enable parallel lookup and readdir by default
osboxes 2237 0.0 0.4 967028 10108 ? Sl 13:33 0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
```
[14379.956556] INFO: task pool:3748 blocked for more than 120 seconds.
[14379.956557] Not tainted 4.15.0-45-generic #48~16.04.1-Ubuntu
[14379.956558] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[14379.956559] pool D 0 3748 1809 0x00000000
[14379.956561] Call Trace:
[14379.956563] __schedule+0x3d6/0x8b0
[14379.956564] schedule+0x36/0x80
[14379.956566] schedule_preempt_disabled+0xe/0x10
[14379.956568] __mutex_lock.isra.2+0x2ae/0x4e0
[14379.956569] ? kmem_cache_alloc_trace+0x1b2/0x1d0
[14379.956571] __mutex_lock_slowpath+0x13/0x20
[14379.956573] ? _cond_resched+0x1a/0x50
[14379.956574] ? __mutex_lock_slowpath+0x13/0x20
[14379.956576] mutex_lock+0x2f/0x40
[14379.956577] fuse_lock_inode+0x2a/0x30
[14379.956579] fuse_lookup+0x31/0x140
[14379.956589] ? lookup_fast+0xcf/0x300
[14379.956591] lookup_slow+0xab/0x170
[14379.956593] walk_component+0x1c5/0x360
[14379.956595] ? path_init+0x1d9/0x310
[14379.956596] path_lookupat+0x76/0x230
[14379.956598] filename_lookup+0xb8/0x1a0
[14379.956601] ? __check_object_size+0xfc/0x1a0
[14379.956603] ? strncpy_from_user+0x4d/0x170
[14379.956605] user_path_at_empty+0x36/0x40
[14379.956606] ? user_path_at_empty+0x36/0x40
[14379.956608] vfs_statx+0x77/0xe0
[14379.956610] ? __switch_to_asm+0x40/0x70
[14379.956612] ? __switch_to_asm+0x34/0x70
[14379.956614] SYSC_newlstat+0x3d/0x70
[14379.956615] ? __set_task_comm+0x5a/0xb0
[14379.956617] ? SyS_prctl+0xdd/0x500
[14379.956620] ? finish_task_switch+0x78/0x230
[14379.956622] SyS_newlstat+0xe/0x10
[14379.956624] do_syscall_64+0x73/0x130
[14379.956626] entry_SYSCALL_64_after_hwframe+0x3d/0xa2
[14379.956627] RIP: 0033:0x7f06fdbb9c85
[14379.956627] RSP: 002b:00007f06eaffcb08 EFLAGS: 00000246 ORIG_RAX: 0000000000000006
[14379.956629] RAX: ffffffffffffffda RBX: 00007f06d00010c0 RCX: 00007f06fdbb9c85
[14379.956630] RDX: 00007f06eaffcb70 RSI: 00007f06eaffcb70 RDI: 0000000001d5d260
[14379.956631] RBP: 00007f06ec00c040 R08: 0000000000100006 R09: 00007f06eaffcd60
[14379.956631] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000001d5d260
[14379.956632] R13: 00007f06eaffcd60 R14: 00007f06d00010e0 R15: 00007f06d0001100
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment