Skip to content
Snippets Groups Projects
  • Ondrej Kozina's avatar
    9e05a259
    sed-opal: geometry feature reporting command · 9e05a259
    Ondrej Kozina authored
    
    Locking range start and locking range length
    attributes may be require to satisfy restrictions
    exposed by OPAL2 geometry feature reporting.
    
    Geometry reporting feature is described in TCG OPAL SSC,
    section 3.1.1.4 (ALIGN, LogicalBlockSize, AlignmentGranularity
    and LowestAlignedLBA).
    
    4.3.5.2.1.1 RangeStart Behavior:
    
    [ StartAlignment = (RangeStart modulo AlignmentGranularity) - LowestAlignedLBA ]
    
    When processing a Set method or CreateRow method on the Locking
    table for a non-Global Range row, if:
    
    a) the AlignmentRequired (ALIGN above) column in the LockingInfo
       table is TRUE;
    b) RangeStart is non-zero; and
    c) StartAlignment is non-zero, then the method SHALL fail and
       return an error status code INVALID_PARAMETER.
    
    4.3.5.2.1.2 RangeLength Behavior:
    
    If RangeStart is zero, then
    	[ LengthAlignment = (RangeLength modulo AlignmentGranularity) - LowestAlignedLBA ]
    
    If RangeStart is non-zero, then
    	[ LengthAlignment = (RangeLength modulo AlignmentGranularity) ]
    
    When processing a Set method or CreateRow method on the Locking
    table for a non-Global Range row, if:
    
    a) the AlignmentRequired (ALIGN above) column in the LockingInfo
       table is TRUE;
    b) RangeLength is non-zero; and
    c) LengthAlignment is non-zero, then the method SHALL fail and
       return an error status code INVALID_PARAMETER
    
    In userspace we stuck to logical block size reported by general
    block device (via sysfs or ioctl), but we can not read
    'AlignmentGranularity' or 'LowestAlignedLBA' anywhere else and
    we need to get those values from sed-opal interface otherwise
    we will not be able to report or avoid locking range setup
    INVALID_PARAMETER errors above.
    
    Signed-off-by: default avatarOndrej Kozina <okozina@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
    Tested-by: default avatarMilan Broz <gmazyland@gmail.com>
    Link: https://lore.kernel.org/r/20230411090931.9193-2-okozina@redhat.com
    
    
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    9e05a259
    History
    sed-opal: geometry feature reporting command
    Ondrej Kozina authored
    
    Locking range start and locking range length
    attributes may be require to satisfy restrictions
    exposed by OPAL2 geometry feature reporting.
    
    Geometry reporting feature is described in TCG OPAL SSC,
    section 3.1.1.4 (ALIGN, LogicalBlockSize, AlignmentGranularity
    and LowestAlignedLBA).
    
    4.3.5.2.1.1 RangeStart Behavior:
    
    [ StartAlignment = (RangeStart modulo AlignmentGranularity) - LowestAlignedLBA ]
    
    When processing a Set method or CreateRow method on the Locking
    table for a non-Global Range row, if:
    
    a) the AlignmentRequired (ALIGN above) column in the LockingInfo
       table is TRUE;
    b) RangeStart is non-zero; and
    c) StartAlignment is non-zero, then the method SHALL fail and
       return an error status code INVALID_PARAMETER.
    
    4.3.5.2.1.2 RangeLength Behavior:
    
    If RangeStart is zero, then
    	[ LengthAlignment = (RangeLength modulo AlignmentGranularity) - LowestAlignedLBA ]
    
    If RangeStart is non-zero, then
    	[ LengthAlignment = (RangeLength modulo AlignmentGranularity) ]
    
    When processing a Set method or CreateRow method on the Locking
    table for a non-Global Range row, if:
    
    a) the AlignmentRequired (ALIGN above) column in the LockingInfo
       table is TRUE;
    b) RangeLength is non-zero; and
    c) LengthAlignment is non-zero, then the method SHALL fail and
       return an error status code INVALID_PARAMETER
    
    In userspace we stuck to logical block size reported by general
    block device (via sysfs or ioctl), but we can not read
    'AlignmentGranularity' or 'LowestAlignedLBA' anywhere else and
    we need to get those values from sed-opal interface otherwise
    we will not be able to report or avoid locking range setup
    INVALID_PARAMETER errors above.
    
    Signed-off-by: default avatarOndrej Kozina <okozina@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
    Tested-by: default avatarMilan Broz <gmazyland@gmail.com>
    Link: https://lore.kernel.org/r/20230411090931.9193-2-okozina@redhat.com
    
    
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>