Skip to contentSkip to conversation

quota: Remove bogus 'optimization' in check_idq() and check_bdq()

PATCH New Jan Kara 2 participants 3 messages Oct 20, 2008 – Oct 21, 2008

Subsystems (2)
lore
Share & tools
lore

Jan Kara

author reviewer
#0 lore raw

PATCH 1/1 quota: Remove bogus 'optimization' in check_idq() and check_bdq()

Checks like <= 0 for an unsigned type do not make much sence. The value could be only 0 and that does not happen often enough for the check to be worth it.

---
 fs/dquot.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
fs/dquot.c +2 -2
index 758bf4a..e95ad55 100644
@@ -1041,7 +1041,7 @@ static inline char ignore_hardlimit(struct dquot *dquot)
 static int check_idq(struct dquot *dquot, qsize_t inodes, char *warntype)
 {
 	*warntype = QUOTA_NL_NOWARN;
-	if (inodes <= 0 || test_bit(DQ_FAKE_B, &dquot->dq_flags))
+	if (test_bit(DQ_FAKE_B, &dquot->dq_flags))
 		return QUOTA_OK;
 
 	if (dquot->dq_dqb.dqb_ihardlimit &&
@@ -1073,7 +1073,7 @@ static int check_idq(struct dquot *dquot, qsize_t inodes, char *warntype)
 static int check_bdq(struct dquot *dquot, qsize_t space, int prealloc, char *warntype)
 {
 	*warntype = QUOTA_NL_NOWARN;
-	if (space <= 0 || test_bit(DQ_FAKE_B, &dquot->dq_flags))
+	if (test_bit(DQ_FAKE_B, &dquot->dq_flags))
 		return QUOTA_OK;
 
 	if (dquot->dq_dqb.dqb_bhardlimit &&
Signature · 1 line
1.5.2.4
#1 lore raw

PATCH 1/1 quota: Remove bogus 'optimization' in check_idq() and check_bdq()

Quoted 3 lines · Jan Kara

Checks like <= 0 for an unsigned type do not make much sence. The value could be only 0 and that does not happen often enough for the check to be worth it.

Why not worth it? Certainly the '<' isn't valid, but is it even
possible to call these functions with 0? I don't know enough to answer that, but I'm wondering if it should BUG_ON(inodes == 0). If not, what happens after this change? Obviously inodes==0 means the quota doesn't change, but could they get a soft warning they wouldn't get before?

Joel

Signature · 9 lines
Life's Little Instruction Book #222

	"Think twice before burdening a friend with a secret."

Joel Becker
Principal Software Developer
Oracle
E-mail: [email protected]
Phone: (650) 506-8127
author reviewer
#2 lore raw

PATCH 1/1 quota: Remove bogus 'optimization' in check_idq() and check_bdq()

Quoted 10 lines · Joel Becker
Quoted 3 lines · Jan Kara

Checks like <= 0 for an unsigned type do not make much sence. The value could be only 0 and that does not happen often enough for the check to be worth it.

Why not worth it? Certainly the '<' isn't valid, but is it even
possible to call these functions with 0? I don't know enough to answer that, but I'm wondering if it should BUG_ON(inodes == 0). If not, what happens after this change? Obviously inodes==0 means the quota doesn't change, but could they get a soft warning they wouldn't get before?

In theory, yes, user would now get a warning when he previously did not
get it. But I would consider that to be an advantage (warning is issued at most once and it could happen that warning is not issued yet only because of some unusual reason like root chowned a file to the user and got him over quota)... Anyway I'm not aware of a place which would actually call the code with 0 so I think this is mostly academic question :).
Anyway, thanks for comments.

Honza

Signature · 2 lines
Jan Kara <[email protected]>
SUSE Labs, CR