Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (37 commits) fs: avoid I_NEW inodes Merge code for single and multiple-instance mounts Remove get_init_pts_sb() Move common mknod_ptmx() calls into caller Parse mount options just once and copy them to super block Unroll essentials of do_remount_sb() into devpts vfs: simple_set_mnt() should return void fs: move bdev code out of buffer.c constify dentry_operations: rest constify dentry_operations: configfs constify dentry_operations: sysfs constify dentry_operations: JFS constify dentry_operations: OCFS2 constify dentry_operations: GFS2 constify dentry_operations: FAT constify dentry_operations: FUSE constify dentry_operations: procfs constify dentry_operations: ecryptfs constify dentry_operations: CIFS constify dentry_operations: AFS ...
This commit is contained in:
@ -823,12 +823,12 @@ static void add_dquot_ref(struct super_block *sb, int type)
|
||||
|
||||
spin_lock(&inode_lock);
|
||||
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
||||
if (inode->i_state & (I_FREEING|I_WILL_FREE|I_NEW))
|
||||
continue;
|
||||
if (!atomic_read(&inode->i_writecount))
|
||||
continue;
|
||||
if (!dqinit_needed(inode, type))
|
||||
continue;
|
||||
if (inode->i_state & (I_FREEING|I_WILL_FREE))
|
||||
continue;
|
||||
|
||||
__iget(inode);
|
||||
spin_unlock(&inode_lock);
|
||||
@ -915,6 +915,12 @@ static void remove_dquot_ref(struct super_block *sb, int type,
|
||||
|
||||
spin_lock(&inode_lock);
|
||||
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
|
||||
/*
|
||||
* We have to scan also I_NEW inodes because they can already
|
||||
* have quota pointer initialized. Luckily, we need to touch
|
||||
* only quota pointers and these have separate locking
|
||||
* (dqptr_sem).
|
||||
*/
|
||||
if (!IS_NOQUOTA(inode))
|
||||
remove_inode_dquot_ref(inode, type, tofree_head);
|
||||
}
|
||||
|
Reference in New Issue
Block a user