diff -upNr qpxtool-0.6.1.orign/lib/include/qpx_transport.h qpxtool-0.6.1/lib/include/qpx_transport.h --- qpxtool-0.6.1.orign/lib/include/qpx_transport.h 2007-08-19 16:04:14.000000000 +0200 +++ qpxtool-0.6.1/lib/include/qpx_transport.h 2008-02-16 23:00:32.000000000 +0100 @@ -78,6 +78,14 @@ class autofree { #if defined(__linux) +const unsigned char scsi_command_size[8] = +{ + 6, 10, 10, 12, + 16, 12, 10, 10 +}; + +#define COMMAND_SIZE(opcode) scsi_command_size[((opcode) >> 5) & 7] + //#include #include //#include @@ -159,7 +167,7 @@ public: } #endif } - sg_io.cmd_len = i+1; + sg_io.cmd_len = COMMAND_SIZE(cgc.cmd[i]); return cgc.cmd[i]; } unsigned char &operator()(size_t i) { return _sense.u[i]; } diff -upNr qpxtool-0.6.1.orign/lib/qpxtransport/include/qpx_transport.h qpxtool-0.6.1/lib/qpxtransport/include/qpx_transport.h --- qpxtool-0.6.1.orign/lib/qpxtransport/include/qpx_transport.h 2007-08-19 16:04:14.000000000 +0200 +++ qpxtool-0.6.1/lib/qpxtransport/include/qpx_transport.h 2008-02-16 23:00:32.000000000 +0100 @@ -78,6 +78,14 @@ class autofree { #if defined(__linux) +const unsigned char scsi_command_size[8] = +{ + 6, 10, 10, 12, + 16, 12, 10, 10 +}; + +#define COMMAND_SIZE(opcode) scsi_command_size[((opcode) >> 5) & 7] + //#include #include //#include @@ -159,7 +167,7 @@ public: } #endif } - sg_io.cmd_len = i+1; + sg_io.cmd_len = COMMAND_SIZE(cgc.cmd[0]); return cgc.cmd[i]; } unsigned char &operator()(size_t i) { return _sense.u[i]; }