Whamcloud - gitweb
branch: HEAD
[fs/lustre-release.git] / lustre / mgs / lproc_mgs.c
index d3434bf..b673280 100644 (file)
@@ -88,6 +88,54 @@ static int mgs_fs_seq_show(struct seq_file *seq, void *v)
 
 LPROC_SEQ_FOPS_RO(mgs_fs);
 
+static void seq_show_srpc_rules(struct seq_file *seq, const char *tgtname,
+                                struct sptlrpc_rule_set *rset)
+{
+        struct sptlrpc_rule    *r;
+        char                    dirbuf[10];
+        char                    flvrbuf[40];
+        char                   *net;
+        int                     i;
+
+        for (i = 0; i < rset->srs_nrule; i++) {
+                r = &rset->srs_rules[i];
+
+                if (r->sr_netid == LNET_NIDNET(LNET_NID_ANY))
+                        net = "default";
+                else
+                        net = libcfs_net2str(r->sr_netid);
+
+                if (r->sr_from == LUSTRE_SP_ANY && r->sr_to == LUSTRE_SP_ANY)
+                        dirbuf[0] = '\0';
+                else
+                        snprintf(dirbuf, sizeof(dirbuf), ".%s2%s",
+                                 sptlrpc_part2name(r->sr_from),
+                                 sptlrpc_part2name(r->sr_to));
+
+                sptlrpc_flavor2name(&r->sr_flvr, flvrbuf, sizeof(flvrbuf));
+                seq_printf(seq, "%s.srpc.flavor.%s%s=%s\n", tgtname,
+                           net, dirbuf, flvrbuf);
+        }
+}
+
+static int mgsself_srpc_seq_show(struct seq_file *seq, void *v)
+{
+        struct obd_device *obd = seq->private;
+        struct fs_db      *fsdb;
+        int                rc;
+
+        rc = mgs_find_or_make_fsdb(obd, MGSSELF_NAME, &fsdb);
+        if (rc)
+                return rc;
+
+        down(&fsdb->fsdb_sem);
+        seq_show_srpc_rules(seq, fsdb->fsdb_name, &fsdb->fsdb_srpc_gen);
+        up(&fsdb->fsdb_sem);
+        return 0;
+}
+
+LPROC_SEQ_FOPS_RO(mgsself_srpc);
+
 int lproc_mgs_setup(struct obd_device *obd)
 {
         struct mgs_obd *mgs = &obd->u.mgs;
@@ -95,6 +143,8 @@ int lproc_mgs_setup(struct obd_device *obd)
 
         rc = lprocfs_obd_seq_create(obd, "filesystems", 0444,
                                     &mgs_fs_fops, obd);
+        rc = lprocfs_obd_seq_create(obd, "srpc_rules", 0600,
+                                    &mgsself_srpc_fops, obd);
 
         mgs->mgs_proc_live = lprocfs_register("live", obd->obd_proc_entry,
                                               NULL, NULL);
@@ -136,36 +186,6 @@ int lproc_mgs_cleanup(struct obd_device *obd)
         return lprocfs_obd_cleanup(obd);
 }
 
-static void seq_show_srpc_rule(struct seq_file *seq, const char *tgtname,
-                               struct sptlrpc_rule_set *rset)
-{
-        struct sptlrpc_rule    *r;
-        char                    dirbuf[10];
-        char                    flvrbuf[40];
-        char                   *net;
-        int                     i;
-
-        for (i = 0; i < rset->srs_nrule; i++) {
-                r = &rset->srs_rules[i];
-
-                if (r->sr_netid == LNET_NIDNET(LNET_NID_ANY))
-                        net = "default";
-                else
-                        net = libcfs_net2str(r->sr_netid);
-
-                if (r->sr_from == LUSTRE_SP_ANY && r->sr_to == LUSTRE_SP_ANY)
-                        dirbuf[0] = '\0';
-                else
-                        snprintf(dirbuf, sizeof(dirbuf), ".%s2%s",
-                                 sptlrpc_part2name(r->sr_from),
-                                 sptlrpc_part2name(r->sr_to));
-
-                sptlrpc_flavor2name(&r->sr_flvr, flvrbuf, sizeof(flvrbuf));
-                seq_printf(seq, "%s.srpc.flavor.%s%s=%s\n", tgtname,
-                           net, dirbuf, flvrbuf);
-        }
-}
-
 static int mgs_live_seq_show(struct seq_file *seq, void *v)
 {
         struct fs_db             *fsdb = seq->private;
@@ -191,10 +211,10 @@ static int mgs_live_seq_show(struct seq_file *seq, void *v)
 #endif
         for (srpc_tgt = fsdb->fsdb_srpc_tgt; srpc_tgt;
              srpc_tgt = srpc_tgt->mtsc_next) {
-                seq_show_srpc_rule(seq, srpc_tgt->mtsc_tgt,
-                                   &srpc_tgt->mtsc_rset);
+                seq_show_srpc_rules(seq, srpc_tgt->mtsc_tgt,
+                                    &srpc_tgt->mtsc_rset);
         }
-        seq_show_srpc_rule(seq, fsdb->fsdb_name, &fsdb->fsdb_srpc_gen);
+        seq_show_srpc_rules(seq, fsdb->fsdb_name, &fsdb->fsdb_srpc_gen);
 
         up(&fsdb->fsdb_sem);
         return 0;