[lustre-devel] [PATCH 14/28] lustre: portals_handle: rename ops to owner
NeilBrown
neilb at suse.com
Wed Apr 3 16:39:48 PDT 2019
On Wed, Apr 03 2019, Andreas Dilger wrote:
> On Mar 3, 2019, at 23:31, NeilBrown <neilb at 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 at suse.com>
>
> Reviewed-by: Andreas Dilger <adilger at 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>
More information about the lustre-devel
mailing list