Date: Thu, 9 Oct 1997 08:44:34 +0200 (MET DST)
From: Juergen Orschiedt <juergen.orschiedt@zx.basf-ag.de>
Subject: L68K: patch: acsi.diff
To: linux-m68k@lists.linux-m68k.org
Sender: owner-linux-m68k@phil.uni-sb.de
Reply-To: juergen.orschiedt@zx.basf-ag.de

Fix for acsi.c - invalidate_inodes was called with wrong argument.

Still to do:
 o cross-check this patch (I lurged in ide.c which differs a bit...)
 o increase time-out for removable devices

Juergen

--- linux/drivers/block/acsi.c.~1~	1997/08/13 00:19:12
+++ linux/drivers/block/acsi.c	1997/10/09 04:23:48
@@ -1894,14 +1894,19 @@
 
 	max_p = gdev->max_p;
 	start = device << gdev->minor_shift;
-	major = MAJOR_NR << 8;
 
 	for (i = max_p - 1; i >= 0; i--) {
-		sync_dev(major | start | i);
-		invalidate_inodes(major | start | i);
-		invalidate_buffers(major | start | i);
+		if (gdev->part[start + i].nr_sects != 0) {
+			kdev_t devp = MKDEV(MAJOR_NR, start + i);
+			struct super_block *sb = get_super(devp);
+
+			fsync_dev(devp);
+			if (sb)
+				invalidate_inodes(sb);
+			invalidate_buffers(devp);
+			gdev->part[start + i].nr_sects = 0;
+		}
 		gdev->part[start + i].start_sect = 0;
-		gdev->part[start + i].nr_sects = 0;
 	};
 
 	stdma_lock(NULL, NULL);


