mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 06:34:12 +08:00
quota: Convert __DQUOT_PARANOIA symbol to standard config option
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 <jack@suse.cz>
This commit is contained in:
parent
08261673cb
commit
62af9b5205
@ -33,6 +33,14 @@ config PRINT_QUOTA_WARNING
|
|||||||
Note that this behavior is currently deprecated and may go away in
|
Note that this behavior is currently deprecated and may go away in
|
||||||
future. Please use notification via netlink socket instead.
|
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.
|
# Generic support for tree structured quota files. Selected when needed.
|
||||||
config QUOTA_TREE
|
config QUOTA_TREE
|
||||||
tristate
|
tristate
|
||||||
|
@ -80,8 +80,6 @@
|
|||||||
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
#define __DQUOT_PARANOIA
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* There are three quota SMP locks. dq_list_lock protects all lists with quotas
|
* There are three quota SMP locks. dq_list_lock protects all lists with quotas
|
||||||
* and quota formats, dqstats structure containing statistics about the lists
|
* and quota formats, dqstats structure containing statistics about the lists
|
||||||
@ -695,7 +693,7 @@ void dqput(struct dquot *dquot)
|
|||||||
|
|
||||||
if (!dquot)
|
if (!dquot)
|
||||||
return;
|
return;
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
if (!atomic_read(&dquot->dq_count)) {
|
if (!atomic_read(&dquot->dq_count)) {
|
||||||
printk("VFS: dqput: trying to free free dquot\n");
|
printk("VFS: dqput: trying to free free dquot\n");
|
||||||
printk("VFS: device %s, dquot of %s %d\n",
|
printk("VFS: device %s, dquot of %s %d\n",
|
||||||
@ -748,7 +746,7 @@ we_slept:
|
|||||||
goto we_slept;
|
goto we_slept;
|
||||||
}
|
}
|
||||||
atomic_dec(&dquot->dq_count);
|
atomic_dec(&dquot->dq_count);
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
/* sanity check */
|
/* sanity check */
|
||||||
BUG_ON(!list_empty(&dquot->dq_free));
|
BUG_ON(!list_empty(&dquot->dq_free));
|
||||||
#endif
|
#endif
|
||||||
@ -845,7 +843,7 @@ we_slept:
|
|||||||
dquot = NULL;
|
dquot = NULL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */
|
BUG_ON(!dquot->dq_sb); /* Has somebody invalidated entry under us? */
|
||||||
#endif
|
#endif
|
||||||
out:
|
out:
|
||||||
@ -874,7 +872,7 @@ static int dqinit_needed(struct inode *inode, int type)
|
|||||||
static void add_dquot_ref(struct super_block *sb, int type)
|
static void add_dquot_ref(struct super_block *sb, int type)
|
||||||
{
|
{
|
||||||
struct inode *inode, *old_inode = NULL;
|
struct inode *inode, *old_inode = NULL;
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
int reserved = 0;
|
int reserved = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -882,7 +880,7 @@ static void add_dquot_ref(struct super_block *sb, int type)
|
|||||||
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
||||||
if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE|I_NEW))
|
if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE|I_NEW))
|
||||||
continue;
|
continue;
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
if (unlikely(inode_get_rsv_space(inode) > 0))
|
if (unlikely(inode_get_rsv_space(inode) > 0))
|
||||||
reserved = 1;
|
reserved = 1;
|
||||||
#endif
|
#endif
|
||||||
@ -907,7 +905,7 @@ static void add_dquot_ref(struct super_block *sb, int type)
|
|||||||
spin_unlock(&inode_lock);
|
spin_unlock(&inode_lock);
|
||||||
iput(old_inode);
|
iput(old_inode);
|
||||||
|
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
if (reserved) {
|
if (reserved) {
|
||||||
printk(KERN_WARNING "VFS (%s): Writes happened before quota"
|
printk(KERN_WARNING "VFS (%s): Writes happened before quota"
|
||||||
" was turned on thus quota information is probably "
|
" was turned on thus quota information is probably "
|
||||||
@ -940,7 +938,7 @@ static int remove_inode_dquot_ref(struct inode *inode, int type,
|
|||||||
inode->i_dquot[type] = NULL;
|
inode->i_dquot[type] = NULL;
|
||||||
if (dquot) {
|
if (dquot) {
|
||||||
if (dqput_blocks(dquot)) {
|
if (dqput_blocks(dquot)) {
|
||||||
#ifdef __DQUOT_PARANOIA
|
#ifdef CONFIG_QUOTA_DEBUG
|
||||||
if (atomic_read(&dquot->dq_count) != 1)
|
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));
|
printk(KERN_WARNING "VFS: Adding dquot with dq_count %d to dispose list.\n", atomic_read(&dquot->dq_count));
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user