X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmdt%2Fmdt_lproc.c;h=e9163ccfc9d286e104a39d50bc73deeaf12141cd;hb=ef3da124b5d4d170819b4253525e5e93ecb2e85b;hp=7f281a6562f242c5ae6e7c50e274bdc8b566f74f;hpb=08aa217ce49aba1ded52e0f7adb8a607035123fd;p=fs%2Flustre-release.git diff --git a/lustre/mdt/mdt_lproc.c b/lustre/mdt/mdt_lproc.c index 7f281a6..e9163cc 100644 --- a/lustre/mdt/mdt_lproc.c +++ b/lustre/mdt/mdt_lproc.c @@ -61,16 +61,9 @@ #include #include #include -#include #include "mdt_internal.h" #include -enum { - LPROC_MDT_NR -}; -static const char *mdt_proc_names[LPROC_MDT_NR] = { -}; - /** * The rename stats output would be YAML formats, like * rename_stats: @@ -176,7 +169,7 @@ static int lproc_mdt_attach_rename_seqstat(struct mdt_device *mdt) for (i = 0; i < RENAME_LAST; i++) spin_lock_init(&mdt->mdt_rename_stats.hist[i].oh_lock); - return lprocfs_obd_seq_create(obd, "rename_stats", 0444, + return lprocfs_obd_seq_create(obd, "rename_stats", 0644, &mdt_rename_stats_fops, mdt); } @@ -243,19 +236,6 @@ int mdt_procfs_init(struct mdt_device *mdt, const char *name) } ptlrpc_lprocfs_register_obd(obd); - mdt->mdt_proc_entry = obd->obd_proc_entry; - LASSERT(mdt->mdt_proc_entry != NULL); - - rc = lu_time_init(&mdt->mdt_stats, mdt->mdt_proc_entry, - mdt_proc_names, ARRAY_SIZE(mdt_proc_names)); - if (rc == 0) - rc = lu_time_named_init(&ld->ld_site->ls_time_stats, - "site_time", mdt->mdt_proc_entry, - lu_time_names, - ARRAY_SIZE(lu_time_names)); - if (rc) - return rc; - obd->obd_proc_exports_entry = proc_mkdir("exports", obd->obd_proc_entry); if (obd->obd_proc_exports_entry) @@ -278,13 +258,11 @@ int mdt_procfs_init(struct mdt_device *mdt, const char *name) RETURN(rc); } -int mdt_procfs_fini(struct mdt_device *mdt) +void mdt_procfs_fini(struct mdt_device *mdt) { struct lu_device *ld = &mdt->mdt_md_dev.md_lu_dev; struct obd_device *obd = ld->ld_obd; - lprocfs_job_stats_fini(obd); - if (obd->obd_proc_exports_entry) { lprocfs_remove_proc_entry("clear", obd->obd_proc_exports_entry); obd->obd_proc_exports_entry = NULL; @@ -292,25 +270,9 @@ int mdt_procfs_fini(struct mdt_device *mdt) lprocfs_free_per_client_stats(obd); lprocfs_obd_cleanup(obd); ptlrpc_lprocfs_unregister_obd(obd); - if (mdt->mdt_proc_entry) { - lu_time_fini(&ld->ld_site->ls_time_stats); - lu_time_fini(&mdt->mdt_stats); - mdt->mdt_proc_entry = NULL; - } lprocfs_free_md_stats(obd); lprocfs_free_obd_stats(obd); - - RETURN(0); -} - -void mdt_time_start(const struct mdt_thread_info *info) -{ - lu_lprocfs_time_start(info->mti_env); -} - -void mdt_time_end(const struct mdt_thread_info *info, int idx) -{ - lu_lprocfs_time_end(info->mti_env, info->mti_mdt->mdt_stats, idx); + lprocfs_job_stats_fini(obd); } static int lprocfs_rd_identity_expire(char *page, char **start, off_t off, @@ -920,8 +882,8 @@ static int lprocfs_wr_mdt_som(struct file *file, const char *buffer, cfs_list_for_each_entry(exp, &obd->obd_exports, exp_obd_chain) { if (exp == obd->obd_self_export) continue; - if (exp->exp_connect_flags & OBD_CONNECT_MDS_MDS) - continue; + if (exp_connect_flags(exp) & OBD_CONNECT_MDS_MDS) + continue; /* Some clients are already connected, skip the change */ LCONSOLE_INFO("%s is already connected, SOM will be %s on " "the next mount\n", exp->exp_client_uuid.uuid, @@ -983,6 +945,61 @@ out: return count; } +static int lprocfs_rd_enable_remote_dir(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = data; + struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev); + + return snprintf(page, count, "%u\n", mdt->mdt_enable_remote_dir); +} + +static int lprocfs_wr_enable_remote_dir(struct file *file, const char *buffer, + unsigned long count, void *data) +{ + struct obd_device *obd = data; + struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev); + __u32 val; + int rc; + + rc = lprocfs_write_helper(buffer, count, &val); + if (rc) + return rc; + + if (val < 0 || val > 1) + return -ERANGE; + + mdt->mdt_enable_remote_dir = val; + return count; +} + +static int lprocfs_rd_enable_remote_dir_gid(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + struct obd_device *obd = data; + struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev); + + return snprintf(page, count, "%d\n", + (int)mdt->mdt_enable_remote_dir_gid); +} + +static int lprocfs_wr_enable_remote_dir_gid(struct file *file, + const char *buffer, + unsigned long count, void *data) +{ + struct obd_device *obd = data; + struct mdt_device *mdt = mdt_dev(obd->obd_lu_dev); + __u32 val; + int rc; + + rc = lprocfs_write_helper(buffer, count, &val); + if (rc) + return rc; + + mdt->mdt_enable_remote_dir_gid = val; + return count; +} + static struct lprocfs_vars lprocfs_mdt_obd_vars[] = { { "uuid", lprocfs_rd_uuid, 0, 0 }, { "recovery_status", lprocfs_obd_rd_recovery_status, 0, 0 }, @@ -1020,7 +1037,11 @@ static struct lprocfs_vars lprocfs_mdt_obd_vars[] = { lprocfs_obd_wr_ir_factor, 0 }, { "job_cleanup_interval", lprocfs_rd_job_interval, lprocfs_wr_job_interval, 0 }, - { 0 } + { "enable_remote_dir", lprocfs_rd_enable_remote_dir, + lprocfs_wr_enable_remote_dir, 0}, + { "enable_remote_dir_gid", lprocfs_rd_enable_remote_dir_gid, + lprocfs_wr_enable_remote_dir_gid, 0}, + { 0 } }; static struct lprocfs_vars lprocfs_mdt_module_vars[] = { @@ -1053,7 +1074,7 @@ void mdt_counter_incr(struct ptlrpc_request *req, int opcode) if (exp->exp_nid_stats && exp->exp_nid_stats->nid_stats != NULL) lprocfs_counter_incr(exp->exp_nid_stats->nid_stats, opcode); if (exp->exp_obd && exp->exp_obd->u.obt.obt_jobstats.ojs_hash && - (exp->exp_connect_flags & OBD_CONNECT_JOBSTATS)) + (exp_connect_flags(exp) & OBD_CONNECT_JOBSTATS)) lprocfs_job_stats_log(exp->exp_obd, lustre_msg_get_jobid(req->rq_reqmsg), opcode, 1);