All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.com>
To: lustre-devel@lists.lustre.org
Subject: [lustre-devel] [PATCH 14/28] lustre: portals_handle: rename ops to owner
Date: Thu, 04 Apr 2019 10:39:48 +1100	[thread overview]
Message-ID: <877eca1wvv.fsf@notabene.neil.brown.name> (raw)
In-Reply-To: <4ED59F3E-7C66-460F-9FAC-A9B50A83E25D@whamcloud.com>

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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20190404/bdd8c89c/attachment.sig>

  reply	other threads:[~2019-04-03 23:39 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-04  6:31 [lustre-devel] [PATCH 00/28] More lustre patches NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 12/28] lustre: handle: move refcount into the lustre_handle NeilBrown
2019-04-03 19:48   ` Andreas Dilger
2019-03-04  6:31 ` [lustre-devel] [PATCH 23/28] lustre: obdclass: remove unnecessary code from lustre_init_lsi() NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 15/28] lustre: portals_handle: remove locking from class_handle2object() NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 22/28] lustre: obdclass: discard process_quota_config NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 19/28] lustre: obd_sysfs: error-check value stored in jobid_var NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 18/28] lustre: remove unused fields from struct obd_device NeilBrown
2019-04-03 19:59   ` Andreas Dilger
2019-04-03 23:44     ` NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 07/28] lustre: obdclass: fix module load locking NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 16/28] lustre: portals_handle: use hlist for hash lists NeilBrown
2019-04-03 19:52   ` Andreas Dilger
2019-03-04  6:31 ` [lustre-devel] [PATCH 09/28] lustre: ldlm: discard varname in ldlm_pool NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 20/28] lustre: lov: use GFP_NOFS to allocate lo_entries NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 14/28] lustre: portals_handle: rename ops to owner NeilBrown
2019-04-03 19:50   ` Andreas Dilger
2019-04-03 23:39     ` NeilBrown [this message]
2019-03-04  6:31 ` [lustre-devel] [PATCH 13/28] lustre: discard OBD_FREE_RCU NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 08/28] lustre: convert rsi_sem to a spinlock NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 17/28] lustre: portals_handle: discard h_lock NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 11/28] lustre: handles: discard h_owner in favour of h_ops NeilBrown
2019-04-03 19:45   ` Andreas Dilger
2019-04-03 23:37     ` NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 24/28] lustre: ldlm: discard l_lock from struct ldlm_lock NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 02/28] lustre: collect all resource releasing for obj_type NeilBrown
2019-03-22  3:49   ` James Simmons
2019-03-04  6:31 ` [lustre-devel] [PATCH 21/28] lustre: vvp_dev; increment *pos in .next NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 03/28] lustre: obd_type: use typ_kobj.name as typ_name NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 06/28] lustre: obdclass: don't copy ops structures in to new type NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 10/28] lustre: lprocfs: use log2.h macros instead of shift loop NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 05/28] lustre: obd_type: discard obd_type_lock NeilBrown
2019-03-22  3:53   ` James Simmons
2019-03-24 23:37     ` NeilBrown
2019-03-25  5:56       ` Andreas Dilger
2019-03-04  6:31 ` [lustre-devel] [PATCH 01/28] lustre: embed typ_kobj in obd_type NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 04/28] lustre: obd_type: discard obd_types linked list NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 27/28] lustre: ldlm: simplify lock_mode_to_index() NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 26/28] lustre: ldlm: drop SLAB_TYPESAFE_BY_RCU from ldlm_lock slab NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 28/28] lustre: use list_move where appropriate NeilBrown
2019-03-04  6:31 ` [lustre-devel] [PATCH 25/28] lustre: ldlm: don't access l_resource when not locked NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877eca1wvv.fsf@notabene.neil.brown.name \
    --to=neilb@suse.com \
    --cc=lustre-devel@lists.lustre.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.