X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ffid%2Ffid_request.c;h=93f6402a122325dad02077503feaf3ac4a7fe118;hb=f843facff59226d3788d855d1d6948523ab8d944;hp=2f45cafed665055e075e17d8db2b1cfbe35631da;hpb=cda0a8abf5bbfe0f3fc12454c1d3d8efdcbda17c;p=fs%2Flustre-release.git diff --git a/lustre/fid/fid_request.c b/lustre/fid/fid_request.c index 2f45caf..93f6402 100644 --- a/lustre/fid/fid_request.c +++ b/lustre/fid/fid_request.c @@ -38,6 +38,7 @@ #define DEBUG_SUBSYSTEM S_FID +#include #include #include #include @@ -47,6 +48,8 @@ #include #include "fid_internal.h" +struct dentry *seq_debugfs_dir; + static int seq_client_rpc(struct lu_client_seq *seq, struct lu_seq_range *output, __u32 opc, const char *opcname) @@ -245,7 +248,7 @@ static int seq_client_alloc_seq(const struct lu_env *env, } static int seq_fid_alloc_prep(struct lu_client_seq *seq, - wait_queue_t *link) + wait_queue_entry_t *link) { if (seq->lcs_update) { add_wait_queue(&seq->lcs_waitq, link); @@ -308,7 +311,7 @@ static void seq_fid_alloc_fini(struct lu_client_seq *seq, __u64 seqnr, int seq_client_get_seq(const struct lu_env *env, struct lu_client_seq *seq, u64 *seqnr) { - wait_queue_t link; + wait_queue_entry_t link; int rc; LASSERT(seqnr != NULL); @@ -345,7 +348,7 @@ EXPORT_SYMBOL(seq_client_get_seq); int seq_client_alloc_fid(const struct lu_env *env, struct lu_client_seq *seq, struct lu_fid *fid) { - wait_queue_t link; + wait_queue_entry_t link; int rc; ENTRY; @@ -406,7 +409,7 @@ EXPORT_SYMBOL(seq_client_alloc_fid); */ void seq_client_flush(struct lu_client_seq *seq) { - wait_queue_t link; + wait_queue_entry_t link; LASSERT(seq != NULL); init_waitqueue_entry(&link, current); @@ -437,51 +440,57 @@ void seq_client_flush(struct lu_client_seq *seq) } EXPORT_SYMBOL(seq_client_flush); -static void seq_client_proc_fini(struct lu_client_seq *seq) +static void seq_client_debugfs_fini(struct lu_client_seq *seq) { -#ifdef CONFIG_PROC_FS - ENTRY; - if (seq->lcs_proc_dir) { - if (!IS_ERR(seq->lcs_proc_dir)) - lprocfs_remove(&seq->lcs_proc_dir); - seq->lcs_proc_dir = NULL; - } - EXIT; -#endif /* CONFIG_PROC_FS */ + if (!IS_ERR_OR_NULL(seq->lcs_debugfs_entry)) + ldebugfs_remove(&seq->lcs_debugfs_entry); } -static int seq_client_proc_init(struct lu_client_seq *seq) +static int seq_client_debugfs_init(struct lu_client_seq *seq) { -#ifdef CONFIG_PROC_FS int rc; - ENTRY; - seq->lcs_proc_dir = lprocfs_register(seq->lcs_name, seq_type_proc_dir, - NULL, NULL); - if (IS_ERR(seq->lcs_proc_dir)) { - CERROR("%s: LProcFS failed in seq-init\n", - seq->lcs_name); - rc = PTR_ERR(seq->lcs_proc_dir); - RETURN(rc); + seq->lcs_debugfs_entry = ldebugfs_register(seq->lcs_name, + seq_debugfs_dir, + NULL, NULL); + if (IS_ERR_OR_NULL(seq->lcs_debugfs_entry)) { + CERROR("%s: LdebugFS failed in seq-init\n", seq->lcs_name); + rc = seq->lcs_debugfs_entry ? PTR_ERR(seq->lcs_debugfs_entry) + : -ENOMEM; + seq->lcs_debugfs_entry = NULL; + RETURN(rc); } - rc = lprocfs_add_vars(seq->lcs_proc_dir, seq_client_proc_list, seq); - if (rc) { - CERROR("%s: Can't init sequence manager " - "proc, rc %d\n", seq->lcs_name, rc); + rc = ldebugfs_add_vars(seq->lcs_debugfs_entry, + seq_client_debugfs_list, seq); + if (rc) { + CERROR("%s: Can't init sequence manager debugfs, rc %d\n", + seq->lcs_name, rc); GOTO(out_cleanup, rc); } RETURN(0); out_cleanup: - seq_client_proc_fini(seq); + seq_client_debugfs_fini(seq); return rc; +} -#else /* !CONFIG_PROC_FS */ - return 0; -#endif /* CONFIG_PROC_FS */ +void seq_client_fini(struct lu_client_seq *seq) +{ + ENTRY; + + seq_client_debugfs_fini(seq); + + if (seq->lcs_exp != NULL) { + class_export_put(seq->lcs_exp); + seq->lcs_exp = NULL; + } + + seq->lcs_srv = NULL; + EXIT; } +EXPORT_SYMBOL(seq_client_fini); int seq_client_init(struct lu_client_seq *seq, struct obd_export *exp, @@ -514,29 +523,13 @@ int seq_client_init(struct lu_client_seq *seq, snprintf(seq->lcs_name, sizeof(seq->lcs_name), "cli-%s", prefix); - rc = seq_client_proc_init(seq); + rc = seq_client_debugfs_init(seq); if (rc) seq_client_fini(seq); RETURN(rc); } EXPORT_SYMBOL(seq_client_init); -void seq_client_fini(struct lu_client_seq *seq) -{ - ENTRY; - - seq_client_proc_fini(seq); - - if (seq->lcs_exp != NULL) { - class_export_put(seq->lcs_exp); - seq->lcs_exp = NULL; - } - - seq->lcs_srv = NULL; - EXIT; -} -EXPORT_SYMBOL(seq_client_fini); - int client_fid_init(struct obd_device *obd, struct obd_export *exp, enum lu_cli_type type) { @@ -590,21 +583,18 @@ int client_fid_fini(struct obd_device *obd) } EXPORT_SYMBOL(client_fid_fini); -struct proc_dir_entry *seq_type_proc_dir; - static int __init fid_init(void) { - seq_type_proc_dir = lprocfs_register(LUSTRE_SEQ_NAME, - proc_lustre_root, - NULL, NULL); - if (IS_ERR(seq_type_proc_dir)) - return PTR_ERR(seq_type_proc_dir); +#ifdef HAVE_SERVER_SUPPORT + int rc = fid_server_mod_init(); -# ifdef HAVE_SERVER_SUPPORT - fid_server_mod_init(); -# endif - - return 0; + if (rc) + return rc; +#endif + seq_debugfs_dir = ldebugfs_register(LUSTRE_SEQ_NAME, + debugfs_lustre_root, + NULL, NULL); + return PTR_ERR_OR_ZERO(seq_debugfs_dir); } static void __exit fid_exit(void) @@ -612,11 +602,8 @@ static void __exit fid_exit(void) # ifdef HAVE_SERVER_SUPPORT fid_server_mod_exit(); # endif - - if (seq_type_proc_dir != NULL && !IS_ERR(seq_type_proc_dir)) { - lprocfs_remove(&seq_type_proc_dir); - seq_type_proc_dir = NULL; - } + if (!IS_ERR_OR_NULL(seq_debugfs_dir)) + ldebugfs_remove(&seq_debugfs_dir); } MODULE_AUTHOR("OpenSFS, Inc. ");