cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: Abhijith Das <adas@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH 2/2] gfs2: limit quota log messages
Date: Mon, 1 Jun 2015 12:51:12 -0400 (EDT)	[thread overview]
Message-ID: <1099934446.8356260.1433177472444.JavaMail.zimbra@redhat.com> (raw)
In-Reply-To: <960160300.8346744.1433176079555.JavaMail.zimbra@redhat.com>



----- Original Message -----
> From: "Bob Peterson" <rpeterso@redhat.com>
> To: "Abhi Das" <adas@redhat.com>
> Cc: cluster-devel at redhat.com
> Sent: Monday, June 1, 2015 11:27:59 AM
> Subject: Re: [Cluster-devel] [GFS2 PATCH 2/2] gfs2: limit quota log messages
> 
> Hi,
> 
> Comment embedded below:
> 
> ----- Original Message -----
> > This patch makes the quota subsystem only report once that a
> > particular user/group has exceeded their allotted quota.
> > 
> > Previously, it was possible for a program to continuously try
> > exceeding quota (despite receiving EDQUOT) and in turn trigger
> > gfs2 to issue a kernel log message about quota exceed. In theory,
> > this could get out of hand and flood the log and the filesystem
> > hosting the log files.
> > 
> > Resolves: rhbz#1174295
> > Signed-off-by: Abhi Das <adas@redhat.com>
> > ---
> >  fs/gfs2/incore.h |  1 +
> >  fs/gfs2/quota.c  | 13 +++++++++----
> >  2 files changed, 10 insertions(+), 4 deletions(-)
> > 
> > diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h
> > index 58b75ab..304a223 100644
> > --- a/fs/gfs2/incore.h
> > +++ b/fs/gfs2/incore.h
> > @@ -432,6 +432,7 @@ enum {
> >  	QDF_CHANGE		= 1,
> >  	QDF_LOCKED		= 2,
> >  	QDF_REFRESH		= 3,
> > +	QDF_QMSG_QUIET          = 4,
> >  };
> >  
> >  struct gfs2_quota_data {
> > diff --git a/fs/gfs2/quota.c b/fs/gfs2/quota.c
> > index 01f4d40..3dc13b53 100644
> > --- a/fs/gfs2/quota.c
> > +++ b/fs/gfs2/quota.c
> > @@ -649,6 +649,8 @@ static void do_qc(struct gfs2_quota_data *qd, s64
> > change)
> >  		slot_hold(qd);
> >  	}
> >  
> > +	if (change < 0) /* Reset quiet flag if we freed some blocks */
> > +		clear_bit(QDF_QMSG_QUIET, &qd->qd_flags);
> >  	mutex_unlock(&sdp->sd_quota_mutex);
> >  }
> >  
> > @@ -1187,10 +1189,13 @@ int gfs2_quota_check(struct gfs2_inode *ip, kuid_t
> > uid, kgid_t gid,
> >  			/* If no min_target specified or we don't meet
> >  			 * min_target, return -EDQUOT */
> >  			if (!ap->min_target || ap->min_target > ap->allowed) {
> > -				print_message(qd, "exceeded");
> > -				quota_send_warning(qd->qd_id,
> > -						   sdp->sd_vfs->s_dev,
> > -						   QUOTA_NL_BHARDWARN);
> > +				if (!test_bit(QDF_QMSG_QUIET, &qd->qd_flags)) {
> > +					print_message(qd, "exceeded");
> > +					quota_send_warning(qd->qd_id,
> > +							   sdp->sd_vfs->s_dev,
> > +							   QUOTA_NL_BHARDWARN);
> > +					set_bit(QDF_QMSG_QUIET, &qd->qd_flags);
> > +				}
> 
> Looks good, except that this is a perfect place to use test_and_set_bit().
> 
> I don't know the gfs2 quota code like you do, but does the bit also need to
> be cleared if the user's quotas are increased?
> 

That's a good catch. I think even on decrease, it might make sense to un-silence
the warning for the next time the exceed event occurs.

Cheers!
--Abhi



      reply	other threads:[~2015-06-01 16:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-01  4:07 [Cluster-devel] [GFS2 PATCH 0/2] More quota fixes Abhi Das
2015-06-01  4:07 ` [Cluster-devel] [GFS2 PATCH 1/2] gfs2: fix quota updates on block boundaries Abhi Das
2015-06-01 15:25   ` Bob Peterson
2015-06-01 16:40     ` Abhijith Das
2015-06-01  4:07 ` [Cluster-devel] [GFS2 PATCH 2/2] gfs2: limit quota log messages Abhi Das
2015-06-01 16:27   ` Bob Peterson
2015-06-01 16:51     ` Abhijith Das [this message]

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=1099934446.8356260.1433177472444.JavaMail.zimbra@redhat.com \
    --to=adas@redhat.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;
as well as URLs for NNTP newsgroup(s).