spin_lock_init(&mds->mds_transno_lock);
mds->mds_max_mdsize = sizeof(struct lov_mds_md);
mds->mds_max_cookiesize = sizeof(struct llog_cookie);
+ atomic_set(&mds->mds_open_count, 0);
obd->obd_namespace = ldlm_namespace_new("mds_server",
LDLM_NAMESPACE_SERVER);
return snprintf(page, count, "%s\n",obd->u.mds.mds_vfsmnt->mnt_devname);
}
+static int lprocfs_mds_rd_filesopen(char *page, char **start, off_t off,
+ int count, int *eof, void *data)
+{
+ struct obd_device *obd = data;
+ LASSERT(obd != NULL);
+ *eof = 1;
+
+ return snprintf(page, count, "%d\n",
+ atomic_read(&obd->u.mds.mds_open_count));
+}
+
static int lprocfs_mds_rd_recovery_status(char *page, char **start, off_t off,
int count, int *eof, void *data)
{
{ "fstype", lprocfs_rd_fstype, 0, 0 },
{ "filestotal", lprocfs_rd_filestotal, 0, 0 },
{ "filesfree", lprocfs_rd_filesfree, 0, 0 },
+ { "filesopen", lprocfs_mds_rd_filesopen, 0, 0 },
//{ "filegroups", lprocfs_rd_filegroups, 0, 0 },
{ "mntdev", lprocfs_mds_rd_mntdev, 0, 0 },
{ "recovery_status", lprocfs_mds_rd_recovery_status, 0, 0 },
else
ldlm_put_lock_into_req(req, &parent_lockh, parent_mode);
}
+ if (rc == 0)
+ atomic_inc(&mds->mds_open_count);
RETURN(rc);
}
mds_mfd_destroy(mfd);
cleanup:
+ atomic_dec(&mds->mds_open_count);
if (req) {
rc = mds_finish_transno(mds, pending_dir, handle, req, rc, 0);
} else if (handle) {