--- 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 }, };