Loading fs/quota/Kconfig +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading fs/quota/dquot.c +7 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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", Loading Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -874,7 +872,7 @@ 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 Loading @@ -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) { 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 Loading @@ -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 " Loading Loading @@ -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 Loading Loading
fs/quota/Kconfig +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
fs/quota/dquot.c +7 −9 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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", Loading Loading @@ -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 Loading Loading @@ -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: Loading Loading @@ -874,7 +872,7 @@ 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 Loading @@ -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) { 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 Loading @@ -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 " Loading Loading @@ -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 Loading