Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple fixes for ModeSelect #1405

Merged
merged 25 commits into from
Jan 7, 2024
Merged

Multiple fixes for ModeSelect #1405

merged 25 commits into from
Jan 7, 2024

Commits on Aug 1, 2022

  1. Update revision for release

    Tony Kuker committed Aug 1, 2022
    Configuration menu
    Copy the full SHA
    8135dcd View commit details
    Browse the repository at this point in the history

Commits on Aug 28, 2022

  1. Merge tag 'v22.08.01'

    RaSCSI version 22.08.01
    Tony Kuker committed Aug 28, 2022
    Configuration menu
    Copy the full SHA
    9d10347 View commit details
    Browse the repository at this point in the history

Commits on Sep 3, 2022

  1. Create sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    7ba85c5 View commit details
    Browse the repository at this point in the history
  2. Update sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    a31476d View commit details
    Browse the repository at this point in the history
  3. Update sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    27845d7 View commit details
    Browse the repository at this point in the history
  4. Update sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    5cb3bb5 View commit details
    Browse the repository at this point in the history
  5. Update sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    a33a256 View commit details
    Browse the repository at this point in the history
  6. Delete sonarcloud.yml

    akuker authored Sep 3, 2022
    Configuration menu
    Copy the full SHA
    1582ece View commit details
    Browse the repository at this point in the history

Commits on Oct 23, 2022

  1. Merge tag 'v22.10.01'

    RaSCSI version 22.10.01
    Tony Kuker committed Oct 23, 2022
    Configuration menu
    Copy the full SHA
    39d36cf View commit details
    Browse the repository at this point in the history

Commits on Dec 23, 2022

  1. Update revision number for release

    Tony Kuker committed Dec 23, 2022
    Configuration menu
    Copy the full SHA
    c7f7f55 View commit details
    Browse the repository at this point in the history
  2. Merge tag 'v22.12.01'

    PiSCSI version 22.12.1
    Tony Kuker committed Dec 23, 2022
    Configuration menu
    Copy the full SHA
    ef49663 View commit details
    Browse the repository at this point in the history

Commits on Feb 11, 2023

  1. Merge tag 'v23.02.01'

    PiSCSI Version 23.02.01
    Tony Kuker committed Feb 11, 2023
    Configuration menu
    Copy the full SHA
    3c7e2cd View commit details
    Browse the repository at this point in the history

Commits on Apr 7, 2023

  1. Remove SonarCloud cache setup as it is now offered by default (PiSCSI…

    …#1135)
    
    No need to configure the cache anymore, SonarCloud now has an automatic analysis caching. See https://docs.sonarcloud.io/advanced-setup/languages/c-c-objective-c/#analysis-cache.
    mpaladin authored Apr 7, 2023
    Configuration menu
    Copy the full SHA
    3ad668c View commit details
    Browse the repository at this point in the history

Commits on Apr 10, 2023

  1. Configuration menu
    Copy the full SHA
    92d9fe5 View commit details
    Browse the repository at this point in the history

Commits on Apr 23, 2023

  1. Merge tag 'v23.04.01'

    PiSCSI version 23.04.01
    Tony Kuker committed Apr 23, 2023
    Configuration menu
    Copy the full SHA
    57fa874 View commit details
    Browse the repository at this point in the history

Commits on Nov 11, 2023

  1. Configuration menu
    Copy the full SHA
    cd4d630 View commit details
    Browse the repository at this point in the history
  2. Merge tag 'v23.11.01'

    PiSCSI version 23.11.01
    rdmark committed Nov 11, 2023
    Configuration menu
    Copy the full SHA
    796869d View commit details
    Browse the repository at this point in the history

Commits on Dec 25, 2023

  1. 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>
    kkaempf committed Dec 25, 2023
    Configuration menu
    Copy the full SHA
    c332c49 View commit details
    Browse the repository at this point in the history
  2. 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>
    kkaempf committed Dec 25, 2023
    Configuration menu
    Copy the full SHA
    4194e7c View commit details
    Browse the repository at this point in the history
  3. 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>
    kkaempf committed Dec 25, 2023
    Configuration menu
    Copy the full SHA
    9794ef3 View commit details
    Browse the repository at this point in the history

Commits on Jan 4, 2024

  1. drop failing test

    Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
    kkaempf committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    91dbbfb View commit details
    Browse the repository at this point in the history
  2. Test support of page 1

    Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
    kkaempf committed Jan 4, 2024
    Configuration menu
    Copy the full SHA
    db7f215 View commit details
    Browse the repository at this point in the history

Commits on Jan 5, 2024

  1. Add length computation test for ModeSelect6

    Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
    kkaempf committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    ccaa729 View commit details
    Browse the repository at this point in the history
  2. Check for 'empty' ModeSelect

    Signed-off-by: Klaus Kämpf <kkaempf@gmail.com>
    kkaempf committed Jan 5, 2024
    Configuration menu
    Copy the full SHA
    e004c1d View commit details
    Browse the repository at this point in the history

Commits on Jan 7, 2024

  1. Configuration menu
    Copy the full SHA
    de803bd View commit details
    Browse the repository at this point in the history