* 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.
* Bump black from 22.8.0 to 24.3.0 in /python/web
Bumps [black](https://github.com/psf/black) from 22.8.0 to 24.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/22.8.0...24.3.0)
---
updated-dependencies:
- dependency-name: black
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com>
* Github CI: Backend web test runner use python 3.9.19
* Reformat python sources with black
* Docker: Bump to python 3.9-slim image for pytest
* Bump pytest version to 8.1.1
* Bump more library versions, and freeze them
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel Markstedt <daniel@mindani.net>
* 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>
* Control board client should use new FileCmds initiator
* Restore informative logging, but drop to debug level
* Use the correct object to call list_images()