The scsictl command parser looks for single letter shorthands for each device type;
this adds 't' for SCTP and changes SCLP to 'p'
Now you can do '-t tape' and '-t printer' for an easy to remember command
Also moves the SCTP default product/vendor into the device factory,
updates the unit tests, and an overhauls the man pages
For the Status, DataIn, and DataOut phases, piscsi has a 50 microsecond
sleep implemented, which has proven a stabilizing factor for the bus
on most SCSI initiators
However, Akai S1100 and other samplers of a similar vintage need a longer
sleep time for reliable operation, so a -s option for piscsi has been
introduced to set the value to an artbitrary number at runtime
The X68000 host bridge and associated host file system module
has not been functional for many years, as reported by multiple users
Removing the code will reduce complexity for users -
the SCBR device has caused some misunderstandings in the past -
while eliminating code that has been flagged as insecure by SonarQube
* Fix VCD timestamps.
VCD simulation timestamps are integers.
eb71c31cf1 changed them to doubles which
causes the files to be unreadable.
* Fix VCD byte values
no spaces allowed between b and the bits. Value will be left-extended
with zeros.
* Revert "Don't ResizeCache on sector change if no filename is defined (#1438)"
This reverts commit dd9a3296d4.
* Revert "Add ModeSense page 0x25 (DEC special function control page) (#1412)"
This reverts commit 1121b8d9d6.
* Revert "DiskCache needs a size"
This reverts commit 7cc8df271c.
* Revert "Honor sector size change via ModeSelect6 in scsicd (#1406)"
This reverts commit b7f65d33e2.
* Revert "Multiple fixes for ModeSelect (#1405)"
This reverts commit ad5eae93e7.
* Add tests for issue#1426
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* add test without medium
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Don't resize DiskCache without a file
DiskCache computes its size from a file.
Skip ResizeCache Without file (i.e. 'empty' CD)
Fixes#1426
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Add ModeSense page 0x25 (DECSpecialFunctionControlPage)
VAXServer 3100 (CPU KA41-E) console firmware issues ModeSense(6)
page 0x25 when probing for disks. A disk won't be recognized if
this returns an error.
The DEC SCSI specification[1], section 8.5 documents this page.
[1] https://manx-docs.org/collections/antonio/dec/dec-scsi.pdfFixes#1410
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Make ModeSelect() non-const
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Implement ModeSelect for scsicd
and honor sector size setting.
DEC's VMS can't handle 2k sector sizes and uses ModeSelect6 to set the
sector size to 512 bytes.
Fixes#1397
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Test sector size setting via ModeSelect in SCSICD
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Re-calculate total blocks when sector size changes
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Reset CD data tracks after sector size change
The track calculation is based on sector size and must be reset after
change of sector size.
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* resize cache after change of sector size
The disk cache is based on sector size and must be resized when the
sector size changes.
Disk::ResizeCache needs a `raw` parameter, make this value accessible
from the current cache.
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Make GetRawMode const
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
---------
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Allow 'empty' ModeSelect6
tl;dr
Treat a computed length of 0 as `has_valid_page_code`.
Details:
The SRM console (aka 'BIOS') of DEC Alpha sends an empty
ModeSelect6 with the following data:
~~~
ModeSelect6, CDB $151000000c00
~~~
That makes 12 byte(s) as follows
~~~
0 1 2 3 4 5 6 7 8 9 10 11
00 00 00 08 00 00 00 00 00 00 02 00
~~~
decoding it (accoring to [1], Section 8.3.3, Table 94) gives us
Mode Data Length 0
Medium Type 0
Device-specific 0
Block desc len 8
Density Code 0
Number of blks 0
Reserved 0
Block length 512
`scsi_command_util::ModeSelect` computes
~~~
offset = 4 + buf[3];
~~~
giving 12 and
~~~
length -= offset;
~~~
giving 0.
Thus it never enters the `while` loop and `has_valid_page_code` stays
`false`, raising an error.
[1] [Small Computer System Interface - 2 rev 10L.pdf](https://dn790004.ca.archive.org/0/items/SCSISpecificationDocumentsSCSIDocuments/Small%20Computer%20System%20Interface%20-%202%20rev%2010L.pdf)
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Allow ModeSelect with page code 1
OpenVMS Alpha (the operating system, not the SRM BIOS) uses
ModeSelect6 with a page code of 1.
The semantics are unknown, just accepting it works for me.
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Fix page length computation in ModeSelect
tl;dr
The 'skip to next ModeSelect page' computation was off-by-one, either not
taking the page code itself into account or missing the fact that the
page length is given as `n - 1`.
Fix:
Add 1 to the computed length.
Details:
OpenVMS Alpha sends a ModeSelect6 as follows
~~~
command:
ModeSelect6, CDB $151000001900
payload:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
00 00 00 08 00 00 00 00 00 00 02 00 01 0a 24 00 00 00 00 00 00 00 00 00 00
~~~
This translates to (accoring to [1], Section 8.3.3)
~~~
Mode Data Length 0
Medium Type 0
Device-specific 0
Block desc len 8
~~~
with the following offset / length computation _before_ the `while` loop
~~~
offset = 12
length = 13
~~~
The first payload section is
~~~
4 5 6 7 8 9 10 11
00 00 00 00 00 00 02 00
~~~
translating to
~~~
Density Code 0
Number of blks 0
Reserved 0
Block length 0x200 512
~~~
Then follows a pagecode 1 as
~~~
12 13 14 15 16 17 18 19 20 21 22 23 24
01 0a 24 00 00 00 00 00 00 00 00 00 00
~~~
translating to
~~~~
Page code 1
Page length -1 10
Mode parameters 24 00 00 00 00 00 00 00 00 00 00
~~~
computing (inside the `while` loop, as `// Advance to the next page`)
~~~
size = 10 + 2 = 12
~~~
followed by new `offset` and `length` values
~~~
offset = 25
length = 1
~~~
So it stays in the `while` loop (and has a larger-than-buffer `offset`
value)
Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
* Fix missing logging for a LUN when the LUN is explicitly specified
* Do not suppress controller messages when LUN is specified
* Fix misleading logging for DaynaPort