Whamcloud - gitweb
LU-3828 mdt: hsm tunable can be set permanently
[fs/lustre-release.git] / lustre / mdt / mdt_lproc.c
index d0baefe..6953802 100644 (file)
@@ -59,7 +59,6 @@
 #include <obd.h>
 #include <obd_class.h>
 #include <lustre_mds.h>
-#include <lustre_mdt.h>
 #include <lprocfs_status.h>
 #include "mdt_internal.h"
 #include <lnet/lib-lnet.h>
@@ -226,7 +225,14 @@ int mdt_procfs_init(struct mdt_device *mdt, const char *name)
        lprocfs_mdt_init_vars(&lvars);
        rc = lprocfs_obd_setup(obd, lvars.obd_vars);
        if (rc) {
-               CERROR("Can't init lprocfs, rc %d\n", rc);
+               CERROR("%s: cannot create proc entries: rc = %d\n",
+                      mdt_obd_name(mdt), rc);
+               return rc;
+       }
+       rc = hsm_cdt_procfs_init(mdt);
+       if (rc) {
+               CERROR("%s: cannot create hsm proc entries: rc = %d\n",
+                      mdt_obd_name(mdt), rc);
                return rc;
        }
        ptlrpc_lprocfs_register_obd(obd);
@@ -240,7 +246,7 @@ int mdt_procfs_init(struct mdt_device *mdt, const char *name)
        rc = lprocfs_alloc_md_stats(obd, LPROC_MDT_LAST);
        if (rc)
                return rc;
-       mdt_stats_counter_init(obd->md_stats);
+       mdt_stats_counter_init(obd->obd_md_stats);
 
        rc = lprocfs_job_stats_init(obd, LPROC_MDT_LAST,
                                    mdt_stats_counter_init);
@@ -257,15 +263,16 @@ void mdt_procfs_fini(struct mdt_device *mdt)
 {
        struct obd_device *obd = mdt2obd_dev(mdt);
 
-        if (obd->obd_proc_exports_entry) {
-                lprocfs_remove_proc_entry("clear", obd->obd_proc_exports_entry);
-                obd->obd_proc_exports_entry = NULL;
-        }
-        lprocfs_free_per_client_stats(obd);
-        lprocfs_obd_cleanup(obd);
-        ptlrpc_lprocfs_unregister_obd(obd);
-        lprocfs_free_md_stats(obd);
-        lprocfs_free_obd_stats(obd);
+       if (obd->obd_proc_exports_entry) {
+               lprocfs_remove_proc_entry("clear", obd->obd_proc_exports_entry);
+               obd->obd_proc_exports_entry = NULL;
+       }
+       lprocfs_free_per_client_stats(obd);
+       lprocfs_obd_cleanup(obd);
+       hsm_cdt_procfs_fini(mdt);
+       ptlrpc_lprocfs_unregister_obd(obd);
+       lprocfs_free_md_stats(obd);
+       lprocfs_free_obd_stats(obd);
        lprocfs_job_stats_fini(obd);
 }
 
@@ -915,7 +922,7 @@ static int lprocfs_wr_enable_remote_dir(struct file *file, const char *buffer,
        if (rc)
                return rc;
 
-       if (val < 0 || val > 1)
+       if (val > 1)
                return -ERANGE;
 
        mdt->mdt_enable_remote_dir = val;
@@ -950,50 +957,79 @@ static int lprocfs_wr_enable_remote_dir_gid(struct file *file,
 }
 
 static struct lprocfs_vars lprocfs_mdt_obd_vars[] = {
-        { "uuid",                       lprocfs_rd_uuid,                 0, 0 },
-        { "recovery_status",            lprocfs_obd_rd_recovery_status,  0, 0 },
-        { "num_exports",                lprocfs_rd_num_exports,          0, 0 },
-        { "identity_expire",            lprocfs_rd_identity_expire,
-                                        lprocfs_wr_identity_expire,         0 },
-        { "identity_acquire_expire",    lprocfs_rd_identity_acquire_expire,
-                                        lprocfs_wr_identity_acquire_expire, 0 },
-        { "identity_upcall",            lprocfs_rd_identity_upcall,
-                                        lprocfs_wr_identity_upcall,         0 },
-        { "identity_flush",             0, lprocfs_wr_identity_flush,       0 },
-        { "identity_info",              0, lprocfs_wr_identity_info,        0 },
-        { "capa",                       lprocfs_rd_capa,
-                                        lprocfs_wr_capa,                    0 },
-        { "capa_timeout",               lprocfs_rd_capa_timeout,
-                                        lprocfs_wr_capa_timeout,            0 },
-        { "capa_key_timeout",           lprocfs_rd_ck_timeout,
-                                        lprocfs_wr_ck_timeout,              0 },
-        { "capa_count",                 lprocfs_rd_capa_count,           0, 0 },
-        { "site_stats",                 lprocfs_rd_site_stats,           0, 0 },
-        { "evict_client",               0, lprocfs_mdt_wr_evict_client,     0 },
-        { "hash_stats",                 lprocfs_obd_rd_hash,    0, 0 },
-        { "sec_level",                  lprocfs_rd_sec_level,
-                                        lprocfs_wr_sec_level,               0 },
-        { "commit_on_sharing",          lprocfs_rd_cos, lprocfs_wr_cos, 0 },
-        { "root_squash",                lprocfs_rd_root_squash,
-                                        lprocfs_wr_root_squash,             0 },
-        { "nosquash_nids",              lprocfs_rd_nosquash_nids,
-                                        lprocfs_wr_nosquash_nids,           0 },
-        { "som",                        lprocfs_rd_mdt_som,
-                                        lprocfs_wr_mdt_som, 0 },
-        { "instance",                   lprocfs_target_rd_instance,         0 },
-        { "ir_factor",                  lprocfs_obd_rd_ir_factor,
-                                        lprocfs_obd_wr_ir_factor,           0 },
+       { "uuid",                       lprocfs_rd_uuid, NULL,
+                                       NULL, NULL, 0 },
+       { "recovery_status",            lprocfs_obd_rd_recovery_status, NULL,
+                                       NULL, NULL, 0 },
+       { "num_exports",                lprocfs_rd_num_exports, NULL,
+                                       NULL, NULL, 0 },
+       { "identity_expire",            lprocfs_rd_identity_expire,
+                                       lprocfs_wr_identity_expire,
+                                       NULL, NULL, 0 },
+       { "identity_acquire_expire",    lprocfs_rd_identity_acquire_expire,
+                                       lprocfs_wr_identity_acquire_expire,
+                                       NULL, NULL, 0 },
+       { "identity_upcall",            lprocfs_rd_identity_upcall,
+                                       lprocfs_wr_identity_upcall,
+                                       NULL, NULL, 0 },
+       { "identity_flush",             NULL, lprocfs_wr_identity_flush,
+                                       NULL, NULL, 0 },
+       { "identity_info",              NULL, lprocfs_wr_identity_info,
+                                       NULL, NULL, 0 },
+       { "capa",                       lprocfs_rd_capa,
+                                       lprocfs_wr_capa,
+                                       NULL, NULL, 0 },
+       { "capa_timeout",               lprocfs_rd_capa_timeout,
+                                       lprocfs_wr_capa_timeout,
+                                       NULL, NULL, 0 },
+       { "capa_key_timeout",           lprocfs_rd_ck_timeout,
+                                       lprocfs_wr_ck_timeout,
+                                       NULL, NULL, 0 },
+       { "capa_count",                 lprocfs_rd_capa_count, NULL,
+                                       NULL, NULL, 0 },
+       { "site_stats",                 lprocfs_rd_site_stats, NULL,
+                                       NULL, NULL, 0 },
+       { "evict_client",               NULL, lprocfs_mdt_wr_evict_client,
+                                       NULL, NULL, 0 },
+       { "hash_stats",                 lprocfs_obd_rd_hash, NULL,
+                                       NULL, NULL, 0 },
+       { "sec_level",                  lprocfs_rd_sec_level,
+                                       lprocfs_wr_sec_level,
+                                       NULL, NULL, 0 },
+       { "commit_on_sharing",          lprocfs_rd_cos, lprocfs_wr_cos,
+                                       NULL, NULL, 0 },
+       { "root_squash",                lprocfs_rd_root_squash,
+                                       lprocfs_wr_root_squash,
+                                       NULL, NULL, 0 },
+       { "nosquash_nids",              lprocfs_rd_nosquash_nids,
+                                       lprocfs_wr_nosquash_nids,
+                                       NULL, NULL, 0 },
+       { "som",                        lprocfs_rd_mdt_som,
+                                       lprocfs_wr_mdt_som,
+                                       NULL, NULL, 0 },
+       { "instance",                   lprocfs_target_rd_instance, NULL,
+                                       NULL, NULL, 0},
+       { "ir_factor",                  lprocfs_obd_rd_ir_factor,
+                                       lprocfs_obd_wr_ir_factor,
+                                       NULL, NULL, 0 },
        { "job_cleanup_interval",       lprocfs_rd_job_interval,
-                                       lprocfs_wr_job_interval, 0 },
+                                       lprocfs_wr_job_interval,
+                                       NULL, NULL, 0 },
        { "enable_remote_dir",          lprocfs_rd_enable_remote_dir,
-                                       lprocfs_wr_enable_remote_dir,       0},
+                                       lprocfs_wr_enable_remote_dir,
+                                       NULL, NULL, 0},
        { "enable_remote_dir_gid",      lprocfs_rd_enable_remote_dir_gid,
-                                       lprocfs_wr_enable_remote_dir_gid,   0},
+                                       lprocfs_wr_enable_remote_dir_gid,
+                                       NULL, NULL, 0},
+       { "hsm_control",                lprocfs_rd_hsm_cdt_control,
+                                       lprocfs_wr_hsm_cdt_control,
+                                       NULL, NULL, 0 },
        { 0 }
 };
 
 static struct lprocfs_vars lprocfs_mdt_module_vars[] = {
-        { "num_refs",                   lprocfs_rd_numrefs,              0, 0 },
+       { "num_refs",                   lprocfs_rd_numrefs, NULL,
+                                       NULL, NULL, 0 },
         { 0 }
 };
 
@@ -1004,12 +1040,12 @@ void lprocfs_mdt_init_vars(struct lprocfs_static_vars *lvars)
 }
 
 struct lprocfs_vars lprocfs_mds_obd_vars[] = {
-       { "uuid",        lprocfs_rd_uuid,       0, 0 },
+       { "uuid",       lprocfs_rd_uuid, NULL, NULL, NULL, 0 },
        { 0 }
 };
 
 struct lprocfs_vars lprocfs_mds_module_vars[] = {
-       { "num_refs",     lprocfs_rd_numrefs,     0, 0 },
+       { "num_refs",   lprocfs_rd_numrefs, NULL, NULL, NULL, 0 },
        { 0 }
 };
 
@@ -1017,8 +1053,8 @@ void mdt_counter_incr(struct ptlrpc_request *req, int opcode)
 {
        struct obd_export *exp = req->rq_export;
 
-       if (exp->exp_obd && exp->exp_obd->md_stats)
-               lprocfs_counter_incr(exp->exp_obd->md_stats, opcode);
+       if (exp->exp_obd && exp->exp_obd->obd_md_stats)
+               lprocfs_counter_incr(exp->exp_obd->obd_md_stats, 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 &&