I don't think there's a sane fix for this in the 2.4 context.
What you can do is to convert fsync_dev() to sync _all_ devices and not just
the one which is being closed.
It will take longer, but it converts the O(n*n) search into O(n).
diff -puN fs/buffer.c~a fs/buffer.c
--- 24/fs/buffer.c~a 2003-04-02 00:21:39.000000000 -0800
+++ 24-akpm/fs/buffer.c 2003-04-02 00:21:51.000000000 -0800
@@ -343,6 +343,7 @@ int fsync_no_super(kdev_t dev)
int fsync_dev(kdev_t dev)
{
+ dev = NODEV;
sync_buffers(dev, 0);
lock_kernel();
_
-
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/