#ifdef __KERNEL__
-
/* quota proc file handling functions */
#ifdef LPROCFS
int lprocfs_rd_bunit(char *page, char **start, off_t off, int count,
LASSERT(obd != NULL);
rc = lprocfs_write_helper(buffer, count, &val);
+
if (rc)
return rc;
struct obd_device *obd = (struct obd_device *)data;
int val, rc;
LASSERT(obd != NULL);
-
+
rc = lprocfs_write_helper(buffer, count, &val);
if (rc)
return rc;
-
+
if (val <= MIN_QLIMIT ||
val >= obd->u.obt.obt_qctxt.lqc_iunit_sz)
return -EINVAL;
}
EXPORT_SYMBOL(lprocfs_rd_type);
-static int auto_quota_on(struct obd_device *obd, int type,
+static int auto_quota_on(struct obd_device *obd, int type,
struct super_block *sb, int is_master)
{
struct obd_quotactl *oqctl;
CDEBUG(rc == -ENOENT ? D_QUOTA : D_ERROR,
"auto-enable local quota failed. rc=%d\n", rc);
if (is_master)
- mds_quota_off(obd, oqctl);
+ mds_quota_off(obd, oqctl);
} else {
obd->u.obt.obt_qctxt.lqc_status = 1;
}
RETURN(rc);
}
+
int lprocfs_wr_type(struct file *file, const char *buffer,
unsigned long count, void *data)
{
CERROR("initialize quota context failed! (rc:%d)\n", rc);
RETURN(rc);
}
+
RETURN(rc);
}
oa->o_valid |= (cnt == USRQUOTA) ?
OBD_MD_FLUSRQUOTA : OBD_MD_FLGRPQUOTA;
if (oqctl->qc_dqblk.dqb_bhardlimit &&
- (toqb(oqctl->qc_dqblk.dqb_curspace) >
+ (toqb(oqctl->qc_dqblk.dqb_curspace) >
oqctl->qc_dqblk.dqb_bhardlimit))
- oa->o_flags |= (cnt == USRQUOTA) ?
+ oa->o_flags |= (cnt == USRQUOTA) ?
OBD_FL_NO_USRQUOTA : OBD_FL_NO_GRPQUOTA;
}
OBD_FREE_PTR(oqctl);
RETURN(rc);
}
-static int filter_quota_acquire(struct obd_device *obd, unsigned int uid,
+static int filter_quota_acquire(struct obd_device *obd, unsigned int uid,
unsigned int gid)
{
struct lustre_quota_ctxt *qctxt = &obd->u.obt.obt_qctxt;
RETURN(rc == -EAGAIN);
}
+static int mds_quota_init(void)
+{
+ return lustre_dquot_init();
+}
+
+static int mds_quota_exit(void)
+{
+ lustre_dquot_exit();
+ return 0;
+}
+
/* check whether the left quota of certain uid and uid can satisfy a write rpc
* when need to acquire quota, return QUOTA_RET_ACQUOTA */
static int filter_quota_check(struct obd_device *obd, unsigned int uid,
RETURN(rc);
}
-static int mds_quota_init(void)
-{
- return lustre_dquot_init();
-}
-
-static int mds_quota_exit(void)
-{
- lustre_dquot_exit();
- return 0;
-}
-
static int mds_quota_setup(struct obd_device *obd)
{
struct obd_device_target *obt = &obd->u.obt;
CERROR("initialize quota context failed! (rc:%d)\n", rc);
RETURN(rc);
}
+
RETURN(rc);
}
/* caller must hold qinfo_list_lock */
static inline void insert_qinfo_hash(struct osc_quota_info *oqi)
{
- struct list_head *head = qinfo_hash +
+ struct list_head *head = qinfo_hash +
hashfn(oqi->oqi_cli, oqi->oqi_id, oqi->oqi_type);
LASSERT_SPIN_LOCKED(&qinfo_list_lock);
OBD_SLAB_FREE(oqi, qinfo_cachep, sizeof(*oqi));
}
-int osc_quota_chkdq(struct client_obd *cli,
+int osc_quota_chkdq(struct client_obd *cli,
unsigned int uid, unsigned int gid)
{
unsigned int id;
RETURN(rc);
}
-int osc_quota_setdq(struct client_obd *cli,
+int osc_quota_setdq(struct client_obd *cli,
unsigned int uid, unsigned int gid,
obd_flag valid, obd_flag flags)
{
for (cnt = 0; cnt < MAXQUOTAS; cnt++) {
struct osc_quota_info *oqi, *old;
- if (!(valid & ((cnt == USRQUOTA) ?
+ if (!(valid & ((cnt == USRQUOTA) ?
OBD_MD_FLUSRQUOTA : OBD_MD_FLGRPQUOTA)))
continue;
id = (cnt == USRQUOTA) ? uid : gid;
- noquota = (cnt == USRQUOTA) ?
+ noquota = (cnt == USRQUOTA) ?
(flags & OBD_FL_NO_USRQUOTA) : (flags & OBD_FL_NO_GRPQUOTA);
oqi = alloc_qinfo(cli, id, cnt);