* GPL HEADER END
*/
/*
- * Copyright (c) 2012 Intel, Inc.
+ * Copyright (c) 2011, 2013, Intel Corporation.
* Use is subject to license terms.
*
* Author: Johann Lombardi <johann.lombardi@intel.com>
#include <lprocfs_status.h>
#include <obd.h>
#include <linux/seq_file.h>
-#include <lustre_fsfilt.h>
-
#include "lquota_internal.h"
-#ifdef LPROCFS
+#ifdef CONFIG_PROC_FS
/* structure allocated at seq_open time and release when seq_release is called.
* It is passed to seq_start/stop/next/show which can thus use the same lu_env
* to be used with the iterator API */
/* initialize iterator */
iops = &lqp->lqp_obj->do_index_ops->dio_it;
- it = iops->init(&lqp->lqp_env, lqp->lqp_obj, 0, BYPASS_CAPA);
+ it = iops->init(&lqp->lqp_env, lqp->lqp_obj, 0);
if (IS_ERR(it)) {
CERROR("%s: failed to initialize iterator: rc = %ld\n",
lqp->lqp_obj->do_lu.lo_dev->ld_obd->obd_name,
seq_printf(p, "global_pool%d_%s_%s\n", poolid,
RES_NAME(rtype), QTYPE_NAME(qtype));
+ } else if (fid_seq(fid) == FID_SEQ_LOCAL_NAME) {
+ /* global index copy object */
+ seq_printf(p, "global_index_copy:\n");
} else {
return -ENOTSUPP;
}
"u }\n", "usage:",
((struct lquota_acct_rec *)rec)->ispace,
toqb(((struct lquota_acct_rec *)rec)->bspace));
- else if (fid_seq(fid) == FID_SEQ_QUOTA_GLB)
+ else if (fid_seq(fid) == FID_SEQ_QUOTA_GLB ||
+ fid_seq(fid) == FID_SEQ_LOCAL_NAME)
seq_printf(p, " %-8s { hard: %20"LPF64"u, soft: %20"LPF64
"u, granted: %20"LPF64"u, time: %20"LPF64"u }\n",
"limits:",
static int lprocfs_quota_seq_open(struct inode *inode, struct file *file)
{
- struct proc_dir_entry *dp = PDE(inode);
struct seq_file *seq;
int rc;
struct lquota_procfs *lqp;
return -ENOMEM;
/* store pointer to object we would like to iterate over */
- lqp->lqp_obj = (struct dt_object *)dp->data;
+ lqp->lqp_obj = (struct dt_object *)PDE_DATA(inode);
/* Initialize the common environment to be used in the seq operations */
rc = lu_env_init(&lqp->lqp_env, LCT_LOCAL);
if (rc) {
+ char *obd_name = "quota";
+
+ if (lqp->lqp_obj != NULL)
+ obd_name = lqp->lqp_obj->do_lu.lo_dev->ld_obd->obd_name;
+
CERROR("%s: error initializing procfs quota env: rc = %d\n",
- lqp->lqp_obj->do_lu.lo_dev->ld_obd->obd_name, rc);
+ obd_name, rc);
goto out_lqp;
}
- if (LPROCFS_ENTRY_AND_CHECK(dp)) {
- rc = -ENOENT;
+ rc = LPROCFS_ENTRY_CHECK(inode);
+ if (rc < 0)
goto out_env;
- }
rc = seq_open(file, &lprocfs_quota_seq_sops);
if (rc)
- goto out_lprocfs;
+ goto out_env;
seq = file->private_data;
seq->private = lqp;
return 0;
-out_lprocfs:
- LPROCFS_EXIT();
out_env:
lu_env_fini(&lqp->lqp_env);
out_lqp:
struct seq_file *seq = file->private_data;
struct lquota_procfs *lqp = seq->private;
- LPROCFS_EXIT();
-
LASSERT(lqp);
lu_env_fini(&lqp->lqp_env);
OBD_FREE_PTR(lqp);
.llseek = seq_lseek,
.release = lprocfs_quota_seq_release,
};
-#endif /* LPROCFS */
+#endif /* CONFIG_PROC_FS */