From: David Howells <dhowells@redhat.com>
To: Marc Dionne <marc.dionne@auristor.com>
Cc: David Howells <dhowells@redhat.com>,
Christian Brauner <christian@brauner.io>,
linux-afs@lists.infradead.org, linux-fsdevel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCH v4 00/11] afs, rxrpc: Clean up refcounting on afs_cell and afs_server records
Date: Mon, 10 Mar 2025 09:41:53 +0000 [thread overview]
Message-ID: <20250310094206.801057-1-dhowells@redhat.com> (raw)
This series fixes an occasional hang that's only really encountered when
rmmod'ing the kafs module, one of the reasons why I'm proposing it for the
next merge window rather than immediate upstreaming. The changes include:
(1) Fix missing handling of RCU pathwalk in afs_atcell_get_link().
(2) Remove the "-o autocell" mount option. This is obsolete with the
dynamic root and removing it makes the next patch slightly easier.
(3) Change how the dynamic root mount is constructed. Currently, the root
directory is (de)populated when it is (un)mounted if there are cells
already configured and, further, pairs of automount points have to be
created/removed each time a cell is added/deleted.
This is changed so that readdir on the root dir lists all the known
cell automount pairs plus the @cell symlinks and the inodes and
dentries are constructed by lookup on demand. This simplifies the
cell management code.
(4) A few improvements to the afs_volume tracepoint.
(5) A few improvements to the afs_server tracepoint.
(6) Pass trace info into the afs_lookup_cell() function to allow the trace
log to indicate the purpose of the lookup.
(7) Remove the 'net' parameter from afs_unuse_cell() as it's superfluous.
(8) In rxrpc, allow a kernel app (such as kafs) to store a word of
information on rxrpc_peer records.
(9) Use the information stored on the rxrpc_peer record to point to the
afs_server record. This allows the server address lookup to be done
away with.
(10) Simplify the afs_server ref/activity accounting to make each one
self-contained and not garbage collected from the cell management work
item.
(11) Simplify the afs_cell ref/activity accounting to make each one of
these also self-contained and not driven by a central management work
item.
The current code was intended to make it such that a single timer for
the namespace and one work item per cell could do all the work
required to maintain these records. This, however, made for some
sequencing problems when cleaning up these records. Further, the
attempt to pass refs along with timers and work items made getting it
right rather tricky when the timer or work item already had a ref
attached and now a ref had to be got rid of.
The patches are here:
http://git.kernel.org/cgit/linux/kernel/git/dhowells/linux-fs.git/log/?h=afs-next
Thanks,
David
Changes
=======
ver #4)
- Add a fix patch to handle RCU pathwalk in afs_atcell_get_link().
ver #3)
- Fix the fix for an error check of the form "unsigned value < 0".
ver #2)
- Fix an error check of the form "unsigned value < 0".
Link: https://lore.kernel.org/r//3190716.1740733119@warthog.procyon.org.uk/ # v1
Link: https://lore.kernel.org/r//3399677.1740754398@warthog.procyon.org.uk/ # v2
Link: https://lore.kernel.org/r//3761344.1740995350@warthog.procyon.org.uk/ # v3
David Howells (11):
afs: Fix afs_atcell_get_link() to handle RCU pathwalk
afs: Remove the "autocell" mount option
afs: Change dynroot to create contents on demand
afs: Improve afs_volume tracing to display a debug ID
afs: Improve server refcount/active count tracing
afs: Make afs_lookup_cell() take a trace note
afs: Drop the net parameter from afs_unuse_cell()
rxrpc: Allow the app to store private data on peer structs
afs: Use the per-peer app data provided by rxrpc
afs: Fix afs_server ref accounting
afs: Simplify cell record handling
fs/afs/addr_list.c | 50 +++
fs/afs/cell.c | 446 ++++++++++++---------------
fs/afs/cmservice.c | 82 +----
fs/afs/dir.c | 5 +-
fs/afs/dynroot.c | 501 +++++++++++++------------------
fs/afs/fs_probe.c | 32 +-
fs/afs/fsclient.c | 4 +-
fs/afs/internal.h | 100 +++---
fs/afs/main.c | 16 +-
fs/afs/mntpt.c | 5 +-
fs/afs/proc.c | 19 +-
fs/afs/rxrpc.c | 8 +-
fs/afs/server.c | 601 ++++++++++++++++---------------------
fs/afs/server_list.c | 6 +-
fs/afs/super.c | 25 +-
fs/afs/vl_alias.c | 7 +-
fs/afs/vl_rotate.c | 2 +-
fs/afs/volume.c | 15 +-
include/net/af_rxrpc.h | 2 +
include/trace/events/afs.h | 83 ++---
net/rxrpc/ar-internal.h | 1 +
net/rxrpc/peer_object.c | 30 +-
22 files changed, 927 insertions(+), 1113 deletions(-)
next reply other threads:[~2025-03-10 9:42 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-10 9:41 David Howells [this message]
2025-03-10 9:41 ` [PATCH v4 01/11] afs: Fix afs_atcell_get_link() to handle RCU pathwalk David Howells
2025-03-10 9:41 ` [PATCH v4 02/11] afs: Remove the "autocell" mount option David Howells
2025-03-10 9:41 ` [PATCH v4 03/11] afs: Change dynroot to create contents on demand David Howells
2025-03-10 9:41 ` [PATCH v4 04/11] afs: Improve afs_volume tracing to display a debug ID David Howells
2025-03-10 9:41 ` [PATCH v4 05/11] afs: Improve server refcount/active count tracing David Howells
2025-03-10 9:41 ` [PATCH v4 06/11] afs: Make afs_lookup_cell() take a trace note David Howells
2025-03-10 9:42 ` [PATCH v4 07/11] afs: Drop the net parameter from afs_unuse_cell() David Howells
2025-03-10 9:42 ` [PATCH v4 08/11] rxrpc: Allow the app to store private data on peer structs David Howells
2025-03-10 9:42 ` [PATCH v4 09/11] afs: Use the per-peer app data provided by rxrpc David Howells
2025-03-10 9:42 ` [PATCH v4 10/11] afs: Fix afs_server ref accounting David Howells
2025-03-10 9:42 ` [PATCH v4 11/11] afs: Simplify cell record handling David Howells
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250310094206.801057-1-dhowells@redhat.com \
--to=dhowells@redhat.com \
--cc=christian@brauner.io \
--cc=linux-afs@lists.infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marc.dionne@auristor.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®