--- linux/include/scsi/scsi_devinfo.h.orig	2004-01-06 01:00:29.000000000 +0100
+++ linux/include/scsi/scsi_devinfo.h	2004-01-06 20:15:50.036892568 +0100
@@ -19,4 +19,5 @@
 #define BLIST_MS_SKIP_PAGE_08	0x2000	/* do not send ms page 0x08 */
 #define BLIST_MS_SKIP_PAGE_3F	0x4000	/* do not send ms page 0x3f */
 #define BLIST_USE_10_BYTE_MS	0x8000	/* use 10 byte ms before 6 byte ms */
+#define BLIST_NORMB     	0x10000	/* Known to be not removable */
 #endif
--- linux/drivers/scsi/scsi_scan.c.orig	2004-01-06 01:00:29.000000000 +0100
+++ linux/drivers/scsi/scsi_scan.c	2004-01-06 20:10:19.731106680 +0100
@@ -536,7 +536,8 @@
 		sdev->online = FALSE;
 	}
 
-	sdev->removable = (0x80 & inq_result[1]) >> 7;
+	sdev->removable = (((0x80 & inq_result[1]) >> 7) &&
+		!(*bflags & BLIST_NORMB));
 	sdev->lockable = sdev->removable;
 	sdev->soft_reset = (inq_result[7] & 1) && ((inq_result[3] & 7) == 2);
 
--- linux/drivers/scsi/scsi_devinfo.c.orig	2004-01-06 01:00:29.000000000 +0100
+++ linux/drivers/scsi/scsi_devinfo.c	2004-01-06 20:13:46.890613648 +0100
@@ -183,6 +183,7 @@
 	{"SGI", "TP9500", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
 	{"MYLEX", "DACARMRB", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
 	{"XYRATEX", "RS", "*", BLIST_SPARSELUN | BLIST_LARGELUN},
+	{"iRiver", "iFP Mass Driver", NULL, BLIST_NORMB},
 	{ NULL, NULL, NULL, 0 },
 };
