linux_dsm_epyc7002/fs/afs
David Howells 977e5f8ed0 afs: Split the usage count on struct afs_server
Split the usage count on the afs_server struct to have an active count that
registers who's actually using it separately from the reference count on
the object.

This allows a future patch to dispatch polling probes without advancing the
"unuse" time into the future each time we emit a probe, which would
otherwise prevent unused server records from expiring.

Included in this:

 (1) The latter part of afs_destroy_server() in which the RCU destruction
     of afs_server objects is invoked and the outstanding server count is
     decremented is split out into __afs_put_server().

 (2) afs_put_server() now calls __afs_put_server() rather then setting the
     management timer.

 (3) The calls begun by afs_fs_give_up_all_callbacks() and
     afs_fs_get_capabilities() can now take a ref on the server record, so
     afs_destroy_server() can just drop its ref and needn't wait for the
     completion of these calls.  They'll put the ref when they're done.

 (4) Because of (3), afs_fs_probe_done() no longer needs to wake up
     afs_destroy_server() with server->probe_outstanding.

 (5) afs_gc_servers can be simplified.  It only needs to check if
     server->active is 0 rather than playing games with the refcount.

 (6) afs_manage_servers() can propose a server for gc if usage == 0 rather
     than if ref == 1.  The gc is effected by (5).

Signed-off-by: David Howells <dhowells@redhat.com>
2020-05-31 15:19:51 +01:00
..
addr_list.c afs: Use kfree_rcu() instead of casting kfree() to rcu_callback_t 2020-03-13 10:47:33 -07:00
afs_cm.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
afs_fs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
afs_vl.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
afs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
cache.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
callback.c vfs, afs, ext4: Make the inode hash table RCU searchable 2020-05-31 15:19:44 +01:00
cell.c afs: Fix characters allowed into cell names 2020-01-26 08:54:04 -08:00
cmservice.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
dir_edit.c afs: Remove set but not used variables 'before', 'after' 2019-11-21 20:36:00 +00:00
dir_silly.c afs: Fix race between post-modification dir edit and readdir/d_revalidate 2020-04-13 15:09:01 +01:00
dir.c afs: Always include dir in bulk status fetch from afs_do_lookup() 2020-05-31 15:19:51 +01:00
dynroot.c afs: Fix creation calls in the dynamic root to fail with EOPNOTSUPP 2019-12-11 17:47:51 +00:00
file.c afs: Rename desc -> req in afs_fetch_data() 2019-11-21 09:12:17 +00:00
flock.c fs: afs: Use pr_warn instead of pr_warning 2019-10-18 15:01:55 +02:00
fs_probe.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
fsclient.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
inode.c Printk changes for 5.5 2019-11-25 19:40:40 -08:00
internal.h afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
main.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
Makefile afs: do not send list of client addresses 2019-06-02 18:06:26 -07:00
misc.c AFS development 2019-07-10 20:55:33 -07:00
mntpt.c afs: Fix mountpoint parsing 2019-12-11 16:56:54 +00:00
proc.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
protocol_uae.h afs: Add support for the UAE error table 2019-06-28 18:37:53 +01:00
protocol_yfs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
rotate.c afs: Make record checking use TASK_UNINTERRUPTIBLE when appropriate 2020-04-24 16:33:32 +01:00
rxrpc.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
security.c afs: Support RCU pathwalk 2019-09-02 11:43:54 +01:00
server_list.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
server.c afs: Split the usage count on struct afs_server 2020-05-31 15:19:51 +01:00
super.c fs_parse: fold fs_parameter_desc/fs_parameter_spec 2020-02-07 14:48:37 -05:00
vl_list.c fs/afs: Replace rcu_swap_protected() with rcu_replace_pointer() 2019-10-30 08:44:27 -07:00
vl_probe.c rxrpc: Fix the excessive initial retransmission timeout 2020-05-11 16:42:28 +01:00
vl_rotate.c afs: Remove some unused bits 2020-04-24 16:32:49 +01:00
vlclient.c afs: Use the serverUnique field in the UVLDB record to reduce rpc ops 2020-05-31 15:19:51 +01:00
volume.c afs: Make record checking use TASK_UNINTERRUPTIBLE when appropriate 2020-04-24 16:33:32 +01:00
write.c AFS development 2019-07-10 20:55:33 -07:00
xattr.c afs: xattr: use scnprintf 2019-11-21 09:12:17 +00:00
xdr_fs.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
yfsclient.c afs: Don't unlock fetched data pages until the op completes successfully 2020-05-18 10:29:17 -07:00