Message ID | 155168109858.31333.13224172304059470846.stgit@noble.brown (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | More lustre patches... | expand |
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
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 --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++;
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(-)