Here's a set of bits and fixes for AFS to improve the life of desktop applications such as firefox. It makes the following improvements: (1) Allows fine-grained locking, as required by firefox and sqlite, with the caveat that you can't get a partial write lock on a file if you first get a partial read lock on it as the AFS protocol only supports whole-file locks. At some point I need to look at emulating OpenAFS's behaviour whereby all partial locks are just granted. (2) Makes processes requesting locks actually wait to get a lock where we have an appropriate server lock, but there's a conflicting server lock. (3) Makes locks appear in /proc/locks. (4) Handles asynchronous file lock RPC operation failure on files that get deleted whilst the lock is being extended or released. (5) Implements silly-rename so that locked files that are in use continue to exist if they get released or unlinked. (6) Lock expiry is now based on the time the set- or extend-lock reply is seen (packet timestamp) rather than by the time at which we've done processing the operation (wallclock time). It also adds/modifies tracepoints to log: (1) File locking operations and events. (2) Directory content reload. (3) Silly rename. (4) Lookups. (5) Mounts (get_tree). (6) The afs_make_fs_call tracepoint is split to give two new variants that allow one or two names to be included in the log (such as the filename given to FS.MakeDir). (7) The afs_edit_dir tracepoint is given a larger name and this is surrounded by quotes when displayed. This also provides a more comprehensive data dump in the event that a directory content check fails. The patches can be found here: http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git tag afs-fixes-20190315 David --- David Howells (10): afs: Split wait from afs_make_call() afs: Calculate lock extend timer from set/extend reply reception afs: Fix AFS file locking to allow fine grained locks afs: Further fix file locking afs: Add file locking tracepoints afs: Improve dir check failure reports afs: Handle lock rpc ops failing on a file that got deleted afs: Add directory reload tracepoint afs: Implement sillyrename for unlink and rename afs: Add more tracepoints fs/afs/Makefile | 1 fs/afs/dir.c | 161 +++++++++++- fs/afs/dir_silly.c | 239 ++++++++++++++++++ fs/afs/flock.c | 569 +++++++++++++++++++++++++++----------------- fs/afs/fs_probe.c | 13 + fs/afs/fsclient.c | 92 +++++-- fs/afs/inode.c | 2 fs/afs/internal.h | 25 ++ fs/afs/rxrpc.c | 33 +-- fs/afs/super.c | 5 fs/afs/vl_probe.c | 14 + fs/afs/vlclient.c | 26 +- fs/afs/yfsclient.c | 72 ++++-- include/linux/fs.h | 1 include/trace/events/afs.h | 348 +++++++++++++++++++++++++++ 15 files changed, 1258 insertions(+), 343 deletions(-) create mode 100644 fs/afs/dir_silly.c