Skip to content

Commit

Permalink
quota: Convert __DQUOT_PARANOIA symbol to standard config option
Browse files Browse the repository at this point in the history
Make __DQUOT_PARANOIA define from the old days a standard config option
and turn it off by default.

This gets rid of a quota warning about writes before quota is turned on
for systems with ext4 root filesystem. Currently there's no way to legally
solve this because /etc/mtab has to be written before quota is turned on
on most systems.

Signed-off-by: Jan Kara <[email protected]>
  • Loading branch information
jankara committed Apr 20, 2010
1 parent 0826167 commit 62af9b5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 9 deletions.
8 changes: 8 additions & 0 deletions fs/quota/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@ config PRINT_QUOTA_WARNING
Note that this behavior is currently deprecated and may go away in
future. Please use notification via netlink socket instead.

config QUOTA_DEBUG
bool "Additional quota sanity checks"
depends on QUOTA
default n
help
If you say Y here, quota subsystem will perform some additional
sanity checks of quota internal structures. If unsure, say N.

# Generic support for tree structured quota files. Selected when needed.
config QUOTA_TREE
tristate
Expand Down
16 changes: 7 additions & 9 deletions fs/quota/dquot.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,6 @@

#include <asm/uaccess.h>

#define __DQUOT_PARANOIA

/*
* There are three quota SMP locks. dq_list_lock protects all lists with quotas
* and quota formats, dqstats structure containing statistics about the lists
Expand Down Expand Up @@ -695,7 +693,7 @@ void dqput(struct dquot *dquot)

if (!dquot)
return;
#ifdef __DQUOT_PARANOIA
#ifdef CONFIG_QUOTA_DEBUG
if (!atomic_read(&dquot->dq_count)) {
printk("VFS: dqput: trying to free free dquot\n");
printk("VFS: device %s, dquot of %s %d\n",
Expand Down Expand Up @@ -748,7 +746,7 @@ void dqput(struct dquot *dquot)
goto we_slept;
}
atomic_dec(&dquot->dq_count);
#ifdef __DQUOT_PARANOIA
#ifdef CONFIG_QUOTA_DEBUG
/* sanity check */
BUG_ON(!list_empty(&dquot->dq_free));
#endif
Expand Down Expand Up @@ -845,7 +843,7 @@ struct dquot *dqget(struct super_block *sb, unsigned int id, int type)
dquot = NULL;
goto out;
}
#ifdef __DQUOT_PARANOIA
#ifdef CONFIG_QUOTA_DEBUG
BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */
#endif
out:
Expand Down Expand Up @@ -874,15 +872,15 @@ 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
#ifdef CONFIG_QUOTA_DEBUG
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
#ifdef CONFIG_QUOTA_DEBUG
if (unlikely(inode_get_rsv_space(inode) > 0))
reserved = 1;
#endif
Expand All @@ -907,7 +905,7 @@ static void add_dquot_ref(struct super_block *sb, int type)
spin_unlock(&inode_lock);
iput(old_inode);

#ifdef __DQUOT_PARANOIA
#ifdef CONFIG_QUOTA_DEBUG
if (reserved) {
printk(KERN_WARNING "VFS (%s): Writes happened before quota"
" was turned on thus quota information is probably "
Expand Down Expand Up @@ -940,7 +938,7 @@ static int remove_inode_dquot_ref(struct inode *inode, int type,
inode->i_dquot[type] = NULL;
if (dquot) {
if (dqput_blocks(dquot)) {
#ifdef __DQUOT_PARANOIA
#ifdef CONFIG_QUOTA_DEBUG
if (atomic_read(&dquot->dq_count) != 1)
printk(KERN_WARNING "VFS: Adding dquot with dq_count %d to dispose list.\n", atomic_read(&dquot->dq_count));
#endif
Expand Down

0 comments on commit 62af9b5

Please sign in to comment.