IBM 3584/TS3500 Support

Hi Nochmal,

ich habe nun mal den Master von PBS 2.0-4 durchgebaut um zu sehen ob der neue Code nun funktioniert.
root@pbs01:~# ./pmtx status --changer ibm3584
using device /dev/tape/by-id/scsi-000007814651057A
Error: read element status (B8h) failed: Illegal Request, Additional sense: Invalid field in cdb

Danach mit strace geschaut was geschickt wird:

cmdp="\x12\x00\x00\x00\x24\x00"
cmdp="\x1a\x08\x1d\x00\xff\x00"
cmdp="\xb8\x12\x00\x00\x03\xe8\x00\x01\x00\x00\x00\x00"
cmdp="\xb8\x13\x00\x00\x03\xe8\x00\x01\x00\x00\x00\x00"
cmdp="\xb8\x14\x00\x00\x03\xe8\x01\x01\x00\x00\x00\x00"

und von Hand nachgebaut:
sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A 12 00 00 00 24
00
sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A 1a 08 1d 00 ff
00
sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A b8 12 00 00 03
e8 00 01 00 00 00 00

sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A b8 13 00 00 03
e8 00 01 00 00 00 00

sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A b8 14 00 00 03
e8 01 01 00 00 00 00

Hier knallt es:
sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A b8 14 00 00 03 e8 01 01 00 00 00 00
SCSI Status: Check Condition

Sense Information:
Fixed format, current; Sense key: Illegal Request
Additional sense: Invalid field in cdb
Sense Key Specific: Error in Command: byte 6 bit 0

Error 5 occurred, no data received

So tut es:
root@pbs01:~# sg_raw -r 64k /dev/tape/by-id/scsi-1IBM_03584L32_000007814651057A b8 04 00 00 03 e8 01 01 00 00 00 00
SCSI Status: Good

Received 216 bytes of data:
00 01 0d 00 04 00 00 00 d0 04 00 00 32 00 00 00 c8 ...........2....
10 01 0d 04 00 81 00 00 00 00 00 00 00 02 01 00 22 ..............."
20 49 42 4d 20 20 20 20 20 55 4c 54 33 35 38 30 2d IBM ULT3580-
30 54 44 34 20 20 20 20 20 30 30 30 37 38 38 32 37 TD4 00078827
40 39 36 01 0e 04 00 81 00 00 00 00 00 00 00 02 01 96..............
50 00 22 49 42 4d 20 20 20 20 20 55 4c 54 33 35 38 ."IBM ULT358
60 30 2d 54 44 34 20 20 20 20 20 30 30 30 37 38 38 0-TD4 000788
70 35 31 33 31 01 0f 04 00 81 00 00 00 00 00 00 00 5131............
80 02 01 00 22 49 42 4d 20 20 20 20 20 55 4c 54 33 ..."IBM ULT3
90 35 38 30 2d 54 44 34 20 20 20 20 20 30 30 30 37 580-TD4 0007
a0 38 36 32 35 30 32 01 10 04 00 81 00 00 00 00 00 862502..........
b0 00 00 02 01 00 22 49 42 4d 20 20 20 20 20 55 4c ....."IBM UL
c0 54 33 35 38 30 2d 54 44 34 20 20 20 20 20 30 30 T3580-TD4 00
d0 30 37 38 35 31 36 38 30 07851680

-> Byte 1 VolTag muss bei ElementType::DataTransfer auf 0

Setze sg_pt_changer.rs:286 auf: cmd.push(element_type as u8); // Only given type

Falls der VolTag bei den andere ElementTypes gebraucht wird, müsste er halt wie unten Byte6 behandelt werden und abhängig vom ElementType gesetzt werden.

Hier das Ergebnis nach meinem "Patch":

./pmtx status --device /dev/tape/by-id/scsi-000007814651057A
using device /dev/tape/by-id/scsi-000007814651057A
Transport Element (Griper) 0: Empty
Transport Element (Griper) 1: Empty
Data Transfer Element (Drive) 0: Empty
Data Transfer Element (Drive) 1: Empty
Data Transfer Element (Drive) 2: Empty
Data Transfer Element (Drive) 3: Empty
Storage Element 1: Full
...
Storage Element 10: Full
Storage Element 11: Empty
...
Storage Element 376: Empty
Import/Export 377: Empty
...
Import/Export 386: Empty

Gruß,
Heiko.
 
Last edited:
Ok,

damit man die Volumenamen hat, ist der VolTag bei der ersten Element-Anfrage notwendig:

root@pbs01:~# ./pmtx status --changer ibm3584
using device /dev/tape/by-id/scsi-000007814651057A
Transport Element (Griper) 0: Empty
Transport Element (Griper) 1: Empty
Data Transfer Element (Drive) 0: Empty
Data Transfer Element (Drive) 1: Empty
Data Transfer Element (Drive) 2: Empty
Data Transfer Element (Drive) 3: Empty
Storage Element 1: VolumeTag("PB1000L4")
Storage Element 2: VolumeTag("PB1001L4")
Storage Element 3: VolumeTag("PB1002L4")
Storage Element 4: VolumeTag("PB1003L4")
Storage Element 5: VolumeTag("PB1004L4")
Storage Element 6: VolumeTag("PB1005L4")
Storage Element 7: VolumeTag("PB1006L4")
Storage Element 8: VolumeTag("PB1007L4")
Storage Element 9: VolumeTag("PB1008L4")
Storage Element 10: VolumeTag("PB1009L4")
...

src/tape/changer/sg_pt_changer.rs:285 sieht nun so aus:
... cmd.push(0xB8); // READ ELEMENT STATUS (B8h) let byte1 = match element_type { ElementType::DataTransfer => element_type as u8, // VolTag = 0 _ => 1<<4u8 | element_type as u8, // VolTag = 1 }; cmd.push(byte1); ...


Gruß,
Heiko.
 
Last edited:
argh... das hab ich natürlich übersehen... (wenn mans nicht testen kann ;) )

super dass du es hinbekommen hast...

das diff im post mit dem byte1 schaut eigentlich gut aus, möchtest du einen patch selbst schicken?
wenn ja, schau mal das an: https://pbs.proxmox.com/wiki/index.php/Developer_Documentation
(besonders den teil mit der CLA)

wenn nicht, kann ich natürlich auch selbst den patch mit den änderungen schicken, sag einfach bescheid
 
Hi Dominik,

ehrlich gesagt ist mir das etwas viel Aufwand nur um 5 Zeilen Code zu schicken ;) Kannst das also gerne selbst machen. Soll ich für weitere Dinge einen neuen Thread starten falls mir noch was auffällt oder einfach hier weitermachen?

Gruß,
Heiko.
 
Last edited:
Kannst das also gerne selbst machen
kein problem :)

Soll ich für weitere Dinge einen neuen Thread starten falls mir noch was auffällt oder einfach hier weitermachen?
wenns wieder dinge für die library betrifft ruhig hier, sonst bitte einen neuen thread
 
Ok, dann mache ich mal weiter:

Wenn ich ein Tape mounten will, muß ich immer ein Laufwerk selektieren. Bei mehr als einem Drive (Habe teilweise mehr als 16 in einer Lib), wäre es praktisch wenn einfach das nächste freie Laufwerk RoundRobin genommen würde. Das ist aber mehr ein Feature was nett wäre. Für die Funktion erstmal irrelevant.

Nachdem das Tape gemountet ist, wird bei Drives <no barcode> statt des Volume-Namens angezeigt. Der Name könnte eigentlich vom Slot übernommen werden, dort war er ja auch bekannt. So ist es schwierig bei mehreren eingelegten Bändern zu erkennen welches wo steckt (ok, ich habs ja manuell zugeordnet).

Volume-Statistics endet mit: read tape volume statistics failed - Illegal Request, Additional sense: Invalid field in cdb
Wenn du mir den Request schicken kannst oder mir sagen kannst wo im Code ich den Aufruf finde, kann ich checken was meine Diva hier mal wieder nicht mag.

Gruß,

Heiko.
 
Wenn ich ein Tape mounten will, muß ich immer ein Laufwerk selektieren. Bei mehr als einem Drive (Habe teilweise mehr als 16 in einer Lib), wäre es praktisch wenn einfach das nächste freie Laufwerk RoundRobin genommen würde. Das ist aber mehr ein Feature was nett wäre. Für die Funktion erstmal irrelevant.
mhm.. ja könnte man machen. magst du dazu vllt einen feature request aufmachen? https://bugzilla.proxmox.com

Nachdem das Tape gemountet ist, wird bei Drives <no barcode> statt des Volume-Namens angezeigt. Der Name könnte eigentlich vom Slot übernommen werden, dort war er ja auch bekannt. So ist es schwierig bei mehreren eingelegten Bändern zu erkennen welches wo steckt (ok, ich habs ja manuell zugeordnet).
soweit ich sehe kommt das von deinem patch mit dem dvcid, da du ja das volume tag bit nicht setzt. ich hab mal einen patch geschickt
der 2 requests absetzt, einmal mit volume tag und einmal mit dvcid: https://lists.proxmox.com/pipermail/pbs-devel/2021-July/003684.html

Volume-Statistics endet mit: read tape volume statistics failed - Illegal Request, Additional sense: Invalid field in cdb
Wenn du mir den Request schicken kannst oder mir sagen kannst wo im Code ich den Aufruf finde, kann ich checken was meine Diva hier mal wieder nicht mag.
das ist der LOG SENSE (4Dh) request ans drive mit der Volume Statistics log page (17h)
laut referenz (https://www.ibm.com/support/pages/s.../LTO SCSI Reference (EXTERNAL - 20171024).pdf)
ist das aber erst seit LTO-5 möglich, dh es kann durchaus sein dass es bei einem LTO-4 drive nicht geht
 
Hi,

Punkt 1: Done.

Punkt 2: Scheitere aktuell am Bauen. Hab jetzt mal über git den aktuellen Tree geholt, den Patch applied und dann make getippt.
*poof* Irgendwelcher dependency-Kram mit 0.115 und 0.11.6. Da steht wohl ein Releasewechsel an. Hab den Patch aber mal mit sg_raw nachvollzogen:
40 00 00 00 00 01 0e 01 00 00 00 30 22 00 80 05 83 ..........0"....
50 50 42 31 30 30 39 4c 34 20 20 20 20 20 20 20 20 PB1009L4
60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

Das sieht gut aus.

Punkt 3:
root@pbs01:~# sg_raw -r 64k /dev/tape/by-id/scsi-0007851680 4d 00 00 00 00 00 00 20 00 00
SCSI Status: Good

Received 24 bytes of data:
00 00 00 00 14 00 02 03 06 0c 11 14 16 2e 30 31 32 .............012
10 33 34 37 38 39 3b 3c 3d 34789;<=

Page Code 0 liefert alle verfügbaren Pages und da ist 17h nicht dabei. Also ja, das LTO4-Drive kann das nicht. Wäre natürlich schön wenn der Knopf dann disabled wäre wenn das Laufwerk die Page nicht unterstützt. Aber das ist auch nicht kritisch, mehr so für die Zukunft...

Dann schonmal Danke für den Reply,

Heiko.
 
Hi,

habe es heute Morgen geschafft den aktuellen Master durchzubauen. Kann bestätigen das nun auch die Anzeige sauber funktioniert. Sowohl bei den Drives als auch bei den Import/Export-Slots wird das Label nun korrekt angezeigt.

Gruß,
Heiko.
 
  • Like
Reactions: dcsapak

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!