|
|
@@ -874,14 +874,18 @@ static int dqinit_needed(struct inode *inode, int type)
|
|
|
static void add_dquot_ref(struct super_block *sb, int type)
|
|
|
{
|
|
|
struct inode *inode, *old_inode = NULL;
|
|
|
+#ifdef __DQUOT_PARANOIA
|
|
|
int reserved = 0;
|
|
|
+#endif
|
|
|
|
|
|
spin_lock(&inode_lock);
|
|
|
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
|
|
if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE|I_NEW))
|
|
|
continue;
|
|
|
+#ifdef __DQUOT_PARANOIA
|
|
|
if (unlikely(inode_get_rsv_space(inode) > 0))
|
|
|
reserved = 1;
|
|
|
+#endif
|
|
|
if (!atomic_read(&inode->i_writecount))
|
|
|
continue;
|
|
|
if (!dqinit_needed(inode, type))
|
|
|
@@ -903,11 +907,13 @@ static void add_dquot_ref(struct super_block *sb, int type)
|
|
|
spin_unlock(&inode_lock);
|
|
|
iput(old_inode);
|
|
|
|
|
|
+#ifdef __DQUOT_PARANOIA
|
|
|
if (reserved) {
|
|
|
printk(KERN_WARNING "VFS (%s): Writes happened before quota"
|
|
|
" was turned on thus quota information is probably "
|
|
|
"inconsistent. Please run quotacheck(8).\n", sb->s_id);
|
|
|
}
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
@@ -2322,34 +2328,34 @@ static int do_set_dqblk(struct dquot *dquot, struct if_dqblk *di)
|
|
|
if (di->dqb_valid & QIF_SPACE) {
|
|
|
dm->dqb_curspace = di->dqb_curspace - dm->dqb_rsvspace;
|
|
|
check_blim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_SPACE_B, &dquot->dq_flags);
|
|
|
}
|
|
|
if (di->dqb_valid & QIF_BLIMITS) {
|
|
|
dm->dqb_bsoftlimit = qbtos(di->dqb_bsoftlimit);
|
|
|
dm->dqb_bhardlimit = qbtos(di->dqb_bhardlimit);
|
|
|
check_blim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_BLIMITS_B, &dquot->dq_flags);
|
|
|
}
|
|
|
if (di->dqb_valid & QIF_INODES) {
|
|
|
dm->dqb_curinodes = di->dqb_curinodes;
|
|
|
check_ilim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_INODES_B, &dquot->dq_flags);
|
|
|
}
|
|
|
if (di->dqb_valid & QIF_ILIMITS) {
|
|
|
dm->dqb_isoftlimit = di->dqb_isoftlimit;
|
|
|
dm->dqb_ihardlimit = di->dqb_ihardlimit;
|
|
|
check_ilim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_ILIMITS_B, &dquot->dq_flags);
|
|
|
}
|
|
|
if (di->dqb_valid & QIF_BTIME) {
|
|
|
dm->dqb_btime = di->dqb_btime;
|
|
|
check_blim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_BTIME_B, &dquot->dq_flags);
|
|
|
}
|
|
|
if (di->dqb_valid & QIF_ITIME) {
|
|
|
dm->dqb_itime = di->dqb_itime;
|
|
|
check_ilim = 1;
|
|
|
- __set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags);
|
|
|
+ set_bit(DQ_LASTSET_B + QIF_ITIME_B, &dquot->dq_flags);
|
|
|
}
|
|
|
|
|
|
if (check_blim) {
|