From mboxrd@z Thu Jan 1 00:00:00 1970 From: dmonakhov@openvz.org Subject: Re: [PATCH] quota: add per-inode reservaton space sanity checks. Date: Tue, 30 Mar 2010 20:20:00 +0400 Message-ID: <87ljd9dbnz.fsf@openvz.org> References: <1269959128-9626-1-git-send-email-dmonakhov@openvz.org> <20100330153933.GC3424@quack.suse.cz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: linux-fsdevel@vger.kernel.org To: Jan Kara Return-path: Received: from mailhub.sw.ru ([195.214.232.25]:6299 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751409Ab0C3QUL (ORCPT ); Tue, 30 Mar 2010 12:20:11 -0400 In-Reply-To: <20100330153933.GC3424@quack.suse.cz> (Jan Kara's message of "Tue, 30 Mar 2010 17:39:34 +0200") Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --=-=-= Jan Kara writes: > On Tue 30-03-10 18:25:28, Dmitry Monakhov wrote: >> We already has per-dquot sanity checks, but with per-inode checks >> quota leakage investigation becomes much easier. >> >> Signed-off-by: Dmitry Monakhov >> --- >> fs/quota/dquot.c | 4 ++++ >> 1 files changed, 4 insertions(+), 0 deletions(-) >> >> diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c >> index e0b870f..4db57b7 100644 >> --- a/fs/quota/dquot.c >> +++ b/fs/quota/dquot.c >> @@ -1428,6 +1428,8 @@ EXPORT_SYMBOL(inode_add_rsv_space); >> void inode_claim_rsv_space(struct inode *inode, qsize_t number) >> { >> spin_lock(&inode->i_lock); >> + if (*inode_reserved_space(inode) < number) >> + WARN_ON_ONCE(1); > Maybe just: WARN_ON_ONCE(*inode_reserved_space(inode) < number) As you wish. --=-=-= Content-Disposition: inline; filename=0001-quota-add-per-inode-reservaton-space-sanity-checks.patch >>From 610afddec4ae4e33d2481284d2c3463439284833 Mon Sep 17 00:00:00 2001 From: Dmitry Monakhov Date: Tue, 30 Mar 2010 20:08:12 +0400 Subject: [PATCH] quota: add per-inode reservaton space sanity checks. We already has per-dquot sanity checks, but with per-inode checks quota leakage investigation becomes much easier. Signed-off-by: Dmitry Monakhov --- fs/quota/dquot.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c index e0b870f..f1c50e4 100644 --- a/fs/quota/dquot.c +++ b/fs/quota/dquot.c @@ -1428,6 +1428,7 @@ EXPORT_SYMBOL(inode_add_rsv_space); void inode_claim_rsv_space(struct inode *inode, qsize_t number) { spin_lock(&inode->i_lock); + WARN_ON_ONCE(*inode_reserved_space(inode) < number); *inode_reserved_space(inode) -= number; __inode_add_bytes(inode, number); spin_unlock(&inode->i_lock); @@ -1437,6 +1438,7 @@ EXPORT_SYMBOL(inode_claim_rsv_space); void inode_sub_rsv_space(struct inode *inode, qsize_t number) { spin_lock(&inode->i_lock); + WARN_ON_ONCE(*inode_reserved_space(inode) < number); *inode_reserved_space(inode) -= number; spin_unlock(&inode->i_lock); } -- 1.6.6.1 --=-=-=--