#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
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 {
-
-
/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
* vim:expandtab:shiftwidth=8:tabstop=8:
*
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;
}
switch (req->rq_reqmsg->opc) {
-
+
/* XXX FIXME move this back to mds/handler.c, bug 625069 */
case LDLM_CANCEL:
CDEBUG(D_INODE, "cancel\n");
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,
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");
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();
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;
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;
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);
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;
return len;
}
-#endif
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);
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);
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;
*/
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) {
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);
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)
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 <info@clusterfs.com>");
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);