On Mon, Jan 03, 2011 at 09:11:29PM +0100, Samuel Kvasnica wrote:
> Hello xen developers,
>
Hello,
> the current xen vscsi driver implementation has a nasty >2TB limitation.
> Both the
> backend and frontend driver need a patch - included in the attachments.
>
Thanks for the patch!
> Basically, for the frontend, just the max_cmd_len needs to be set correctly.
> For for the backend, at least the READ_16 and WRITE_16 scsi commands
> vere missing.
> I also enabled/added some more scsi commands to allow tape drives and
> autoloader
> work properly.
>
> Could please somebody here take care to add this to mainstream code ?
> SuSE people were not interested really and the original author is not
> really known, i.e. "Copyright by Fujitsu Limited". I'm really sick of
> patching every new kernel over and over...
>
Which kernels did you test this against? I assume this should be
applied to linux-2.6.18-xen tree.
Note that pvops kernels don't have pvscsi drivers yet!
(Noone ported them yet from Xenlinux kernels).
Also two minor things:
- Please send patches made with "diff -u" (unified diffs)
- Include Signed-Off-By line
-- Pasi
> best ragards,
>
> Sam
>
>
> diff -r ./scsiback.orig/emulate.c scsiback/emulate.c
> 30a31,35
> > /*
> > * Patched to support >2TB drives + allow tape & autoloader operations
> > * 2010, Samuel Kvasnica, IMS Nanofabrication AG
> > */
> >
> 384,385c389,390
> < NO_EMULATE(TEST_UNIT_READY); /*0x00*/
> < NO_EMULATE(REZERO_UNIT); /*0x01*/
> ---
> > NO_EMULATE(TEST_UNIT_READY); /*0x00*/ /* sd,st */
> > NO_EMULATE(REZERO_UNIT); /*0x01*/ /* st */
> 388c393
> < NO_EMULATE(READ_BLOCK_LIMITS); /*0x05*/
> ---
> > NO_EMULATE(READ_BLOCK_LIMITS); /*0x05*/ /* st */
> 390,393c395,398
> < /*NO_EMULATE(INITIALIZE_ELEMENT_STATUS); *//*0x07*/
> < NO_EMULATE(READ_6); /*0x08*/
> < NO_EMULATE(WRITE_6); /*0x0a*/
> < /*NO_EMULATE(SEEK_6); *//*0x0b*/
> ---
> > NO_EMULATE(INITIALIZE_ELEMENT_STATUS); /*0x07*/ /* ch */
> > NO_EMULATE(READ_6); /*0x08*/ /* sd,st */
> > NO_EMULATE(WRITE_6); /*0x0a*/ /* sd,st */
> > NO_EMULATE(SEEK_6); /*0x0b*/
> 395,396c400,401
> < NO_EMULATE(WRITE_FILEMARKS); /*0x10*/
> < NO_EMULATE(SPACE); /*0x11*/
> ---
> > NO_EMULATE(WRITE_FILEMARKS); /*0x10*/ /* st */
> > NO_EMULATE(SPACE); /*0x11*/ /* st */
> 399c404
> < /*NO_EMULATE(MODE_SELECT); *//*0x15*/
> ---
> > NO_EMULATE(MODE_SELECT); /*0x15*/ /* st */
> 403,406c408,411
> < NO_EMULATE(ERASE); /*0x19*/
> < NO_EMULATE(MODE_SENSE); /*0x1a*/
> < /*NO_EMULATE(START_STOP); *//*0x1b*/
> < /*NO_EMULATE(RECEIVE_DIAGNOSTIC); *//*0x1c*/
> ---
> > NO_EMULATE(ERASE); /*0x19*/ /* st */
> > NO_EMULATE(MODE_SENSE); /*0x1a*/ /* st */
> > NO_EMULATE(START_STOP); /*0x1b*/ /* sd,st */
> > NO_EMULATE(RECEIVE_DIAGNOSTIC); /*0x1c*/
> 408c413
> < /*NO_EMULATE(ALLOW_MEDIUM_REMOVAL); *//*0x1e*/
> ---
> > NO_EMULATE(ALLOW_MEDIUM_REMOVAL); /*0x1e*/
> 411,415c416,420
> < NO_EMULATE(READ_CAPACITY); /*0x25*/
> < NO_EMULATE(READ_10); /*0x28*/
> < NO_EMULATE(WRITE_10); /*0x2a*/
> < /*NO_EMULATE(SEEK_10); *//*0x2b*/
> < /*NO_EMULATE(POSITION_TO_ELEMENT); *//*0x2b*/
> ---
> > NO_EMULATE(READ_CAPACITY); /*0x25*/ /* sd */
> > NO_EMULATE(READ_10); /*0x28*/ /* sd */
> > NO_EMULATE(WRITE_10); /*0x2a*/ /* sd */
> > NO_EMULATE(SEEK_10); /*0x2b*/ /* st */
> > NO_EMULATE(POSITION_TO_ELEMENT); /*0x2b*/ /* ch */
> 421,427c426,432
> < /*NO_EMULATE(SET_LIMITS); *//*0x33*/
> < /*NO_EMULATE(PRE_FETCH); *//*0x34*/
> < /*NO_EMULATE(READ_POSITION); *//*0x34*/
> < /*NO_EMULATE(SYNCHRONIZE_CACHE); *//*0x35*/
> < /*NO_EMULATE(LOCK_UNLOCK_CACHE); *//*0x36*/
> < /*NO_EMULATE(READ_DEFECT_DATA); *//*0x37*/
> < /*NO_EMULATE(MEDIUM_SCAN); *//*0x38*/
> ---
> > NO_EMULATE(SET_LIMITS); /*0x33*/
> > NO_EMULATE(PRE_FETCH); /*0x34*/ /* st! */
> > NO_EMULATE(READ_POSITION); /*0x34*/ /* st */
> > NO_EMULATE(SYNCHRONIZE_CACHE); /*0x35*/ /* sd */
> > NO_EMULATE(LOCK_UNLOCK_CACHE); /*0x36*/
> > NO_EMULATE(READ_DEFECT_DATA); /*0x37*/
> > NO_EMULATE(MEDIUM_SCAN); /*0x38*/
> 430,431c435,436
> < /*NO_EMULATE(WRITE_BUFFER); *//*0x3b*/
> < /*NO_EMULATE(READ_BUFFER); *//*0x3c*/
> ---
> > NO_EMULATE(WRITE_BUFFER); /*0x3b*/
> > NO_EMULATE(READ_BUFFER); /*0x3c*/ /* osst */
> 437,439c442,444
> < /*NO_EMULATE(READ_TOC); *//*0x43*/
> < /*NO_EMULATE(LOG_SELECT); *//*0x4c*/
> < /*NO_EMULATE(LOG_SENSE); *//*0x4d*/
> ---
> > NO_EMULATE(READ_TOC); /*0x43*/ /* sr */
> > NO_EMULATE(LOG_SELECT); /*0x4c*/
> > NO_EMULATE(LOG_SENSE); /*0x4d*/ /* st! */
> 443c448
> < /*NO_EMULATE(MODE_SENSE_10); *//*0x5a*/
> ---
> > NO_EMULATE(MODE_SENSE_10); /*0x5a*/ /* scsi_lib */
> 447,448c452,455
> < /*NO_EMULATE(MOVE_MEDIUM); *//*0xa5*/
> < /*NO_EMULATE(EXCHANGE_MEDIUM); *//*0xa6*/
> ---
> > NO_EMULATE(MAINTENANCE_IN); /*0xa3*/ /* IFT alua */
> > NO_EMULATE(MAINTENANCE_OUT); /*0xa4*/ /* IFT alua */
> > NO_EMULATE(MOVE_MEDIUM); /*0xa5*/ /* ch */
> > NO_EMULATE(EXCHANGE_MEDIUM); /*0xa6*/ /* ch */
> 455,456c462,463
> < /*NO_EMULATE(READ_ELEMENT_STATUS); *//*0xb8*/
> < /*NO_EMULATE(SEND_VOLUME_TAG); *//*0xb6*/
> ---
> > NO_EMULATE(READ_ELEMENT_STATUS); /*0xb8*/ /* ch */
> > NO_EMULATE(SEND_VOLUME_TAG); /*0xb6*/ /* ch */
> 458,461c465,468
> < /*NO_EMULATE(READ_16); *//*0x88*/
> < /*NO_EMULATE(WRITE_16); *//*0x8a*/
> < /*NO_EMULATE(VERIFY_16); *//*0x8f*/
> < /*NO_EMULATE(SERVICE_ACTION_IN); *//*0x9e*/
> ---
> > NO_EMULATE(READ_16); /*0x88*/ /* sd >2TB */
> > NO_EMULATE(WRITE_16); /*0x8a*/ /* sd >2TB */
> > NO_EMULATE(VERIFY_16); /*0x8f*/
> > NO_EMULATE(SERVICE_ACTION_IN); /*0x9e*/ /* sd >2TB */
> 462a470
> > /* st: QFA_REQUEST_BLOCK, QFA_SEEK_BLOCK */
> diff -r ./scsifront.orig/xenbus.c ./scsifront/xenbus.c
> 30c30,34
> <
> ---
> >
> > /*
> > * Patched to support >2TB drives
> > * 2010, Samuel Kvasnica, IMS Nanofabrication AG
> > */
> 125d128
> <
> 222a226
> > host->max_cmd_len = VSCSIIF_MAX_COMMAND_SIZE;
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|