hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/fs/afs/main.c
....@@ -1,12 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /* AFS client file system
23 *
34 * Copyright (C) 2002,5 Red Hat, Inc. All Rights Reserved.
45 * Written by David Howells (dhowells@redhat.com)
5
- *
6
- * This program is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU General Public License
8
- * as published by the Free Software Foundation; either version
9
- * 2 of the License, or (at your option) any later version.
106 */
117
128 #include <linux/module.h>
....@@ -22,6 +18,7 @@
2218 MODULE_DESCRIPTION("AFS Client File System");
2319 MODULE_AUTHOR("Red Hat, Inc.");
2420 MODULE_LICENSE("GPL");
21
+MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
2522
2623 unsigned afs_debug;
2724 module_param_named(debug, afs_debug, uint, S_IWUSR | S_IRUGO);
....@@ -82,16 +79,18 @@
8279 mutex_init(&net->socket_mutex);
8380
8481 net->cells = RB_ROOT;
85
- seqlock_init(&net->cells_lock);
82
+ init_rwsem(&net->cells_lock);
8683 INIT_WORK(&net->cells_manager, afs_manage_cells);
8784 timer_setup(&net->cells_timer, afs_cells_timer, 0);
8885
86
+ mutex_init(&net->cells_alias_lock);
8987 mutex_init(&net->proc_cells_lock);
9088 INIT_HLIST_HEAD(&net->proc_cells);
9189
9290 seqlock_init(&net->fs_lock);
9391 net->fs_servers = RB_ROOT;
94
- INIT_LIST_HEAD(&net->fs_updates);
92
+ INIT_LIST_HEAD(&net->fs_probe_fast);
93
+ INIT_LIST_HEAD(&net->fs_probe_slow);
9594 INIT_HLIST_HEAD(&net->fs_proc);
9695
9796 INIT_HLIST_HEAD(&net->fs_addresses4);
....@@ -100,6 +99,9 @@
10099
101100 INIT_WORK(&net->fs_manager, afs_manage_servers);
102101 timer_setup(&net->fs_timer, afs_servers_timer, 0);
102
+ INIT_WORK(&net->fs_prober, afs_fs_probe_dispatcher);
103
+ timer_setup(&net->fs_probe_timer, afs_fs_probe_timer, 0);
104
+ atomic_set(&net->servers_outstanding, 1);
103105
104106 ret = -ENOMEM;
105107 sysnames = kzalloc(sizeof(*sysnames), GFP_KERNEL);
....@@ -130,6 +132,7 @@
130132
131133 error_open_socket:
132134 net->live = false;
135
+ afs_fs_probe_cleanup(net);
133136 afs_cell_purge(net);
134137 afs_purge_servers(net);
135138 error_cell_init:
....@@ -150,6 +153,7 @@
150153 struct afs_net *net = afs_net(net_ns);
151154
152155 net->live = false;
156
+ afs_fs_probe_cleanup(net);
153157 afs_cell_purge(net);
154158 afs_purge_servers(net);
155159 afs_close_socket(net);