Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * (C) 2001 Clemson University and The University of Chicago
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  * Changes by Acxiom Corporation to add proc file handler for pvfs2 client
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * parameters, Copyright Acxiom Corporation, 2005.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * See COPYING in top-level directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include "protocol.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include "orangefs-kernel.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include "orangefs-debugfs.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include "orangefs-sysfs.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) /* ORANGEFS_VERSION is a ./configure define */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) #ifndef ORANGEFS_VERSION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) #define ORANGEFS_VERSION "upstream"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)  * global variables declared here
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) struct orangefs_stats orangefs_stats;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) /* the size of the hash tables for ops in progress */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) int hash_table_size = 509;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) static ulong module_parm_debug_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) __u64 orangefs_gossip_debug_mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) int op_timeout_secs = ORANGEFS_DEFAULT_OP_TIMEOUT_SECS;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) int slot_timeout_secs = ORANGEFS_DEFAULT_SLOT_TIMEOUT_SECS;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) int orangefs_cache_timeout_msecs = 50;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) int orangefs_dcache_timeout_msecs = 50;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) int orangefs_getattr_timeout_msecs = 50;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) MODULE_AUTHOR("ORANGEFS Development Team");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) MODULE_DESCRIPTION("The Linux Kernel VFS interface to ORANGEFS");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) MODULE_PARM_DESC(module_parm_debug_mask, "debugging level (see orangefs-debug.h for values)");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) MODULE_PARM_DESC(op_timeout_secs, "Operation timeout in seconds");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) MODULE_PARM_DESC(slot_timeout_secs, "Slot timeout in seconds");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) MODULE_PARM_DESC(hash_table_size,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 		 "size of hash table for operations in progress");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) static struct file_system_type orangefs_fs_type = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	.name = "pvfs2",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	.mount = orangefs_mount,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	.kill_sb = orangefs_kill_sb,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	.owner = THIS_MODULE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) module_param(hash_table_size, int, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) module_param(module_parm_debug_mask, ulong, 0644);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) module_param(op_timeout_secs, int, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) module_param(slot_timeout_secs, int, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61)  * Blocks non-priority requests from being queued for servicing.  This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62)  * could be used for protecting the request list data structure, but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63)  * for now it's only being used to stall the op addition to the request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64)  * list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) DEFINE_MUTEX(orangefs_request_mutex);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) /* hash table for storing operations waiting for matching downcall */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) struct list_head *orangefs_htable_ops_in_progress;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) DEFINE_SPINLOCK(orangefs_htable_ops_in_progress_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) /* list for queueing upcall operations */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) LIST_HEAD(orangefs_request_list);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) /* used to protect the above orangefs_request_list */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) DEFINE_SPINLOCK(orangefs_request_list_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) /* used for incoming request notification */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) DECLARE_WAIT_QUEUE_HEAD(orangefs_request_list_waitq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) static int __init orangefs_init(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	__u32 i = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	if (op_timeout_secs < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 		op_timeout_secs = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	if (slot_timeout_secs < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 		slot_timeout_secs = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	/* initialize global book keeping data structures */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	ret = op_cache_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	if (ret < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 		goto out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	ret = orangefs_inode_cache_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	if (ret < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 		goto cleanup_op;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	orangefs_htable_ops_in_progress =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	    kcalloc(hash_table_size, sizeof(struct list_head), GFP_KERNEL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	if (!orangefs_htable_ops_in_progress) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 		ret = -ENOMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 		goto cleanup_inode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	/* initialize a doubly linked at each hash table index */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	for (i = 0; i < hash_table_size; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 		INIT_LIST_HEAD(&orangefs_htable_ops_in_progress[i]);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	ret = fsid_key_table_initialize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	if (ret < 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 		goto cleanup_progress_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	 * Build the contents of /sys/kernel/debug/orangefs/debug-help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	 * from the keywords in the kernel keyword/mask array.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	 * The keywords in the client keyword/mask array are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	 * unknown at boot time.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	 *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	 * orangefs_prepare_debugfs_help_string will be used again
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	 * later to rebuild the debug-help-string after the client starts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	 * and passes along the needed info. The argument signifies
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	 * which time orangefs_prepare_debugfs_help_string is being
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	 * called.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	ret = orangefs_prepare_debugfs_help_string(1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 		goto cleanup_key_table;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	orangefs_debugfs_init(module_parm_debug_mask);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	ret = orangefs_sysfs_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 		goto sysfs_init_failed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	/* Initialize the orangefsdev subsystem. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	ret = orangefs_dev_init();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	if (ret < 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 		gossip_err("%s: could not initialize device subsystem %d!\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 			   __func__,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 			   ret);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 		goto cleanup_device;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	ret = register_filesystem(&orangefs_fs_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	if (ret == 0) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 		pr_info("%s: module version %s loaded\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 			__func__,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 			ORANGEFS_VERSION);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 		goto out;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	orangefs_sysfs_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) cleanup_device:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	orangefs_dev_cleanup();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) sysfs_init_failed:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	orangefs_debugfs_cleanup();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) cleanup_key_table:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	fsid_key_table_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) cleanup_progress_table:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	kfree(orangefs_htable_ops_in_progress);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) cleanup_inode:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	orangefs_inode_cache_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) cleanup_op:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 	op_cache_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) out:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) static void __exit orangefs_exit(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	int i = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	gossip_debug(GOSSIP_INIT_DEBUG, "orangefs: orangefs_exit called\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	unregister_filesystem(&orangefs_fs_type);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	orangefs_debugfs_cleanup();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	orangefs_sysfs_exit();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	fsid_key_table_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	orangefs_dev_cleanup();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	BUG_ON(!list_empty(&orangefs_request_list));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	for (i = 0; i < hash_table_size; i++)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 		BUG_ON(!list_empty(&orangefs_htable_ops_in_progress[i]));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	orangefs_inode_cache_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	op_cache_finalize();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	kfree(orangefs_htable_ops_in_progress);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	pr_info("orangefs: module version %s unloaded\n", ORANGEFS_VERSION);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)  * What we do in this function is to walk the list of operations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)  * that are in progress in the hash table and mark them as purged as well.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) void purge_inprogress_ops(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	int i;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	for (i = 0; i < hash_table_size; i++) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 		struct orangefs_kernel_op_s *op;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 		struct orangefs_kernel_op_s *next;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 		spin_lock(&orangefs_htable_ops_in_progress_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 		list_for_each_entry_safe(op,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 					 next,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 					 &orangefs_htable_ops_in_progress[i],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 					 list) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 			set_op_state_purged(op);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 			gossip_debug(GOSSIP_DEV_DEBUG,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 				     "%s: op:%s: op_state:%d: process:%s:\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 				     __func__,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 				     get_opname_string(op),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 				     op->op_state,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 				     current->comm);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 		}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 		spin_unlock(&orangefs_htable_ops_in_progress_lock);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) module_init(orangefs_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) module_exit(orangefs_exit);