[PATCH 00/10] AFS fixes

From: David Howells
Date: Fri Mar 15 2019 - 19:07:19 EST



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