X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fmdt%2Fmdt_fs.c;h=f9cf90e7fd30c6a016bd74c7a4b0909d4cee3de8;hb=18667c0697276c0038f0237a9444cbb132d30fbd;hp=acdd86ff80a08f3894e5c35ed93c6e9ad84b7ffb;hpb=08aa217ce49aba1ded52e0f7adb8a607035123fd;p=fs%2Flustre-release.git diff --git a/lustre/mdt/mdt_fs.c b/lustre/mdt/mdt_fs.c index acdd86f..f9cf90e 100644 --- a/lustre/mdt/mdt_fs.c +++ b/lustre/mdt/mdt_fs.c @@ -42,6 +42,14 @@ #include "mdt_internal.h" +static const struct file_operations mdt_open_files_seq_fops = { + .owner = THIS_MODULE, + .open = lprocfs_mdt_open_files_seq_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + int mdt_export_stats_init(struct obd_device *obd, struct obd_export *exp, void *localdata) @@ -50,6 +58,8 @@ int mdt_export_stats_init(struct obd_device *obd, int rc, newnid; ENTRY; + LASSERT(!obd->obd_uses_nid_stats); + rc = lprocfs_exp_setup(exp, client_nid, &newnid); if (rc) { /* Mask error for already created @@ -60,15 +70,11 @@ int mdt_export_stats_init(struct obd_device *obd, } if (newnid) { struct nid_stat *tmp = exp->exp_nid_stats; - int num_stats; - num_stats = (sizeof(*obd->obd_type->typ_md_ops) / sizeof(void *)) + - LPROC_MDT_LAST; - tmp->nid_stats = lprocfs_alloc_stats(num_stats, - LPROCFS_STATS_FLAG_NOPERCPU); - if (tmp->nid_stats == NULL) - return -ENOMEM; - lprocfs_init_mps_stats(LPROC_MDT_LAST, tmp->nid_stats); + tmp->nid_stats = lprocfs_alloc_stats(LPROC_MDT_LAST, + LPROCFS_STATS_FLAG_NOPERCPU); + if (tmp->nid_stats == NULL) + RETURN(-ENOMEM); mdt_stats_counter_init(tmp->nid_stats); rc = lprocfs_register_stats(tmp->nid_proc, "stats", tmp->nid_stats); @@ -77,7 +83,15 @@ int mdt_export_stats_init(struct obd_device *obd, rc = lprocfs_nid_ldlm_stats_init(tmp); if (rc) GOTO(clean, rc); - } + + rc = lprocfs_seq_create(tmp->nid_proc, "open_files", + 0444, &mdt_open_files_seq_fops, tmp); + if (rc) { + CWARN("%s: error adding the open_files file: rc = %d\n", + obd->obd_name, rc); + GOTO(clean, rc); + } + } RETURN(0); clean: return rc;