From: Christoph Hellwig <hch@infradead.org>
To: xfs@oss.sgi.com
Subject: [PATCH 3/3 v2] xfs: implement quota warnings via netlink
Date: Sun, 17 Jan 2010 17:36:19 -0500 [thread overview]
Message-ID: <20100117223619.GA16102@infradead.org> (raw)
In-Reply-To: <20100113220603.251930871@bombadil.infradead.org>
Wire up quota_send_warning to send quota warnings over netlink. This is
used by various desktops to show user quota warnings.
Tested by running the quota_nld daemon while running the xfstest quota
tests and observing the warnings. I'll see how I can get a more formal
testcase for it written.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: xfs/fs/xfs/quota/xfs_trans_dquot.c
===================================================================
--- xfs.orig/fs/xfs/quota/xfs_trans_dquot.c 2010-01-17 11:02:29.340004208 +0100
+++ xfs/fs/xfs/quota/xfs_trans_dquot.c 2010-01-17 13:41:34.142005475 +0100
@@ -589,6 +589,20 @@ xfs_trans_unreserve_and_mod_dquots(
}
}
+STATIC void
+xfs_quota_warn(
+ struct xfs_mount *mp,
+ struct xfs_dquot *dqp,
+ int type)
+{
+ /* no warnings for project quotas - we just return ENOSPC later */
+ if (dqp->dq_flags & XFS_DQ_PROJ)
+ return;
+ quota_send_warning((dqp->dq_flags & XFS_DQ_USER) ? USRQUOTA : GRPQUOTA,
+ be32_to_cpu(dqp->q_core.d_id), mp->m_super->s_dev,
+ type);
+}
+
/*
* This reserves disk blocks and inodes against a dquot.
* Flags indicate if the dquot is to be locked here and also
@@ -657,13 +671,21 @@ xfs_trans_dqresv(
* nblks.
*/
if (hardlimit > 0ULL &&
- hardlimit <= nblks + *resbcountp)
+ hardlimit <= nblks + *resbcountp) {
+ xfs_quota_warn(mp, dqp, QUOTA_NL_BHARDWARN);
goto error_return;
+ }
if (softlimit > 0ULL &&
- softlimit <= nblks + *resbcountp &&
- ((timer != 0 && get_seconds() > timer) ||
- (warns != 0 && warns >= warnlimit)))
- goto error_return;
+ softlimit <= nblks + *resbcountp) {
+ if ((timer != 0 && get_seconds() > timer) ||
+ (warns != 0 && warns >= warnlimit)) {
+ xfs_quota_warn(mp, dqp,
+ QUOTA_NL_BSOFTLONGWARN);
+ goto error_return;
+ }
+
+ xfs_quota_warn(mp, dqp, QUOTA_NL_BSOFTWARN);
+ }
}
if (ninos > 0) {
count = be64_to_cpu(dqp->q_core.d_icount);
@@ -677,12 +699,19 @@ xfs_trans_dqresv(
if (!softlimit)
softlimit = q->qi_isoftlimit;
- if (hardlimit > 0ULL && count >= hardlimit)
- goto error_return;
- if (softlimit > 0ULL && count >= softlimit &&
- ((timer != 0 && get_seconds() > timer) ||
- (warns != 0 && warns >= warnlimit)))
+ if (hardlimit > 0ULL && count >= hardlimit) {
+ xfs_quota_warn(mp, dqp, QUOTA_NL_IHARDWARN);
goto error_return;
+ }
+ if (softlimit > 0ULL && count >= softlimit) {
+ if ((timer != 0 && get_seconds() > timer) ||
+ (warns != 0 && warns >= warnlimit)) {
+ xfs_quota_warn(mp, dqp,
+ QUOTA_NL_ISOFTLONGWARN);
+ goto error_return;
+ }
+ xfs_quota_warn(mp, dqp, QUOTA_NL_ISOFTWARN);
+ }
}
}
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2010-01-17 22:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-13 22:05 [PATCH 0/3] small quota updates for 2.6.34 Christoph Hellwig
2010-01-13 22:05 ` [PATCH 1/3] xfs: kill XFS_QMOPT_ASYNC Christoph Hellwig
2010-01-14 0:47 ` Dave Chinner
2010-01-14 18:59 ` Alex Elder
2010-01-13 22:05 ` [PATCH 2/3] xfs: clean up error handling in xfs_trans_dqresv Christoph Hellwig
2010-01-14 0:53 ` Dave Chinner
2010-01-13 22:05 ` [PATCH 3/3] xfs: implement quota warnings via netlink Christoph Hellwig
2010-01-14 1:19 ` Dave Chinner
2010-01-14 6:42 ` Christoph Hellwig
2010-01-17 22:36 ` Christoph Hellwig [this message]
2010-01-18 11:03 ` [PATCH 3/3 v2] " Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100117223619.GA16102@infradead.org \
--to=hch@infradead.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox