summaryrefslogtreecommitdiffstats
path: root/fs/orangefs/orangefs-mod.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2016-01-22 19:34:32 +0100
committerMike Marshall <hubcap@omnibond.com>2016-01-23 18:55:24 +0100
commit96acf9d65e70e0eb2716e3e46c45f4acb8256f1a (patch)
treea424147d64d576a3996f0f53a09f6cafe2073284 /fs/orangefs/orangefs-mod.c
parentorangefs: move wakeups into set_op_state_{serviced,purged}() (diff)
downloadlinux-96acf9d65e70e0eb2716e3e46c45f4acb8256f1a.tar.xz
linux-96acf9d65e70e0eb2716e3e46c45f4acb8256f1a.zip
orangefs: nothing should remain in request list and in hash
... otherwise some thread is running in .text that is about to be freed. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs/orangefs/orangefs-mod.c')
-rw-r--r--fs/orangefs/orangefs-mod.c24
1 files changed, 2 insertions, 22 deletions
diff --git a/fs/orangefs/orangefs-mod.c b/fs/orangefs/orangefs-mod.c
index d0257f8b8cd3..bd9fbfe2ccee 100644
--- a/fs/orangefs/orangefs-mod.c
+++ b/fs/orangefs/orangefs-mod.c
@@ -236,8 +236,6 @@ out:
static void __exit orangefs_exit(void)
{
int i = 0;
- struct orangefs_kernel_op_s *cur_op = NULL;
-
gossip_debug(GOSSIP_INIT_DEBUG, "orangefs: orangefs_exit called\n");
unregister_filesystem(&orangefs_fs_type);
@@ -245,27 +243,9 @@ static void __exit orangefs_exit(void)
orangefs_sysfs_exit();
fsid_key_table_finalize();
orangefs_dev_cleanup();
- /* clear out all pending upcall op requests */
- spin_lock(&orangefs_request_list_lock);
- while (!list_empty(&orangefs_request_list)) {
- cur_op = list_entry(orangefs_request_list.next,
- struct orangefs_kernel_op_s,
- list);
- list_del(&cur_op->list);
- gossip_debug(GOSSIP_INIT_DEBUG,
- "Freeing unhandled upcall request type %d\n",
- cur_op->upcall.type);
- op_release(cur_op);
- }
- spin_unlock(&orangefs_request_list_lock);
-
+ BUG_ON(!list_empty(&orangefs_request_list));
for (i = 0; i < hash_table_size; i++)
- while (!list_empty(&htable_ops_in_progress[i])) {
- cur_op = list_entry(htable_ops_in_progress[i].next,
- struct orangefs_kernel_op_s,
- list);
- op_release(cur_op);
- }
+ BUG_ON(!list_empty(&htable_ops_in_progress[i]));
kiocb_cache_finalize();
orangefs_inode_cache_finalize();