Background: a while ago, we found (#10277) that existing cache
expiration mechanism wasn't working with latest kernels. We used to
invalidate the top level dentries, which caused fuse to invalidate
everything, but an implementation detail in fuse caused it to start
ignoring our repeated invalidate calls, so this doesn't work any more.
To persuade fuse to dirty its entire metadata cache, Zheng added in a
system() call to "mount -o remount" after we expire things from our
client side cache.
However, this was a bit of a hack and has created problems:
* You can't call mount -o remount unless you're root, so we are less
flexible than we used to be (#10542)
* While the remount is happening, unmounts sporadically fail and the
fuse process can become unresponsive to SIGKILL (#10916)
The first issue was maybe an acceptable compromise, but the second issue
is just painful, and it seems like we might not have seen the last of
the knock on effects -- upstream maintainers certainly aren't expecting
filesystems to remount themselves quite so frequently.
We probably have an opportunity to get something upstream in fuse to
support a direct call to trigger the invalidation we want, if we can
work out what that should look like. Thoughts?
John
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html