diff mbox series

[14/28] lustre: portals_handle: rename ops to owner

Message ID 155168109858.31333.13224172304059470846.stgit@noble.brown (mailing list archive)
State New, archived
Headers show
Series More lustre patches... | expand

Commit Message

NeilBrown March 4, 2019, 6:31 a.m. UTC
Now the portals_handle_ops contains only a char*,
it is functioning primarily to identify the owner of each handle.
So change the name to h_owner, and the type to char*.

Signed-off-by: NeilBrown <neilb@suse.com>
---
 .../staging/lustre/lustre/include/lustre_handles.h |   12 +++---------
 drivers/staging/lustre/lustre/ldlm/ldlm_lock.c     |    8 +++-----
 drivers/staging/lustre/lustre/obdclass/genops.c    |   17 ++++++-----------
 .../lustre/lustre/obdclass/lustre_handles.c        |   15 +++++++--------
 4 files changed, 19 insertions(+), 33 deletions(-)

Comments

Andreas Dilger April 3, 2019, 7:50 p.m. UTC | #1
On Mar 3, 2019, at 23:31, NeilBrown <neilb@suse.com> wrote:
> 
> Now the portals_handle_ops contains only a char*,
> it is functioning primarily to identify the owner of each handle.
> So change the name to h_owner, and the type to char*.
> 
> Signed-off-by: NeilBrown <neilb@suse.com>

Reviewed-by: Andreas Dilger <adilger@whamcloud.com>

> ---
> .../staging/lustre/lustre/include/lustre_handles.h |   12 +++---------
> drivers/staging/lustre/lustre/ldlm/ldlm_lock.c     |    8 +++-----
> drivers/staging/lustre/lustre/obdclass/genops.c    |   17 ++++++-----------
> .../lustre/lustre/obdclass/lustre_handles.c        |   15 +++++++--------
> 4 files changed, 19 insertions(+), 33 deletions(-)
> 
> diff --git a/drivers/staging/lustre/lustre/include/lustre_handles.h b/drivers/staging/lustre/lustre/include/lustre_handles.h
> index 8fb42851f6d1..ebbbb01710e7 100644
> --- a/drivers/staging/lustre/lustre/include/lustre_handles.h
> +++ b/drivers/staging/lustre/lustre/include/lustre_handles.h
> @@ -45,11 +45,6 @@
> #include <linux/spinlock.h>
> #include <linux/types.h>
> 
> -struct portals_handle_ops {
> -	/* hop_type is used for some debugging messages */
> -	char *hop_type;
> -};
> -
> /* These handles are most easily used by having them appear at the very top of
>  * whatever object that you want to make handles for.  ie:
>  *
> @@ -65,7 +60,7 @@ struct portals_handle_ops {
> struct portals_handle {
> 	struct list_head		h_link;
> 	u64				h_cookie;
> -	const struct portals_handle_ops	*h_ops;
> +	char				*h_owner;
> 	refcount_t			h_ref;
> 
> 	/* newly added fields to handle the RCU issue. -jxiong */
> @@ -77,10 +72,9 @@ struct portals_handle {
> /* handles.c */
> 
> /* Add a handle to the hash table */
> -void class_handle_hash(struct portals_handle *,
> -		       const struct portals_handle_ops *ops);
> +void class_handle_hash(struct portals_handle *, char *owner);
> void class_handle_unhash(struct portals_handle *);
> -void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops);
> +void *class_handle2object(u64 cookie, char *owner);
> int class_handle_init(void);
> void class_handle_cleanup(void);
> 
> diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
> index 18f018d27936..56a2d1dcd663 100644
> --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
> +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
> @@ -363,9 +363,7 @@ void ldlm_lock_destroy_nolock(struct ldlm_lock *lock)
> 	}
> }
> 
> -static struct portals_handle_ops lock_handle_ops = {
> -	.hop_type   = "ldlm",
> -};
> +static const char lock_handle_owner[] = "ldlm";
> 
> /**
>  *
> @@ -405,7 +403,7 @@ static struct ldlm_lock *ldlm_lock_new(struct ldlm_resource *resource)
> 	lprocfs_counter_incr(ldlm_res_to_ns(resource)->ns_stats,
> 			     LDLM_NSS_LOCKS);
> 	INIT_LIST_HEAD(&lock->l_handle.h_link);
> -	class_handle_hash(&lock->l_handle, &lock_handle_ops);
> +	class_handle_hash(&lock->l_handle, lock_handle_owner);
> 
> 	lu_ref_init(&lock->l_reference);
> 	lu_ref_add(&lock->l_reference, "hash", lock);
> @@ -509,7 +507,7 @@ struct ldlm_lock *__ldlm_handle2lock(const struct lustre_handle *handle,
> 
> 	LASSERT(handle);
> 
> -	lock = class_handle2object(handle->cookie, &lock_handle_ops);
> +	lock = class_handle2object(handle->cookie, lock_handle_owner);
> 	if (!lock)
> 		return NULL;
> 
> diff --git a/drivers/staging/lustre/lustre/obdclass/genops.c b/drivers/staging/lustre/lustre/obdclass/genops.c
> index ed306bbfbfb8..e0da46e7d355 100644
> --- a/drivers/staging/lustre/lustre/obdclass/genops.c
> +++ b/drivers/staging/lustre/lustre/obdclass/genops.c
> @@ -708,7 +708,8 @@ int obd_init_caches(void)
> 	return -ENOMEM;
> }
> 
> -static struct portals_handle_ops export_handle_ops;
> +static const char export_handle_owner[] = "export";
> +
> /* map connection to client */
> struct obd_export *class_conn2export(struct lustre_handle *conn)
> {
> @@ -725,7 +726,7 @@ struct obd_export *class_conn2export(struct lustre_handle *conn)
> 	}
> 
> 	CDEBUG(D_INFO, "looking for export cookie %#llx\n", conn->cookie);
> -	export = class_handle2object(conn->cookie, &export_handle_ops);
> +	export = class_handle2object(conn->cookie, export_handle_owner);
> 	return export;
> }
> EXPORT_SYMBOL(class_conn2export);
> @@ -777,10 +778,6 @@ static void class_export_destroy(struct obd_export *exp)
> 	kfree_rcu(exp, exp_handle.h_rcu);
> }
> 
> -static struct portals_handle_ops export_handle_ops = {
> -	.hop_type	= "export",
> -};
> -
> struct obd_export *class_export_get(struct obd_export *exp)
> {
> 	refcount_inc(&exp->exp_handle.h_ref);
> @@ -863,7 +860,7 @@ static struct obd_export *__class_new_export(struct obd_device *obd,
> 	INIT_LIST_HEAD(&export->exp_req_replay_queue);
> 	INIT_LIST_HEAD(&export->exp_handle.h_link);
> 	INIT_LIST_HEAD(&export->exp_hp_rpcs);
> -	class_handle_hash(&export->exp_handle, &export_handle_ops);
> +	class_handle_hash(&export->exp_handle, export_handle_owner);
> 	spin_lock_init(&export->exp_lock);
> 	spin_lock_init(&export->exp_rpc_lock);
> 	spin_lock_init(&export->exp_bl_list_lock);
> @@ -967,9 +964,7 @@ static void class_import_destroy(struct obd_import *imp)
> 	kfree_rcu(imp, imp_handle.h_rcu);
> }
> 
> -static struct portals_handle_ops import_handle_ops = {
> -	.hop_type	= "import",
> -};
> +static const char import_handle_owner[] = "import";
> 
> struct obd_import *class_import_get(struct obd_import *import)
> {
> @@ -1052,7 +1047,7 @@ struct obd_import *class_new_import(struct obd_device *obd)
> 	atomic_set(&imp->imp_inval_count, 0);
> 	INIT_LIST_HEAD(&imp->imp_conn_list);
> 	INIT_LIST_HEAD(&imp->imp_handle.h_link);
> -	class_handle_hash(&imp->imp_handle, &import_handle_ops);
> +	class_handle_hash(&imp->imp_handle, import_handle_owner);
> 	init_imp_at(&imp->imp_at);
> 
> 	/* the default magic is V2, will be used in connect RPC, and
> diff --git a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
> index 8aece57ec8c9..f41558ccdfcf 100644
> --- a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
> +++ b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
> @@ -58,8 +58,7 @@ static struct handle_bucket {
>  * Generate a unique 64bit cookie (hash) for a handle and insert it into
>  * global (per-node) hash-table.
>  */
> -void class_handle_hash(struct portals_handle *h,
> -		       const struct portals_handle_ops *ops)
> +void class_handle_hash(struct portals_handle *h, char *owner)
> {
> 	struct handle_bucket *bucket;
> 
> @@ -85,7 +84,7 @@ void class_handle_hash(struct portals_handle *h,
> 	h->h_cookie = handle_base;
> 	spin_unlock(&handle_base_lock);
> 
> -	h->h_ops = ops;
> +	h->h_owner = owner;
> 	spin_lock_init(&h->h_lock);
> 
> 	bucket = &handle_hash[h->h_cookie & HANDLE_HASH_MASK];
> @@ -132,7 +131,7 @@ void class_handle_unhash(struct portals_handle *h)
> }
> EXPORT_SYMBOL(class_handle_unhash);
> 
> -void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
> +void *class_handle2object(u64 cookie, char *owner)
> {
> 	struct handle_bucket *bucket;
> 	struct portals_handle *h;
> @@ -147,14 +146,14 @@ void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
> 
> 	rcu_read_lock();
> 	list_for_each_entry_rcu(h, &bucket->head, h_link) {
> -		if (h->h_cookie != cookie || h->h_ops != ops)
> +		if (h->h_cookie != cookie || h->h_owner != owner)
> 			continue;
> 
> 		spin_lock(&h->h_lock);
> 		if (likely(h->h_in != 0)) {
> 			refcount_inc(&h->h_ref);
> 			CDEBUG(D_INFO, "GET %s %p refcount=%d\n",
> -			       h->h_ops->hop_type, h,
> +			       h->h_owner, h,
> 			       refcount_read(&h->h_ref));
> 			retval = h;
> 		}
> @@ -201,8 +200,8 @@ static int cleanup_all_handles(void)
> 
> 		spin_lock(&handle_hash[i].lock);
> 		list_for_each_entry_rcu(h, &handle_hash[i].head, h_link) {
> -			CERROR("force clean handle %#llx addr %p ops %p\n",
> -			       h->h_cookie, h, h->h_ops);
> +			CERROR("force clean handle %#llx addr %p owner %p\n",
> +			       h->h_cookie, h, h->h_owner);
> 
> 			class_handle_unhash_nolock(h);
> 			rc++;
> 
> 

Cheers, Andreas
---
Andreas Dilger
Principal Lustre Architect
Whamcloud
NeilBrown April 3, 2019, 11:39 p.m. UTC | #2
On Wed, Apr 03 2019, Andreas Dilger wrote:

> On Mar 3, 2019, at 23:31, NeilBrown <neilb@suse.com> wrote:
>> 
>> Now the portals_handle_ops contains only a char*,
>> it is functioning primarily to identify the owner of each handle.
>> So change the name to h_owner, and the type to char*.
>> 
>> Signed-off-by: NeilBrown <neilb@suse.com>
>
> Reviewed-by: Andreas Dilger <adilger@whamcloud.com>

Thanks.
I've also added a note here:

    Note: this h_owner is now quiet different from the similar h_owner
    in the server code.  When server code it merged the
    "med" pointer should be stored in the "mfd" and validated separately.

NeilBrown

>
>> ---
>> .../staging/lustre/lustre/include/lustre_handles.h |   12 +++---------
>> drivers/staging/lustre/lustre/ldlm/ldlm_lock.c     |    8 +++-----
>> drivers/staging/lustre/lustre/obdclass/genops.c    |   17 ++++++-----------
>> .../lustre/lustre/obdclass/lustre_handles.c        |   15 +++++++--------
>> 4 files changed, 19 insertions(+), 33 deletions(-)
>> 
>> diff --git a/drivers/staging/lustre/lustre/include/lustre_handles.h b/drivers/staging/lustre/lustre/include/lustre_handles.h
>> index 8fb42851f6d1..ebbbb01710e7 100644
>> --- a/drivers/staging/lustre/lustre/include/lustre_handles.h
>> +++ b/drivers/staging/lustre/lustre/include/lustre_handles.h
>> @@ -45,11 +45,6 @@
>> #include <linux/spinlock.h>
>> #include <linux/types.h>
>> 
>> -struct portals_handle_ops {
>> -	/* hop_type is used for some debugging messages */
>> -	char *hop_type;
>> -};
>> -
>> /* These handles are most easily used by having them appear at the very top of
>>  * whatever object that you want to make handles for.  ie:
>>  *
>> @@ -65,7 +60,7 @@ struct portals_handle_ops {
>> struct portals_handle {
>> 	struct list_head		h_link;
>> 	u64				h_cookie;
>> -	const struct portals_handle_ops	*h_ops;
>> +	char				*h_owner;
>> 	refcount_t			h_ref;
>> 
>> 	/* newly added fields to handle the RCU issue. -jxiong */
>> @@ -77,10 +72,9 @@ struct portals_handle {
>> /* handles.c */
>> 
>> /* Add a handle to the hash table */
>> -void class_handle_hash(struct portals_handle *,
>> -		       const struct portals_handle_ops *ops);
>> +void class_handle_hash(struct portals_handle *, char *owner);
>> void class_handle_unhash(struct portals_handle *);
>> -void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops);
>> +void *class_handle2object(u64 cookie, char *owner);
>> int class_handle_init(void);
>> void class_handle_cleanup(void);
>> 
>> diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
>> index 18f018d27936..56a2d1dcd663 100644
>> --- a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
>> +++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
>> @@ -363,9 +363,7 @@ void ldlm_lock_destroy_nolock(struct ldlm_lock *lock)
>> 	}
>> }
>> 
>> -static struct portals_handle_ops lock_handle_ops = {
>> -	.hop_type   = "ldlm",
>> -};
>> +static const char lock_handle_owner[] = "ldlm";
>> 
>> /**
>>  *
>> @@ -405,7 +403,7 @@ static struct ldlm_lock *ldlm_lock_new(struct ldlm_resource *resource)
>> 	lprocfs_counter_incr(ldlm_res_to_ns(resource)->ns_stats,
>> 			     LDLM_NSS_LOCKS);
>> 	INIT_LIST_HEAD(&lock->l_handle.h_link);
>> -	class_handle_hash(&lock->l_handle, &lock_handle_ops);
>> +	class_handle_hash(&lock->l_handle, lock_handle_owner);
>> 
>> 	lu_ref_init(&lock->l_reference);
>> 	lu_ref_add(&lock->l_reference, "hash", lock);
>> @@ -509,7 +507,7 @@ struct ldlm_lock *__ldlm_handle2lock(const struct lustre_handle *handle,
>> 
>> 	LASSERT(handle);
>> 
>> -	lock = class_handle2object(handle->cookie, &lock_handle_ops);
>> +	lock = class_handle2object(handle->cookie, lock_handle_owner);
>> 	if (!lock)
>> 		return NULL;
>> 
>> diff --git a/drivers/staging/lustre/lustre/obdclass/genops.c b/drivers/staging/lustre/lustre/obdclass/genops.c
>> index ed306bbfbfb8..e0da46e7d355 100644
>> --- a/drivers/staging/lustre/lustre/obdclass/genops.c
>> +++ b/drivers/staging/lustre/lustre/obdclass/genops.c
>> @@ -708,7 +708,8 @@ int obd_init_caches(void)
>> 	return -ENOMEM;
>> }
>> 
>> -static struct portals_handle_ops export_handle_ops;
>> +static const char export_handle_owner[] = "export";
>> +
>> /* map connection to client */
>> struct obd_export *class_conn2export(struct lustre_handle *conn)
>> {
>> @@ -725,7 +726,7 @@ struct obd_export *class_conn2export(struct lustre_handle *conn)
>> 	}
>> 
>> 	CDEBUG(D_INFO, "looking for export cookie %#llx\n", conn->cookie);
>> -	export = class_handle2object(conn->cookie, &export_handle_ops);
>> +	export = class_handle2object(conn->cookie, export_handle_owner);
>> 	return export;
>> }
>> EXPORT_SYMBOL(class_conn2export);
>> @@ -777,10 +778,6 @@ static void class_export_destroy(struct obd_export *exp)
>> 	kfree_rcu(exp, exp_handle.h_rcu);
>> }
>> 
>> -static struct portals_handle_ops export_handle_ops = {
>> -	.hop_type	= "export",
>> -};
>> -
>> struct obd_export *class_export_get(struct obd_export *exp)
>> {
>> 	refcount_inc(&exp->exp_handle.h_ref);
>> @@ -863,7 +860,7 @@ static struct obd_export *__class_new_export(struct obd_device *obd,
>> 	INIT_LIST_HEAD(&export->exp_req_replay_queue);
>> 	INIT_LIST_HEAD(&export->exp_handle.h_link);
>> 	INIT_LIST_HEAD(&export->exp_hp_rpcs);
>> -	class_handle_hash(&export->exp_handle, &export_handle_ops);
>> +	class_handle_hash(&export->exp_handle, export_handle_owner);
>> 	spin_lock_init(&export->exp_lock);
>> 	spin_lock_init(&export->exp_rpc_lock);
>> 	spin_lock_init(&export->exp_bl_list_lock);
>> @@ -967,9 +964,7 @@ static void class_import_destroy(struct obd_import *imp)
>> 	kfree_rcu(imp, imp_handle.h_rcu);
>> }
>> 
>> -static struct portals_handle_ops import_handle_ops = {
>> -	.hop_type	= "import",
>> -};
>> +static const char import_handle_owner[] = "import";
>> 
>> struct obd_import *class_import_get(struct obd_import *import)
>> {
>> @@ -1052,7 +1047,7 @@ struct obd_import *class_new_import(struct obd_device *obd)
>> 	atomic_set(&imp->imp_inval_count, 0);
>> 	INIT_LIST_HEAD(&imp->imp_conn_list);
>> 	INIT_LIST_HEAD(&imp->imp_handle.h_link);
>> -	class_handle_hash(&imp->imp_handle, &import_handle_ops);
>> +	class_handle_hash(&imp->imp_handle, import_handle_owner);
>> 	init_imp_at(&imp->imp_at);
>> 
>> 	/* the default magic is V2, will be used in connect RPC, and
>> diff --git a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
>> index 8aece57ec8c9..f41558ccdfcf 100644
>> --- a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
>> +++ b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
>> @@ -58,8 +58,7 @@ static struct handle_bucket {
>>  * Generate a unique 64bit cookie (hash) for a handle and insert it into
>>  * global (per-node) hash-table.
>>  */
>> -void class_handle_hash(struct portals_handle *h,
>> -		       const struct portals_handle_ops *ops)
>> +void class_handle_hash(struct portals_handle *h, char *owner)
>> {
>> 	struct handle_bucket *bucket;
>> 
>> @@ -85,7 +84,7 @@ void class_handle_hash(struct portals_handle *h,
>> 	h->h_cookie = handle_base;
>> 	spin_unlock(&handle_base_lock);
>> 
>> -	h->h_ops = ops;
>> +	h->h_owner = owner;
>> 	spin_lock_init(&h->h_lock);
>> 
>> 	bucket = &handle_hash[h->h_cookie & HANDLE_HASH_MASK];
>> @@ -132,7 +131,7 @@ void class_handle_unhash(struct portals_handle *h)
>> }
>> EXPORT_SYMBOL(class_handle_unhash);
>> 
>> -void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
>> +void *class_handle2object(u64 cookie, char *owner)
>> {
>> 	struct handle_bucket *bucket;
>> 	struct portals_handle *h;
>> @@ -147,14 +146,14 @@ void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
>> 
>> 	rcu_read_lock();
>> 	list_for_each_entry_rcu(h, &bucket->head, h_link) {
>> -		if (h->h_cookie != cookie || h->h_ops != ops)
>> +		if (h->h_cookie != cookie || h->h_owner != owner)
>> 			continue;
>> 
>> 		spin_lock(&h->h_lock);
>> 		if (likely(h->h_in != 0)) {
>> 			refcount_inc(&h->h_ref);
>> 			CDEBUG(D_INFO, "GET %s %p refcount=%d\n",
>> -			       h->h_ops->hop_type, h,
>> +			       h->h_owner, h,
>> 			       refcount_read(&h->h_ref));
>> 			retval = h;
>> 		}
>> @@ -201,8 +200,8 @@ static int cleanup_all_handles(void)
>> 
>> 		spin_lock(&handle_hash[i].lock);
>> 		list_for_each_entry_rcu(h, &handle_hash[i].head, h_link) {
>> -			CERROR("force clean handle %#llx addr %p ops %p\n",
>> -			       h->h_cookie, h, h->h_ops);
>> +			CERROR("force clean handle %#llx addr %p owner %p\n",
>> +			       h->h_cookie, h, h->h_owner);
>> 
>> 			class_handle_unhash_nolock(h);
>> 			rc++;
>> 
>> 
>
> Cheers, Andreas
> ---
> Andreas Dilger
> Principal Lustre Architect
> Whamcloud
diff mbox series

Patch

diff --git a/drivers/staging/lustre/lustre/include/lustre_handles.h b/drivers/staging/lustre/lustre/include/lustre_handles.h
index 8fb42851f6d1..ebbbb01710e7 100644
--- a/drivers/staging/lustre/lustre/include/lustre_handles.h
+++ b/drivers/staging/lustre/lustre/include/lustre_handles.h
@@ -45,11 +45,6 @@ 
 #include <linux/spinlock.h>
 #include <linux/types.h>
 
-struct portals_handle_ops {
-	/* hop_type is used for some debugging messages */
-	char *hop_type;
-};
-
 /* These handles are most easily used by having them appear at the very top of
  * whatever object that you want to make handles for.  ie:
  *
@@ -65,7 +60,7 @@  struct portals_handle_ops {
 struct portals_handle {
 	struct list_head		h_link;
 	u64				h_cookie;
-	const struct portals_handle_ops	*h_ops;
+	char				*h_owner;
 	refcount_t			h_ref;
 
 	/* newly added fields to handle the RCU issue. -jxiong */
@@ -77,10 +72,9 @@  struct portals_handle {
 /* handles.c */
 
 /* Add a handle to the hash table */
-void class_handle_hash(struct portals_handle *,
-		       const struct portals_handle_ops *ops);
+void class_handle_hash(struct portals_handle *, char *owner);
 void class_handle_unhash(struct portals_handle *);
-void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops);
+void *class_handle2object(u64 cookie, char *owner);
 int class_handle_init(void);
 void class_handle_cleanup(void);
 
diff --git a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
index 18f018d27936..56a2d1dcd663 100644
--- a/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
+++ b/drivers/staging/lustre/lustre/ldlm/ldlm_lock.c
@@ -363,9 +363,7 @@  void ldlm_lock_destroy_nolock(struct ldlm_lock *lock)
 	}
 }
 
-static struct portals_handle_ops lock_handle_ops = {
-	.hop_type   = "ldlm",
-};
+static const char lock_handle_owner[] = "ldlm";
 
 /**
  *
@@ -405,7 +403,7 @@  static struct ldlm_lock *ldlm_lock_new(struct ldlm_resource *resource)
 	lprocfs_counter_incr(ldlm_res_to_ns(resource)->ns_stats,
 			     LDLM_NSS_LOCKS);
 	INIT_LIST_HEAD(&lock->l_handle.h_link);
-	class_handle_hash(&lock->l_handle, &lock_handle_ops);
+	class_handle_hash(&lock->l_handle, lock_handle_owner);
 
 	lu_ref_init(&lock->l_reference);
 	lu_ref_add(&lock->l_reference, "hash", lock);
@@ -509,7 +507,7 @@  struct ldlm_lock *__ldlm_handle2lock(const struct lustre_handle *handle,
 
 	LASSERT(handle);
 
-	lock = class_handle2object(handle->cookie, &lock_handle_ops);
+	lock = class_handle2object(handle->cookie, lock_handle_owner);
 	if (!lock)
 		return NULL;
 
diff --git a/drivers/staging/lustre/lustre/obdclass/genops.c b/drivers/staging/lustre/lustre/obdclass/genops.c
index ed306bbfbfb8..e0da46e7d355 100644
--- a/drivers/staging/lustre/lustre/obdclass/genops.c
+++ b/drivers/staging/lustre/lustre/obdclass/genops.c
@@ -708,7 +708,8 @@  int obd_init_caches(void)
 	return -ENOMEM;
 }
 
-static struct portals_handle_ops export_handle_ops;
+static const char export_handle_owner[] = "export";
+
 /* map connection to client */
 struct obd_export *class_conn2export(struct lustre_handle *conn)
 {
@@ -725,7 +726,7 @@  struct obd_export *class_conn2export(struct lustre_handle *conn)
 	}
 
 	CDEBUG(D_INFO, "looking for export cookie %#llx\n", conn->cookie);
-	export = class_handle2object(conn->cookie, &export_handle_ops);
+	export = class_handle2object(conn->cookie, export_handle_owner);
 	return export;
 }
 EXPORT_SYMBOL(class_conn2export);
@@ -777,10 +778,6 @@  static void class_export_destroy(struct obd_export *exp)
 	kfree_rcu(exp, exp_handle.h_rcu);
 }
 
-static struct portals_handle_ops export_handle_ops = {
-	.hop_type	= "export",
-};
-
 struct obd_export *class_export_get(struct obd_export *exp)
 {
 	refcount_inc(&exp->exp_handle.h_ref);
@@ -863,7 +860,7 @@  static struct obd_export *__class_new_export(struct obd_device *obd,
 	INIT_LIST_HEAD(&export->exp_req_replay_queue);
 	INIT_LIST_HEAD(&export->exp_handle.h_link);
 	INIT_LIST_HEAD(&export->exp_hp_rpcs);
-	class_handle_hash(&export->exp_handle, &export_handle_ops);
+	class_handle_hash(&export->exp_handle, export_handle_owner);
 	spin_lock_init(&export->exp_lock);
 	spin_lock_init(&export->exp_rpc_lock);
 	spin_lock_init(&export->exp_bl_list_lock);
@@ -967,9 +964,7 @@  static void class_import_destroy(struct obd_import *imp)
 	kfree_rcu(imp, imp_handle.h_rcu);
 }
 
-static struct portals_handle_ops import_handle_ops = {
-	.hop_type	= "import",
-};
+static const char import_handle_owner[] = "import";
 
 struct obd_import *class_import_get(struct obd_import *import)
 {
@@ -1052,7 +1047,7 @@  struct obd_import *class_new_import(struct obd_device *obd)
 	atomic_set(&imp->imp_inval_count, 0);
 	INIT_LIST_HEAD(&imp->imp_conn_list);
 	INIT_LIST_HEAD(&imp->imp_handle.h_link);
-	class_handle_hash(&imp->imp_handle, &import_handle_ops);
+	class_handle_hash(&imp->imp_handle, import_handle_owner);
 	init_imp_at(&imp->imp_at);
 
 	/* the default magic is V2, will be used in connect RPC, and
diff --git a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
index 8aece57ec8c9..f41558ccdfcf 100644
--- a/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
+++ b/drivers/staging/lustre/lustre/obdclass/lustre_handles.c
@@ -58,8 +58,7 @@  static struct handle_bucket {
  * Generate a unique 64bit cookie (hash) for a handle and insert it into
  * global (per-node) hash-table.
  */
-void class_handle_hash(struct portals_handle *h,
-		       const struct portals_handle_ops *ops)
+void class_handle_hash(struct portals_handle *h, char *owner)
 {
 	struct handle_bucket *bucket;
 
@@ -85,7 +84,7 @@  void class_handle_hash(struct portals_handle *h,
 	h->h_cookie = handle_base;
 	spin_unlock(&handle_base_lock);
 
-	h->h_ops = ops;
+	h->h_owner = owner;
 	spin_lock_init(&h->h_lock);
 
 	bucket = &handle_hash[h->h_cookie & HANDLE_HASH_MASK];
@@ -132,7 +131,7 @@  void class_handle_unhash(struct portals_handle *h)
 }
 EXPORT_SYMBOL(class_handle_unhash);
 
-void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
+void *class_handle2object(u64 cookie, char *owner)
 {
 	struct handle_bucket *bucket;
 	struct portals_handle *h;
@@ -147,14 +146,14 @@  void *class_handle2object(u64 cookie, const struct portals_handle_ops *ops)
 
 	rcu_read_lock();
 	list_for_each_entry_rcu(h, &bucket->head, h_link) {
-		if (h->h_cookie != cookie || h->h_ops != ops)
+		if (h->h_cookie != cookie || h->h_owner != owner)
 			continue;
 
 		spin_lock(&h->h_lock);
 		if (likely(h->h_in != 0)) {
 			refcount_inc(&h->h_ref);
 			CDEBUG(D_INFO, "GET %s %p refcount=%d\n",
-			       h->h_ops->hop_type, h,
+			       h->h_owner, h,
 			       refcount_read(&h->h_ref));
 			retval = h;
 		}
@@ -201,8 +200,8 @@  static int cleanup_all_handles(void)
 
 		spin_lock(&handle_hash[i].lock);
 		list_for_each_entry_rcu(h, &handle_hash[i].head, h_link) {
-			CERROR("force clean handle %#llx addr %p ops %p\n",
-			       h->h_cookie, h, h->h_ops);
+			CERROR("force clean handle %#llx addr %p owner %p\n",
+			       h->h_cookie, h, h->h_owner);
 
 			class_handle_unhash_nolock(h);
 			rc++;