[Dovecot] 1.0 roadmap - fs quota problem
Miquel van Smoorenburg
miquels at cistron.nl
Wed Jun 14 11:34:05 EEST 2006
On Mon, 2006-06-12 at 18:39 +0300, Timo Sirainen wrote:
> On Mon, 2006-06-12 at 17:56 +0300, Dumitru Negara wrote:
> > Timo Sirainen wrote:
> > > On Mon, 2006-06-12 at 17:12 +0300, Dumitru Negara wrote:
> > >> # repquota -u /dev/sda9
> > >
> > > Could you run it through strace and show me the quotactl() call it does?
> > > Or does it do a quotactl() call at all?
>
> So I looked through repquota's sources and it looks like XFS has its own
> Q_XGETQSTAT quota command which needs to be used with it. I think I'm
> not going to bother figuring out how it's supposed to be used. Patches
> welcome.
It's not that hard. Here's some example code:
#include <sys/quota.h>
#include <xfs/xqm.h>
#define FS_WHATEVER 0
#define FS_XFS 1
int getquot(char *dev, uid_t uid, struct dqblk *dq, int fstype)
{
fs_disk_quota_t fdq;
switch(fstype) {
case FS_XFS:
if (quotactl(QCMD(Q_XGETQUOTA, USRQUOTA),
dev, uid, (caddr_t)&fdq) < 0)
return -1;
dq->dqb_bhardlimit = fdq.d_blk_hardlimit;
dq->dqb_bsoftlimit = fdq.d_blk_softlimit;
dq->dqb_ihardlimit = fdq.d_ino_hardlimit;
dq->dqb_isoftlimit = fdq.d_ino_softlimit;
dq->dqb_curblocks = fdq.d_bcount;
dq->dqb_curinodes = fdq.d_icount;
dq->dqb_btime = fdq.d_btimer;
dq->dqb_itime = fdq.d_itimer;
break;
default:
if (quotactl(QCMD(Q_GETQUOTA, USRQUOTA),
dev, uid, (caddr_t)dq) < 0)
return -1;
break;
}
return 0;
}
More information about the dovecot
mailing list