I'm sorry, mistakenly I sent the same message multiple times. All the same. so please, review the any one of them. Masatake YAMATO > Linux's quota subsystem has an ability to handle > project quota. This commit just utilizes the ability > from xfs side. > > dbus-monitor and quota_nld shipped as part of quota-tools can > be used for testing. > > The testing environment and condition: > > # cat /etc/projects > 10:/root/Q/a > # grep Q /proc/mounts > /dev/loop0 /root/Q xfs rw,relatime,attr2,inode64,prjquota 0 0 > # ls -l /dev/loop0 > brw-rw---- 1 root disk 7, 0 Nov 26 10:46 /dev/loop0 > > 3 terminals are used for each commands: dd, quota_nld, and dbus-monitor. > > Start quota_nld with terminal 1: > > [1]# quota_nld -F > > Start dbus-monitor with terminal 2: > > [2]# dbus-monitor --system > > Start dd to generate a large file for hitting the quota limit: > > [3]# dd if=/dev/sda of=/root/Q/a/X > > At the terminal 1, you will see warning messages like: > > quota_nld: Failed to open tty /dev/tty1 of user 0 to report warning. > > Let's ignore them. These meaningless messages > are suppressed by a patch available at > https://sourceforge.net/p/linuxquota/patches/43/. > > At the terminal 2, you will see following traffic about disk quota > (newlines are inserted): > > signal time=1448502680.741715 sender=:1.35 -> \ > destination=(null destination) serial=4 path=/; \ > interface=com.system.quota.warning; member=warning > uint32 2 > uint64 10 > uint32 6 > uint32 7 > uint32 0 > uint64 0 > signal time=1448502680.742518 sender=:1.35 -> \ > destination=(null destination) serial=5 path=/; \ > interface=com.system.quota.warning; member=warning > uint32 2 > uint64 10 > uint32 4 > uint32 7 > uint32 0 > uint64 0 > > The 1st "2" means the type of quota: project quota. > The 2nd "10" means the project id. > The 3rd "4" and "6" mean "Block hardlimit reached" and > "Block softlimit reached". > The 4th "7" means the major number of loop0. > The 5th "0" means the minor number of loop0. > > Changes in v2: > > a couple aesthetic things suggested by Brian Foster <bfoster@xxxxxxxxxx>. > * rename local vairable for aligning the parameter names, > * move a short line to the end of its previous line. > > Signed-off-by: Masatake YAMATO <yamato@xxxxxxxxxx> > --- > fs/xfs/xfs_trans_dquot.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c > index ce78534..9951701 100644 > --- a/fs/xfs/xfs_trans_dquot.c > +++ b/fs/xfs/xfs_trans_dquot.c > @@ -572,12 +572,16 @@ xfs_quota_warn( > struct xfs_dquot *dqp, > int type) > { > - /* no warnings for project quotas - we just return ENOSPC later */ > + enum quota_type qtype; > + > if (dqp->dq_flags & XFS_DQ_PROJ) > - return; > - quota_send_warning(make_kqid(&init_user_ns, > - (dqp->dq_flags & XFS_DQ_USER) ? > - USRQUOTA : GRPQUOTA, > + qtype = PRJQUOTA; > + else if (dqp->dq_flags & XFS_DQ_USER) > + qtype = USRQUOTA; > + else > + qtype = GRPQUOTA; > + > + quota_send_warning(make_kqid(&init_user_ns, qtype, > be32_to_cpu(dqp->q_core.d_id)), > mp->m_super->s_dev, type); > } > -- > 2.5.0 > _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs