RE: What partition should the MTMKPART argument specify? Was: Re: st driver doesn't seem to grok LTO partitioning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Kai,

I've done more tested. Some stuff didn't work and I've got some suggested changes (there are two changes to the patch and one for the mt command). Testing results first:

# echo 1 > /sys/bus/scsi/drivers/st/debug_flag
# mt -f /dev/st2 stsetoption can-partitions
# mt -f /dev/st1 stsetoption can-partitions
# mt -f /dev/st0 stsetoption can-partitions

Expect to fail LTO3:

# mt -f /dev/st0 mkpartition 500
/dev/st0: Input/output error

[ 3197.901583] st 5:0:1:0: [st0] Block limits 1 - 16777215 bytes.
[ 3197.903613] st 5:0:1:0: [st0] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3197.903618] st 5:0:1:0: [st0] Density 44, tape length: 0, drv buffer: 1
[ 3197.903622] st 5:0:1:0: [st0] Block size: 0, buffer size: 4096 (1 blocks).
[ 3197.903625] st 5:0:1:0: [st0] Updating partition number in status.
[ 3197.906406] st 5:0:1:0: [st0] Got tape pos. blk 0 part 0.
[ 3197.906429] st 5:0:1:0: [st0] Loading tape.
[ 3197.929484] st 5:0:1:0: [st0] Block limits 1 - 16777215 bytes.
[ 3197.931518] st 5:0:1:0: [st0] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3197.931524] st 5:0:1:0: [st0] Density 44, tape length: 0, drv buffer: 1
[ 3197.931527] st 5:0:1:0: [st0] Block size: 0, buffer size: 4096 (1 blocks).
[ 3197.933840] st 5:0:1:0: [st0] Partition page length is 10 bytes.
[ 3197.933846] st 5:0:1:0: [st0] PP: max 0, add 0, xdp 0, psum 03, pofmetc 0, rec 03, units 09, sizes: 400 65535
[ 3197.933851] st 5:0:1:0: [st0] MP: 11 08 00 00 18 03 09 00 01 90 ff ff
[ 3197.933854] st 5:0:1:0: [st0] psd_cnt 1, max.parts 0, nbr_parts 0
[ 3197.933857] st 5:0:1:0: [st0] Formatting tape with two partitions (1 = 500 MB).
[ 3197.933860] st 5:0:1:0: [st0] Sent partition page length is 10 bytes. needs_format: 0
[ 3197.933865] st 5:0:1:0: [st0] PP: max 0, add 1, xdp 1, psum 02, pofmetc 0, rec 03, units 00, sizes: 65535 500
[ 3197.933869] st 5:0:1:0: [st0] MP: 11 08 00 01 30 03 00 00 ff ff 01 f4
[ 3197.937706] st 5:0:1:0: [st0] Error: 8000002, cmd: 15 10 0 0 16 0
[ 3197.937712] st 5:0:1:0: [st0] Sense Key : Illegal Request [current]
[ 3197.937716] st 5:0:1:0: [st0] Add. Sense: Invalid field in parameter list
[ 3197.937719] st 5:0:1:0: [st0] Partitioning of tape failed.
[ 3197.937847] st 5:0:1:0: [st0] Rewinding tape.

Works DDS5:

# mt -f /dev/st1 mkpartition 500

[ 3241.355474] st 6:0:3:0: [st1] Block limits 1 - 16777215 bytes.
[ 3241.355775] st 6:0:3:0: [st1] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3241.355779] st 6:0:3:0: [st1] Density 47, tape length: 0, drv buffer: 1
[ 3241.355783] st 6:0:3:0: [st1] Block size: 0, buffer size: 4096 (1 blocks).
[ 3241.355785] st 6:0:3:0: [st1] Updating partition number in status.
[ 3241.356385] st 6:0:3:0: [st1] Got tape pos. blk 0 part 0.
[ 3241.356397] st 6:0:3:0: [st1] Loading tape.
[ 3241.357249] st 6:0:3:0: [st1] Block limits 1 - 16777215 bytes.
[ 3241.357540] st 6:0:3:0: [st1] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3241.357544] st 6:0:3:0: [st1] Density 47, tape length: 0, drv buffer: 1
[ 3241.357547] st 6:0:3:0: [st1] Block size: 0, buffer size: 4096 (1 blocks).
[ 3241.357882] st 6:0:3:0: [st1] Partition page length is 10 bytes.
[ 3241.357887] st 6:0:3:0: [st1] PP: max 1, add 1, xdp 0, psum 02, pofmetc 0, rec 03, units 00, sizes: 500 65535
[ 3241.357892] st 6:0:3:0: [st1] MP: 11 08 01 01 10 03 00 00 01 f4 ff ff
[ 3241.357895] st 6:0:3:0: [st1] psd_cnt 1, max.parts 1, nbr_parts 1
[ 3241.357898] st 6:0:3:0: [st1] Formatting tape with two partitions (1 = 500 MB).
[ 3241.357901] st 6:0:3:0: [st1] Sent partition page length is 10 bytes. needs_format: 0
[ 3241.357906] st 6:0:3:0: [st1] PP: max 1, add 1, xdp 1, psum 02, pofmetc 0, rec 03, units 00, sizes: 500 65535
[ 3241.357910] st 6:0:3:0: [st1] MP: 11 08 01 01 30 03 00 00 01 f4 ff ff
[ 3464.721058] st 6:0:3:0: [st1] Rewinding tape.

# mt -f /dev/st2 mkpartition 200G

Fails and doesn't print all of the messages related for partitioning:

[ 3514.306582] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3514.307126] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3514.307129] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3514.307132] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3514.307133] st 8:0:0:0: [st2] Updating partition number in status.
[ 3514.308133] st 8:0:0:0: [st2] Got tape pos. blk 0 part 0.
[ 3514.308159] st 8:0:0:0: [st2] Loading tape.
[ 3514.323173] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3514.323624] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3514.323628] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3514.323632] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3514.324507] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 3514.324513] st 8:0:0:0: [st2] PP: max 3, add 0, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2620 0
[ 3514.324518] st 8:0:0:0: [st2] MP: 11 0e 03 00 3c 03 09 00 0a 3c 00 00
[ 3514.324521] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 3519.097142] st 8:0:0:0: [st2] Rewinding tape.

The only way that can happen is if it thinks it should be clearing the partitions in this code:

        if (scsi3) {
                needs_format = (bp[pgo + PP_OFF_FLAGS] & PP_MSK_POFM) != 0;
                if (needs_format && size == 0) {
                        /* No need to write the mode page when clearing partitioning */
                        result = format_medium(STp, 0);
                        goto out;
                }

Since we can format and exit by juming to out here we probably need this in there as well before the goto:

		DEBC_printk(STp, "Formatting tape with one partition.\n");

Something appears to have dropped the size to be zero. Should the mt command in mt-st reject anything that could become zero with an error? I haven't looked at the command to see why it dropped the value to 0 (I am assuming that's where it happened). There should probably be an error or something printed otherwise someone will assume that the partitioning worked successfully when in fact the partitions were cleared.

If instead I ask for 200 instead of 200G I get the following:

[ 3875.588006] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3875.588617] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3875.588620] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3875.588622] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3875.588638] st 8:0:0:0: [st2] Loading tape.
[ 3875.603659] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3875.604113] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3875.604117] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3875.604121] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3875.605052] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 3875.605058] st 8:0:0:0: [st2] PP: max 3, add 0, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2620 0
[ 3875.605063] st 8:0:0:0: [st2] MP: 11 0e 03 00 3c 03 09 00 0a 3c 00 00
[ 3875.605066] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 0
[ 3875.605069] st 8:0:0:0: [st2] Formatting tape with two partitions (1 = 200 MB).
[ 3875.605072] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 3875.605076] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 02, pofmetc 4, rec 03, units 00, sizes: 200 0
[ 3875.605080] st 8:0:0:0: [st2] MP: 11 0a 03 01 34 03 00 00 00 c8 00 00
[ 3875.605952] st 8:0:0:0: [st2] Error: 8000002, cmd: 15 10 0 0 18 0
[ 3875.605957] st 8:0:0:0: [st2] Sense Key : Illegal Request [current]
[ 3875.605961] st 8:0:0:0: [st2] Add. Sense: Invalid field in parameter list
[ 3875.605964] st 8:0:0:0: [st2] Partitioning of tape failed.
[ 3875.606087] st 8:0:0:0: [st2] Rewinding tape.

Since a positive number sets the size of the second partition I would have expected the sizes to be 0xffff and 200 not 200 and 0.
 
# mt -f /dev/st2 mkpartition 2000

[ 3957.373197] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3957.373729] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3957.373732] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3957.373734] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3957.373750] st 8:0:0:0: [st2] Loading tape.
[ 3957.388599] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 3957.389100] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 3957.389104] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 3957.389108] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 3957.390012] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 3957.390015] st 8:0:0:0: [st2] PP: max 3, add 0, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2620 0
[ 3957.390018] st 8:0:0:0: [st2] MP: 11 0e 03 00 3c 03 09 00 0a 3c 00 00
[ 3957.390024] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 0
[ 3957.390027] st 8:0:0:0: [st2] Formatting tape with two partitions (1 = 2000 MB).
[ 3957.390030] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 3957.390035] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2 0
[ 3957.390039] st 8:0:0:0: [st2] MP: 11 0a 03 01 3c 03 09 00 00 02 00 00
[ 3957.391184] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 3957.398667] st 8:0:0:0: [st2] Error: 8000002, cmd: 4 0 1 0 0 0
[ 3957.398672] st 8:0:0:0: [st2] Sense Key : Illegal Request [current]
[ 3957.398676] st 8:0:0:0: [st2] Add. Sense: Parameter value invalid
[ 3957.398684] st 8:0:0:0: [st2] Rewinding tape.

Again I would have expected 0xffff and 2 not 2 and 0.

If I ask for -2000 then it works:

[ 4197.965653] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 4197.966089] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 4197.966094] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 4197.966098] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 4197.966119] st 8:0:0:0: [st2] Loading tape.
[ 4197.980675] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 4197.981160] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 4197.981165] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 4197.981169] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 4197.982080] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 4197.982086] st 8:0:0:0: [st2] PP: max 3, add 0, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2620 0
[ 4197.982091] st 8:0:0:0: [st2] MP: 11 0e 03 00 3c 03 09 00 0a 3c 00 00
[ 4197.982094] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 0
[ 4197.982097] st 8:0:0:0: [st2] Formatting tape with two partitions (1 = 2000 MB).
[ 4197.982100] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 4197.982105] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2 65535
[ 4197.982108] st 8:0:0:0: [st2] MP: 11 0a 03 01 3c 03 09 00 00 02 ff ff
[ 4197.983306] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 4208.151461] st 8:0:0:0: [st2] Rewinding tape.

As it did set the size of the second partition to be 0xffff.

To investigate what is happening with a positive size I changed this message to print the value of target_partition:

                DEBC_printk(STp, "Formatting tape with two partitions "
                            "(%i = %d MB).\n", target_partition,
                            units > 0 ? size * 1000 : size);

Running with 2000 it appears to have worked but not because the values are correct since the target partition is 1 the 2 should have been set in the second partition size and the first partition size set to be 0xffff:

[ 4826.968682] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 4826.969257] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 4826.969261] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 4826.969265] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 4826.969268] st 8:0:0:0: [st2] Updating partition number in status.
[ 4826.970202] st 8:0:0:0: [st2] Got tape pos. blk 0 part 0.
[ 4826.970225] st 8:0:0:0: [st2] Loading tape.
[ 4826.985156] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 4826.985618] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 4826.985623] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 4826.985626] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 4826.986802] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 4826.986809] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 38 2543
[ 4826.986813] st 8:0:0:0: [st2] MP: 11 0e 03 01 3c 03 09 00 00 26 09 ef
[ 4826.986817] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 1
[ 4826.986820] st 8:0:0:0: [st2] Formatting tape with two partitions (1 = 2000 MB).
[ 4826.986823] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 4826.986827] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2 2543
[ 4826.986831] st 8:0:0:0: [st2] MP: 11 0a 03 01 3c 03 09 00 00 02 09 ef
[ 4826.988174] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 4826.995295] st 8:0:0:0: [st2] Rewinding tape.

This code appears to be wrong:

                bp[psdo] = (size >> 8) & 0xff;
                bp[psdo + 1] = size & 0xff;
                if (target_partition == 0)
                        bp[psdo + 2] = bp[psdo + 3] = 0xff;

I changed it to be:

/*
 * For SSC-3 devices the mode page should be more than 10 bytes
 * long so DDS drives won't see these changes.
 */
                if (bp[pgo + MP_OFF_PAGE_LENGTH] + 2 > 10) {
                        if (target_partition == 0) {
                                bp[psdo] = (size >> 8) & 0xff;
                                bp[psdo + 1] = size & 0xff;
                                bp[psdo + 2] = bp[psdo + 3] = 0xff;
                        } else {
                                bp[psdo + 2] = (size >> 8) & 0xff;
                                bp[psdo + 3] = size & 0xff;
                                bp[psdo] = bp[psdo + 1] = 0xff;
                        }
                } else {
                        bp[psdo] = (size >> 8) & 0xff;
                        bp[psdo + 1] = size & 0xff;
                        if (target_partition == 0)
                                bp[psdo + 2] = bp[psdo + 3] = 0xff;
                }

You may be able to think of a better condition that we can guarantee will work with other drives and still not cause issues for DDS but for my HPE DDS and LTO6 drives that first test works since HPE DDS drives only have a partition format mode page length of 10.

And the debug output now looks like:

# mt -f /dev/st2 mkpartition 20000

[ 5690.261689] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 5690.262311] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5690.262315] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 5690.262319] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 5690.262321] st 8:0:0:0: [st2] Updating partition number in status.
[ 5690.263230] st 8:0:0:0: [st2] Got tape pos. blk 0 part 0.
[ 5690.263247] st 8:0:0:0: [st2] Loading tape.
[ 5690.278072] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 5690.278780] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5690.278786] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 5690.278790] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 5690.279985] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 5690.279992] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 38 2543
[ 5690.279996] st 8:0:0:0: [st2] MP: 11 0e 03 01 3c 03 09 00 00 26 09 ef
[ 5690.280000] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 1
[ 5690.280003] st 8:0:0:0: [st2] Formatting tape with two partitions (1 = 20000 MB).
[ 5690.280007] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 5690.280011] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 65535 20
[ 5690.280015] st 8:0:0:0: [st2] MP: 11 0a 03 01 3c 03 09 00 ff ff 00 14
[ 5690.281115] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 5703.254138] st 8:0:0:0: [st2] Rewinding tape.

# mt -f /dev/st2 mkpartition -20000

[ 5770.883236] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 5770.883819] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5770.883822] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 5770.883824] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 5770.883840] st 8:0:0:0: [st2] Loading tape.
[ 5770.898181] st 8:0:0:0: [st2] Block limits 1 - 16777215 bytes.
[ 5770.898725] st 8:0:0:0: [st2] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5770.898730] st 8:0:0:0: [st2] Density 5a, tape length: 0, drv buffer: 1
[ 5770.898734] st 8:0:0:0: [st2] Block size: 0, buffer size: 4096 (1 blocks).
[ 5770.899915] st 8:0:0:0: [st2] Partition page length is 16 bytes.
[ 5770.899921] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 2543 38
[ 5770.899926] st 8:0:0:0: [st2] MP: 11 0e 03 01 3c 03 09 00 09 ef 00 26
[ 5770.899929] st 8:0:0:0: [st2] psd_cnt 2, max.parts 3, nbr_parts 1
[ 5770.899932] st 8:0:0:0: [st2] Formatting tape with two partitions (0 = 20000 MB).
[ 5770.899935] st 8:0:0:0: [st2] Sent partition page length is 12 bytes. needs_format: 1
[ 5770.899940] st 8:0:0:0: [st2] PP: max 3, add 1, xdp 1, psum 03, pofmetc 4, rec 03, units 09, sizes: 20 65535
[ 5770.899944] st 8:0:0:0: [st2] MP: 11 0a 03 01 3c 03 09 00 00 14 ff ff
[ 5770.901144] st 8:0:0:0: [st2] Sending FORMAT MEDIUM
[ 5781.051229] st 8:0:0:0: [st2] Rewinding tape.

That makes it work in the way I'd expect it to work for LTO and dds still works after the change:

# mt -f /dev/st1 mkpartition 500

[ 5836.239854] st 6:0:3:0: [st1] Block limits 1 - 16777215 bytes.
[ 5836.240154] st 6:0:3:0: [st1] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5836.240158] st 6:0:3:0: [st1] Density 47, tape length: 0, drv buffer: 1
[ 5836.240162] st 6:0:3:0: [st1] Block size: 0, buffer size: 4096 (1 blocks).
[ 5836.240165] st 6:0:3:0: [st1] Updating partition number in status.
[ 5836.240660] st 6:0:3:0: [st1] Got tape pos. blk 0 part 0.
[ 5836.240680] st 6:0:3:0: [st1] Loading tape.
[ 5836.241566] st 6:0:3:0: [st1] Block limits 1 - 16777215 bytes.
[ 5836.241877] st 6:0:3:0: [st1] Mode sense. Length 11, medium 0, WBS 10, BLL 8
[ 5836.241881] st 6:0:3:0: [st1] Density 47, tape length: 0, drv buffer: 1
[ 5836.241885] st 6:0:3:0: [st1] Block size: 0, buffer size: 4096 (1 blocks).
[ 5836.242217] st 6:0:3:0: [st1] Partition page length is 10 bytes.
[ 5836.242222] st 6:0:3:0: [st1] PP: max 1, add 1, xdp 0, psum 02, pofmetc 0, rec 03, units 00, sizes: 500 65535
[ 5836.242226] st 6:0:3:0: [st1] MP: 11 08 01 01 10 03 00 00 01 f4 ff ff
[ 5836.242230] st 6:0:3:0: [st1] psd_cnt 1, max.parts 1, nbr_parts 1
[ 5836.242233] st 6:0:3:0: [st1] Formatting tape with two partitions (1 = 500 MB).
[ 5836.242236] st 6:0:3:0: [st1] Sent partition page length is 10 bytes. needs_format: 0
[ 5836.242240] st 6:0:3:0: [st1] PP: max 1, add 1, xdp 1, psum 02, pofmetc 0, rec 03, units 00, sizes: 500 65535
[ 5836.242244] st 6:0:3:0: [st1] MP: 11 08 01 01 30 03 00 00 01 f4 ff ff
[ 6062.441198] st 6:0:3:0: [st1] Rewinding tape.

For posterity in case anyone reads this at a later point just to explain the size values for DDS - while the DDS sizes may look wrong they are not. The second size value is not sent to the tape drive only the first size is since most (all?) DDS drives only support setting an explicit size for the second partition only and partition 0 automatically gets the rest of the tape.

If the changes are correct and needed and you want to add those two changes please do so. I've been looking very carefully at the code changes as part of the testing effort and happy to add any combination of reviewed-by and tested-by to the patch. If required feel free to change it as needed. I'll retest a consolidated version of the patch if you add the changes and send it out.

Laurence, when you get your LTO drive test without my changes in to make sure you see the same issue and then if you do test with the changes I added above. That's just to double check that there's nothing wrong with my setup and the code changes are required.

Thanks
Shane
��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux