[GIT PULL] AFS fixes and development

From: David Howells
Date: Tue May 07 2019 - 16:12:14 EST


Hi Linus,

The following are a set of fix and development patches for AFS for 5.2. To
summarise:

(1) Fix the AFS file locking so that sqlite can run on an AFS mount and
also so that firefox and gnome can use a homedir that's mounted
through AFS.

This required emulation of fine-grained locking when the server will
only support whole-file locks and no upgrade/downgrade. Four modes
are provided, settable by mount parameter:

"flock=local" - No reference to the server

"flock=openafs" - Fine-grained locks are local-only, whole-file locks
require sufficient server locks

"flock=strict" - All locks require sufficient server locks

"flock=write" - Always get an exclusive server lock

If the volume is a read-only or backup volume, then flock=local for
that volume.

(2) Log extra information for a couple of cases where the client mucks up
somehow: AFS vnode with undefined type and dir check failure - in both
cases we seem to end up with unfilled data, but the issues happen
infrequently and are difficult to reproduce at will.

(3) Implement silly rename for unlink() and rename().

(4) Set i_blocks so that du can get some information about usage.

(5) Fix xattr handlers to return the right amount of data and to not
overflow buffers.

(6) Implement getting/setting raw AFS and YFS ACLs as xattrs.

Tested-by: Jonathan Billings <jsbillings@xxxxxxxxxxxxxx>
Signed-off-by: David Howells <dhowells@xxxxxxxxxx>
---
The following changes since commit cd8dead0c39457e58ec1d36db93aedca811d48f1:

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net (2019-04-24 16:18:59 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs.git tags/afs-next-20190507

for you to fetch changes up to f5e4546347bc847be30b3cf904db5fc874b3c5dc:

afs: Implement YFS ACL setting (2019-05-07 16:48:44 +0100)

----------------------------------------------------------------
AFS Development

----------------------------------------------------------------
David Howells (17):
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
afs: Provide mount-time configurable byte-range file locking emulation
afs: Log more information for "kAFS: AFS vnode with undefined type\n"
afs: Fix the afs.cell and afs.volume xattr handlers
afs: Fix getting the afs.fid xattr
afs: Get an AFS3 ACL as an xattr
afs: Get YFS ACLs and information through xattrs
afs: Implement YFS ACL setting

Joe Gorse (1):
afs: implement acl setting

Marc Dionne (1):
afs: Calculate i_blocks based on file size

fs/afs/Makefile | 1 +
fs/afs/afs_fs.h | 2 +
fs/afs/dir.c | 167 ++++++++++--
fs/afs/dir_silly.c | 239 ++++++++++++++++++
fs/afs/flock.c | 616 ++++++++++++++++++++++++++++-----------------
fs/afs/fs_probe.c | 13 +-
fs/afs/fsclient.c | 277 +++++++++++++++++---
fs/afs/inode.c | 43 +++-
fs/afs/internal.h | 64 ++++-
fs/afs/protocol_yfs.h | 6 +-
fs/afs/rxrpc.c | 33 ++-
fs/afs/super.c | 34 ++-
fs/afs/vl_probe.c | 14 +-
fs/afs/vlclient.c | 26 +-
fs/afs/xattr.c | 270 +++++++++++++++++++-
fs/afs/yfsclient.c | 329 +++++++++++++++++++++---
include/linux/fs.h | 1 +
include/trace/events/afs.h | 385 +++++++++++++++++++++++++++-
18 files changed, 2142 insertions(+), 378 deletions(-)
create mode 100644 fs/afs/dir_silly.c