Fix #2215
closed
ceph-fuse does not invalidate page cache
Added by Greg Farnum about 12 years ago.
Updated about 11 years ago.
Description
Right now the userspace client doesn't invalidate the page cache when it loses the cache capability on an inode. Apparently this is due to deadlock with the way that FUSE invalidation interacts with our implementation.
Obviously we'll need to fix it sometime before we tell people the filesystem is production ready.
- Status changed from New to 7
- Assignee set to Sam Lang
- Project changed from Ceph to CephFS
- Category deleted (
11)
- Target version set to v0.54b
Running in teuthology with the multiclient test, I see a segfault in one of the fuse clients on the plana nodes. With the addition of a sleep in the thread before calling the ino_invalidate_cb, the segv is reproducible.
The problem is in the ceph-fuse.cc and fuse_ll.cc code. Teardown of the fuse session and channel was happening before we called Client::unmount, which breaks with the unmount calling the invalidate callback for inodes.
The proposed fix in wip-2215 is to separate out the fuse finalize code from ceph_fuse_ll_main and call it after the Client::unmount finishes.
wip-2215 looks good to me!
- Priority changed from Normal to High
- Target version deleted (
v0.54b)
- Tracker changed from Bug to Fix
- Target version set to v0.59
- Translation missing: en.field_story_points set to 1.00
- Target version changed from v0.59 to v0.60
- Target version changed from v0.60 to v0.59
I add the fuse_use_invalidate_cb: true option in the ceph-qa-suite to the basic and verify fs suites (in the btrfs.yamls for now). Once those pass reliably we can adjust the default in the config.
Which automatic tests actually run those? I'm not sure that the nightlies do so right now.
- Target version changed from v0.59 to v0.60
Those tests are part of the full regression test suite.
- Status changed from 7 to Resolved
Sage is turning it on by default now following weeks of testing in the nightlies!
Also available in: Atom
PDF