quota: add new quotactl Q_XGETNEXTQUOTA
authorEric Sandeen <sandeen@redhat.com>
Mon, 8 Feb 2016 00:21:50 +0000 (11:21 +1100)
committerDave Chinner <david@fromorbit.com>
Mon, 8 Feb 2016 00:21:50 +0000 (11:21 +1100)
commit8b37524962b9c54423374717786198f5c0820a28
tree0a502e7dae81cf9b6c8edb5f2f291604e09ec34a
parent3218a3ec87f7d0063b48b10cf3d649ce75966223
quota: add new quotactl Q_XGETNEXTQUOTA

Q_XGETNEXTQUOTA is exactly like Q_XGETQUOTA, except that it
will return quota information for the id equal to or greater
than the id requested.  In other words, if the requested id has
no quota, the command will return quota information for the
next higher id which does have a quota set.  If no higher id
has an active quota, -ESRCH is returned.

This allows filesystems to do efficient iteration in kernelspace,
much like extN filesystems do in userspace when asked to report
all active quotas.

The patch adds a d_id field to struct qc_dqblk so that we can
pass back the id of the quota which was found, and return it
to userspace.

Today, filesystems such as XFS require getpwent-style iterations,
and for systems which have i.e. LDAP backends, this can be very
slow, or even impossible if iteration is not allowed in the
configuration.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/quota/quota.c
include/linux/quota.h
include/uapi/linux/dqblk_xfs.h