diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2016-01-22 19:34:32 +0100 |
---|---|---|
committer | Mike Marshall <hubcap@omnibond.com> | 2016-01-23 18:55:24 +0100 |
commit | 96acf9d65e70e0eb2716e3e46c45f4acb8256f1a (patch) | |
tree | a424147d64d576a3996f0f53a09f6cafe2073284 /fs/orangefs/orangefs-mod.c | |
parent | orangefs: move wakeups into set_op_state_{serviced,purged}() (diff) | |
download | linux-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.c | 24 |
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(); |