From: Dave A. <ai...@us...> - 2002-04-13 16:20:13
|
Update of /cvsroot/linux-vax/kernel-2.4/fs In directory usw-pr-cvs1:/tmp/cvs-serv864/fs Modified Files: inode.c super.c Log Message: DA: 2.4.16 import should have no affect on VAX port apart Index: inode.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/inode.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- inode.c 9 Apr 2002 13:11:16 -0000 1.2 +++ inode.c 13 Apr 2002 16:20:09 -0000 1.3 @@ -1065,24 +1065,27 @@ if (inode->i_state != I_CLEAR) BUG(); } else { - if (!list_empty(&inode->i_hash) && sb && sb->s_root) { + if (!list_empty(&inode->i_hash)) { if (!(inode->i_state & (I_DIRTY|I_LOCK))) { list_del(&inode->i_list); list_add(&inode->i_list, &inode_unused); } inodes_stat.nr_unused++; spin_unlock(&inode_lock); - return; - } else { - list_del_init(&inode->i_list); + if (!sb || sb->s_flags & MS_ACTIVE) + return; + write_inode_now(inode, 1); + spin_lock(&inode_lock); + inodes_stat.nr_unused--; list_del_init(&inode->i_hash); - inode->i_state|=I_FREEING; - inodes_stat.nr_inodes--; - spin_unlock(&inode_lock); - if (inode->i_data.nrpages) - truncate_inode_pages(&inode->i_data, 0); - clear_inode(inode); } + list_del_init(&inode->i_list); + inode->i_state|=I_FREEING; + inodes_stat.nr_inodes--; + spin_unlock(&inode_lock); + if (inode->i_data.nrpages) + truncate_inode_pages(&inode->i_data, 0); + clear_inode(inode); } destroy_inode(inode); } Index: super.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/fs/super.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- super.c 9 Apr 2002 13:30:18 -0000 1.2 +++ super.c 13 Apr 2002 16:20:09 -0000 1.3 @@ -462,6 +462,7 @@ lock_super(s); if (!type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) goto out_fail; + s->s_flags |= MS_ACTIVE; unlock_super(s); /* tell bdcache that we are going to keep this one */ if (bdev) @@ -614,6 +615,7 @@ lock_super(s); if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) goto out_fail; + s->s_flags |= MS_ACTIVE; unlock_super(s); get_filesystem(fs_type); path_release(&nd); @@ -695,6 +697,7 @@ lock_super(s); if (!fs_type->read_super(s, data, flags & MS_VERBOSE ? 1 : 0)) goto out_fail; + s->s_flags |= MS_ACTIVE; unlock_super(s); get_filesystem(fs_type); return s; @@ -739,6 +742,7 @@ dput(root); fsync_super(sb); lock_super(sb); + sb->s_flags &= ~MS_ACTIVE; invalidate_inodes(sb); /* bad name - it should be evict_inodes() */ if (sop) { if (sop->write_super && sb->s_dirt) |