From 50da882f7f23bf6f6c43356074acf54d7b430020 Mon Sep 17 00:00:00 2001 From: pschwan Date: Tue, 5 Nov 2002 19:18:19 +0000 Subject: [PATCH] - Replaces the LDLM lock counters (in /proc/ldlm/) - Removes the second LDLM import that Peter added, in favour of doing a last-minute fixup of the portal numbers in ldlm_cli_cancel --- lustre/include/linux/lustre_idl.h | 2 -- lustre/include/linux/obd.h | 3 +-- lustre/ldlm/ldlm_lockd.c | 23 +++++++++++------------ lustre/ldlm/ldlm_resource.c | 18 ++++++++---------- lustre/lib/client.c | 6 ++---- lustre/lib/target.c | 2 +- lustre/mds/handler.c | 33 ++++++++++++++------------------- lustre/obdfilter/filter.c | 4 +--- 8 files changed, 38 insertions(+), 53 deletions(-) diff --git a/lustre/include/linux/lustre_idl.h b/lustre/include/linux/lustre_idl.h index a8f73c1..6335d93 100644 --- a/lustre/include/linux/lustre_idl.h +++ b/lustre/include/linux/lustre_idl.h @@ -72,8 +72,6 @@ typedef __u8 obd_uuid_t[37]; #define LDLM_CB_REPLY_PORTAL 16 #define LDLM_CANCEL_REQUEST_PORTAL 17 #define LDLM_CANCEL_REPLY_PORTAL 18 -#define LDLM_CLI_REQUEST_PORTAL 19 -#define LDLM_CLI_REPLY_PORTAL 20 #define SVC_KILLED 1 #define SVC_EVENT 2 diff --git a/lustre/include/linux/obd.h b/lustre/include/linux/obd.h index 9e545c0..cb897aa 100644 --- a/lustre/include/linux/obd.h +++ b/lustre/include/linux/obd.h @@ -234,8 +234,7 @@ struct obd_device { struct list_head obd_exports; struct list_head obd_imports; struct ldlm_namespace *obd_namespace; - struct ptlrpc_client obd_ldlm_cancel_client; /* XXX OST/MDS only */ - struct ptlrpc_client obd_ldlm_cb_client; /* XXX OST/MDS only */ + struct ptlrpc_client obd_ldlm_client; /* XXX OST/MDS only */ /* a spinlock is OK for what we do now, may need a semaphore later */ spinlock_t obd_dev_lock; union { diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index a861281..43d23fb 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -1,5 +1,3 @@ - - /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * @@ -459,7 +457,8 @@ static int ldlm_handle_cp_callback(struct ptlrpc_request *req) if (memcmp(dlm_req->lock_desc.l_resource.lr_name, lock->l_resource->lr_name, sizeof(__u64) * RES_NAME_SIZE) != 0) { - ldlm_lock_change_resource(lock, dlm_req->lock_desc.l_resource.lr_name); + ldlm_lock_change_resource(lock, + dlm_req->lock_desc.l_resource.lr_name); LDLM_DEBUG(lock, "completion AST, new resource"); } lock->l_resource->lr_tmp = &ast_list; @@ -532,7 +531,7 @@ static int ldlm_cancel_handler(struct ptlrpc_request *req) } switch (req->rq_reqmsg->opc) { - + /* XXX FIXME move this back to mds/handler.c, bug 625069 */ case LDLM_CANCEL: CDEBUG(D_INODE, "cancel\n"); @@ -604,11 +603,11 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf) RETURN(-EALREADY); MOD_INC_USE_COUNT; - /* + rc = ldlm_proc_setup(obddev); if (rc != 0) GOTO(out_dec, rc); - */ + ldlm->ldlm_cb_service = ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE, LDLM_MAXREQSIZE, LDLM_CB_REQUEST_PORTAL, @@ -620,8 +619,7 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf) ldlm->ldlm_cancel_service = ptlrpc_init_svc(LDLM_NEVENTS, LDLM_NBUFS, LDLM_BUFSIZE, - LDLM_MAXREQSIZE, - LDLM_CANCEL_REQUEST_PORTAL, + LDLM_MAXREQSIZE, LDLM_CANCEL_REQUEST_PORTAL, LDLM_CANCEL_REPLY_PORTAL, "self", ldlm_cancel_handler, "ldlm_canceld"); @@ -631,7 +629,8 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf) for (i = 0; i < LDLM_NUM_THREADS; i++) { char name[32]; sprintf(name, "lustre_dlm_%02d", i); - rc = ptlrpc_start_thread(obddev, ldlm->ldlm_cancel_service, name); + rc = ptlrpc_start_thread(obddev, ldlm->ldlm_cancel_service, + name); if (rc) { CERROR("cannot start LDLM thread #%d: rc %d\n", i, rc); LBUG(); @@ -665,11 +664,11 @@ static int ldlm_setup(struct obd_device *obddev, obd_count len, void *buf) ptlrpc_unregister_service(ldlm->ldlm_cancel_service); ptlrpc_stop_all_threads(ldlm->ldlm_cb_service); ptlrpc_unregister_service(ldlm->ldlm_cb_service); - /* + out_proc: ldlm_proc_cleanup(obddev); - */ + out_dec: MOD_DEC_USE_COUNT; return rc; @@ -689,7 +688,7 @@ static int ldlm_cleanup(struct obd_device *obddev) ptlrpc_unregister_service(ldlm->ldlm_cb_service); ptlrpc_stop_all_threads(ldlm->ldlm_cancel_service); ptlrpc_unregister_service(ldlm->ldlm_cancel_service); - /* ldlm_proc_cleanup(obddev); */ + ldlm_proc_cleanup(obddev); ldlm_already_setup = 0; MOD_DEC_USE_COUNT; diff --git a/lustre/ldlm/ldlm_resource.c b/lustre/ldlm/ldlm_resource.c index 0bb0df9..8b850df 100644 --- a/lustre/ldlm/ldlm_resource.c +++ b/lustre/ldlm/ldlm_resource.c @@ -19,17 +19,17 @@ kmem_cache_t *ldlm_resource_slab, *ldlm_lock_slab; spinlock_t ldlm_namespace_lock = SPIN_LOCK_UNLOCKED; struct list_head ldlm_namespace_list = LIST_HEAD_INIT(ldlm_namespace_list); static struct proc_dir_entry *ldlm_ns_proc_dir = NULL; +extern struct proc_dir_entry proc_root; int ldlm_proc_setup(struct obd_device *obd) { ENTRY; - if (obd->obd_proc_entry == NULL) - RETURN(-EINVAL); + LASSERT(ldlm_ns_proc_dir == NULL); - ldlm_ns_proc_dir = proc_mkdir("namespaces", obd->obd_proc_entry); + ldlm_ns_proc_dir = proc_mkdir("ldlm", &proc_root); if (ldlm_ns_proc_dir == NULL) { - CERROR("Couldn't create /proc/lustre/ldlm/namespaces\n"); + CERROR("Couldn't create /proc/ldlm\n"); RETURN(-EPERM); } RETURN(0); @@ -37,12 +37,11 @@ int ldlm_proc_setup(struct obd_device *obd) void ldlm_proc_cleanup(struct obd_device *obd) { - proc_lustre_remove_obd_entry("namespaces", obd); + remove_proc_entry("ldlm", &proc_root); } -#if 0 /* FIXME: This can go away when we start to really use lprocfs */ -static int lprocfs_ll_rd(char *page, char **start, off_t off, +static int ldlm_proc_ll_rd(char *page, char **start, off_t off, int count, int *eof, void *data) { int len; @@ -52,7 +51,6 @@ static int lprocfs_ll_rd(char *page, char **start, off_t off, return len; } -#endif struct ldlm_namespace *ldlm_namespace_new(char *name, __u32 client) { @@ -100,10 +98,10 @@ struct ldlm_namespace *ldlm_namespace_new(char *name, __u32 client) if (ns->ns_proc_dir == NULL) CERROR("Unable to create proc directory for namespace.\n"); proc_entry = create_proc_entry("resource_count", 0444, ns->ns_proc_dir); - proc_entry->read_proc = lprocfs_ll_rd; + proc_entry->read_proc = ldlm_proc_ll_rd; proc_entry->data = &ns->ns_resources; proc_entry = create_proc_entry("lock_count", 0444, ns->ns_proc_dir); - proc_entry->read_proc = lprocfs_ll_rd; + proc_entry->read_proc = ldlm_proc_ll_rd; proc_entry->data = &ns->ns_locks; RETURN(ns); diff --git a/lustre/lib/client.c b/lustre/lib/client.c index 8d5ae5f..1f596e8 100644 --- a/lustre/lib/client.c +++ b/lustre/lib/client.c @@ -90,10 +90,8 @@ int client_obd_setup(struct obd_device *obddev, obd_count len, void *buf) RETURN(-ENOENT); ptlrpc_init_client(rq_portal, rp_portal, name, - &obddev->obd_ldlm_cb_client); - ptlrpc_init_client(rq_portal, rp_portal, name, - &obddev->obd_ldlm_cancel_client); - cli->cl_import.imp_client = &obddev->obd_ldlm_cb_client; + &obddev->obd_ldlm_client); + cli->cl_import.imp_client = &obddev->obd_ldlm_client; cli->cl_import.imp_obd = obddev; cli->cl_max_mds_easize = sizeof(struct lov_mds_md); diff --git a/lustre/lib/target.c b/lustre/lib/target.c index 51cf000..8786ee8 100644 --- a/lustre/lib/target.c +++ b/lustre/lib/target.c @@ -95,7 +95,7 @@ int target_handle_connect(struct ptlrpc_request *req) dlmimp = &export->exp_ldlm_data.led_import; dlmimp->imp_connection = req->rq_connection; - dlmimp->imp_client = &export->exp_obd->obd_ldlm_cb_client; + dlmimp->imp_client = &export->exp_obd->obd_ldlm_client; dlmimp->imp_handle.addr = req->rq_reqmsg->addr; dlmimp->imp_handle.cookie = req->rq_reqmsg->cookie; dlmimp->imp_obd = /* LDLM! */ NULL; diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 80b850a..e33f1b9 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -383,7 +383,7 @@ static int mds_disconnect(struct lustre_handle *conn) */ spin_lock(&med->med_open_lock); list_for_each_safe(tmp, n, &med->med_open_head) { - struct mds_file_data *mfd = + struct mds_file_data *mfd = list_entry(tmp, struct mds_file_data, mfd_list); rc = mds_close_mfd(mfd, med); if (rc) { @@ -1247,13 +1247,8 @@ static int mds_setup(struct obd_device *obddev, obd_count len, void *buf) if (rc) GOTO(err_fs, rc); - ptlrpc_init_client(LDLM_CANCEL_REQUEST_PORTAL, - LDLM_CANCEL_REPLY_PORTAL, - "mds_ldlm_client", &obddev->obd_ldlm_cancel_client); - - ptlrpc_init_client(LDLM_CB_REQUEST_PORTAL, - LDLM_CB_REPLY_PORTAL, - "mds_ldlm_client", &obddev->obd_ldlm_cb_client); + ptlrpc_init_client(LDLM_CB_REQUEST_PORTAL, LDLM_CB_REPLY_PORTAL, + "mds_ldlm_client", &obddev->obd_ldlm_client); RETURN(0); @@ -1457,13 +1452,13 @@ static int ldlm_intent_policy(struct ldlm_lock *lock, void *req_cookie, RETURN(rc); } -int mds_attach(struct obd_device *dev, +int mds_attach(struct obd_device *dev, obd_count len, void *data) { int rc; - rc = lprocfs_reg_obd(dev, (struct lprocfs_vars*)status_var_nm_1, + rc = lprocfs_reg_obd(dev, (struct lprocfs_vars*)status_var_nm_1, (void*)dev); - return rc; + return rc; } int mds_detach(struct obd_device *dev) @@ -1549,34 +1544,34 @@ static struct obd_ops mdt_obd_ops = { static int __init mds_init(void) { - + mds_file_cache = kmem_cache_create("ll_mds_file_data", sizeof(struct mds_file_data), 0, 0, NULL, NULL); if (mds_file_cache == NULL) return -ENOMEM; - class_register_type(&mds_obd_ops, - (struct lprocfs_vars*)status_class_var, + class_register_type(&mds_obd_ops, + (struct lprocfs_vars*)status_class_var, LUSTRE_MDS_NAME); class_register_type(&mdt_obd_ops, 0, LUSTRE_MDT_NAME); ldlm_register_intent(ldlm_intent_policy); - + return 0; - + } static void __exit mds_exit(void) { - - + + ldlm_unregister_intent(); class_unregister_type(LUSTRE_MDS_NAME); class_unregister_type(LUSTRE_MDT_NAME); if (kmem_cache_destroy(mds_file_cache)) CERROR("couldn't free MDS file cache\n"); - + } MODULE_AUTHOR("Cluster File Systems "); diff --git a/lustre/obdfilter/filter.c b/lustre/obdfilter/filter.c index d0d4b72..d31e175 100644 --- a/lustre/obdfilter/filter.c +++ b/lustre/obdfilter/filter.c @@ -585,9 +585,7 @@ static int filter_setup(struct obd_device *obd, obd_count len, void *buf) LBUG(); ptlrpc_init_client(LDLM_CB_REQUEST_PORTAL, LDLM_CB_REPLY_PORTAL, - "filter_ldlm_cb_client", &obd->obd_ldlm_cb_client); - ptlrpc_init_client(LDLM_CANCEL_REQUEST_PORTAL, LDLM_CANCEL_REPLY_PORTAL, - "filter_ldlm_cancel_client", &obd->obd_ldlm_cancel_client); + "filter_ldlm_cb_client", &obd->obd_ldlm_client); RETURN(0); -- 1.8.3.1