Tapes have no problematic overlap, but quite a few commands are missing that are useful when operating tapes with /dev/sg. This patch adds them. START STOP UNIT, FORMAT UNIT and SEEK(10) have similar meanings but different names for tapes, so move them to the tape section of the whitelist. Cc: "James E.J. Bottomley" <JBottomley@xxxxxxxxxxxxx> Cc: linux-scsi@xxxxxxxxxxxxxxx Cc: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> --- block/scsi_ioctl.c | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-) diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c index 8cda426..a9c2caf 100644 --- a/block/scsi_ioctl.c +++ b/block/scsi_ioctl.c @@ -142,9 +142,9 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter) sgio_bitmap_set(0x03, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C|S, read); /* REQUEST SENSE */ sgio_bitmap_set(0x12, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C|S, read); /* INQUIRY */ sgio_bitmap_set(0x1A, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C|S, read); /* MODE SENSE(6) */ - sgio_bitmap_set(0x1B, D|T| W|R|O| A| B|K|V|F , read); /* START STOP UNIT */ + sgio_bitmap_set(0x1B, D| W|R|O| A| B|K| F , read); /* START STOP UNIT */ sgio_bitmap_set(0x1C, D|T|B|O|W|R|O|M|A|E| K|V|F|C|S, read); /* RECEIVE DIAGNOSTIC RESULTS */ - sgio_bitmap_set(0x2B, D|T| W|R|O| K , read); /* SEEK(10) */ + sgio_bitmap_set(0x2B, D| W|R|O| K , read); /* SEEK(10) */ sgio_bitmap_set(0x3C, D|T|B|O|W|R|O|M|A|E| K|V|F|C|S, read); /* READ BUFFER */ sgio_bitmap_set(0x4D, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C|S, read); /* LOG SENSE */ sgio_bitmap_set(0x5A, D|T|L|P|W|R|O|M|A|E|B|K|V|F|C|S, read); /* MODE SENSE(10) */ @@ -176,8 +176,8 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter) /* write */ - sgio_bitmap_set(0x04, D|T|L| R|O , write); /* FORMAT UNIT */ - sgio_bitmap_set(0x0A, D|T|L| W| O , write); /* WRITE(6) */ + sgio_bitmap_set(0x04, D| R|O , write); /* FORMAT UNIT */ + sgio_bitmap_set(0x0A, D|T| W| O , write); /* WRITE(6) */ sgio_bitmap_set(0x2A, D| W|R|O| B|K , write); /* WRITE(10) */ sgio_bitmap_set(0x2E, D| W|R|O| B|K , write); /* WRITE AND VERIFY(10) */ sgio_bitmap_set(0x35, D| W|R|O| B|K , write); /* SYNCHRONIZE CACHE(10) */ @@ -215,7 +215,7 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter) sgio_bitmap_set(0x23, R , read); /* READ FORMAT CAPACITIES */ sgio_bitmap_set(0x42, R , read); /* READ SUB-CHANNEL */ sgio_bitmap_set(0x43, R , read); /* READ TOC/PMA/ATIP */ - sgio_bitmap_set(0x44, T| R| V , read); /* READ HEADER */ + sgio_bitmap_set(0x44, R , read); /* READ HEADER */ sgio_bitmap_set(0x45, R , read); /* PLAY AUDIO(10) */ sgio_bitmap_set(0x46, R , read); /* GET CONFIGURATION */ sgio_bitmap_set(0x47, R , read); /* PLAY AUDIO MSF */ @@ -251,7 +251,27 @@ static void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter) /* (mostly) tape */ + sgio_bitmap_set(0x01, T , read); /* REWIND */ + sgio_bitmap_set(0x05, T , read); /* READ BLOCK LIMITS */ + sgio_bitmap_set(0x0F, T , read); /* READ REVERSE(6) */ + sgio_bitmap_set(0x13, T , read); /* VERIFY(6) */ + sgio_bitmap_set(0x1B, T| V , read); /* LOAD UNLOAD */ + sgio_bitmap_set(0x2B, T , read); /* LOCATE(10) */ + sgio_bitmap_set(0x34, T , read); /* READ POSITION */ + sgio_bitmap_set(0x44, T| V , read); /* REPORT DENSITY SUPPORT */ + sgio_bitmap_set(0x81, T , read); /* READ REVERSE(16) */ + sgio_bitmap_set(0x92, T , read); /* LOCATE(16) */ + + sgio_bitmap_set(0x04, T , write); /* FORMAT MEDIUM */ + sgio_bitmap_set(0x0B, T , write); /* SET CAPACITY */ + sgio_bitmap_set(0x10, T , write); /* WRITE FILEMARKS(6) */ + sgio_bitmap_set(0x11, T , write); /* SPACE(6) */ + sgio_bitmap_set(0x14, T|L , write); /* RECOVER BUFFERED DATA */ sgio_bitmap_set(0x19, T , write); /* ERASE(6) */ + sgio_bitmap_set(0x80, T , write); /* WRITE FILEMARKS(16) */ + sgio_bitmap_set(0x82, T , write); /* ALLOW OVERWRITE */ + sgio_bitmap_set(0x91, T , write); /* SPACE(16) */ + sgio_bitmap_set(0x93, T , write); /* ERASE(16) */ /* communication devices (obsolete) */ -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html