[mdk-re] Re: [sisyphus] kernel 2.4.15 -- осторожно!
Alexander Bokovoy
=?iso-8859-1?q?a=2Ebokovoy_=CE=C1_sam-solutions=2Enet?=
Пн Ноя 26 17:03:03 MSK 2001
On Mon, Nov 26, 2001 at 02:03:20PM +0300, Aleksey Novodvorsky wrote:
> Konstantin Volckov wrote:
>
> > начиная с 2.4.15-pre9, в то время как ядро, которое сейчас лежит в
> > Sisyphus, основано на 2.4.15-pre6. Тесты тоже не выявили этой ошибки -
> > следовательно повода для паники нет :-)
>
> > В следующих ядрах, ес-но, эта
> > ошибка будет учтена.
> Хм. Может, не надо ? :-)
:-) не надо. Патч от Александра Виро прилагается, он вошел в 2.4.16.
--
/ Alexander Bokovoy
$ cat /proc/identity >~/.signature
`Senior software developer and analyst for SaM-Solutions Ltd.`
---
Nov 21 20:58:58 alconost kernel: VFS: Busy inodes after unmount.
Self-destruct in 5 seconds. Have a nice day...
----------- следующая часть -----------
>From linux-kernel-owner на vger.kernel.org Fri Nov 23 17:09:02 2001
Return-Path: <linux-kernel-owner на vger.kernel.org>
Delivered-To: khromy на lnuxlab.ath.cx
Received: from vger.kernel.org (vger.kernel.org [199.183.24.194])
by lnuxlab.ath.cx (Postfix) with ESMTP id 26CFE1EBA
for <khromy на lnuxlab.ath.cx>; Fri, 23 Nov 2001 17:09:01 -0500 (EST)
Received: (majordomo на vger.kernel.org) by vger.kernel.org via listexpand
id <S282269AbRKWWHQ>; Fri, 23 Nov 2001 17:07:16 -0500
Received: (majordomo на vger.kernel.org) by vger.kernel.org
id <S282266AbRKWWHJ>; Fri, 23 Nov 2001 17:07:09 -0500
Received: from leibniz.math.psu.edu ([146.186.130.2]:60146 "EHLO math.psu.edu")
by vger.kernel.org with ESMTP id <S282258AbRKWWGw>;
Fri, 23 Nov 2001 17:06:52 -0500
Received: from weyl.math.psu.edu (weyl.math.psu.edu [146.186.130.226])
by math.psu.edu (8.9.3/8.9.3) with ESMTP id RAA05961;
Fri, 23 Nov 2001 17:06:46 -0500 (EST)
Received: from localhost (viro на localhost)
by weyl.math.psu.edu (8.9.3/8.9.3) with ESMTP id RAA03766;
Fri, 23 Nov 2001 17:06:46 -0500 (EST)
X-Authentication-Warning: weyl.math.psu.edu: viro owned process doing -bs
Date: Fri, 23 Nov 2001 17:06:46 -0500 (EST)
From: Alexander Viro <viro на math.psu.edu>
To: linux-kernel на vger.kernel.org
Cc: Linus Torvalds <torvalds на transmeta.com>,
Marcelo Tosatti <marcelo на conectiva.com.br>
Subject: Re: [PATCH][CFT] Re: 2.4.15-pre9 breakage (inode.c)
In-Reply-To: <Pine.GSO.4.21.0111231634310.2422-100000 на weyl.math.psu.edu>
Message-ID: <Pine.GSO.4.21.0111231701440.2422-100000 на weyl.math.psu.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: linux-kernel-owner на vger.kernel.org
Precedence: bulk
X-Mailing-List: linux-kernel на vger.kernel.org
Status: RO
Content-Length: 2963
Lines: 101
On Fri, 23 Nov 2001, Alexander Viro wrote:
> Untested fix follows. And please, pass the brown paperbag... ;-/
... and now for something that really builds:
diff -urN S15/fs/inode.c S15-fix/fs/inode.c
--- S15/fs/inode.c Fri Nov 23 06:45:43 2001
+++ S15-fix/fs/inode.c Fri Nov 23 17:04:05 2001
@@ -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);
}
diff -urN S15/fs/super.c S15-fix/fs/super.c
--- S15/fs/super.c Fri Nov 23 06:45:43 2001
+++ S15-fix/fs/super.c Fri Nov 23 16:56:50 2001
@@ -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)
diff -urN S15/include/linux/fs.h S15-fix/include/linux/fs.h
--- S15/include/linux/fs.h Fri Nov 23 06:45:44 2001
+++ S15-fix/include/linux/fs.h Fri Nov 23 17:01:18 2001
@@ -110,6 +110,7 @@
#define MS_BIND 4096
#define MS_REC 16384
#define MS_VERBOSE 32768
+#define MS_ACTIVE (1<<30)
#define MS_NOUSER (1<<31)
/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo на vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Подробная информация о списке рассылки community