23 Sep, 2019

1 commit

  • Changing the switch() statement to symbolic constants made the compiler
    (at least clang-9, did not check gcc) notice that there is one enum value
    that is not handled here:

    block/t10-pi.c:62:11: error: enumeration value 'T10_PI_TYPE0_PROTECTION'
    not handled in switch [-Werror,-Wswitch]

    Add a BUG_ON statement if we ever get to t10_pi_verify function with
    TYPE0 and replace the switch() statement with if/else clause for the
    valid types.

    Fixes: 9b2061b1a262 ("block: use symbolic constants for t10_pi type")
    Cc: Arnd Bergmann
    Signed-off-by: Max Gurtovoy
    Signed-off-by: Jens Axboe

    Max Gurtovoy
     

18 Sep, 2019

2 commits

  • Currently t10_pi_prepare/t10_pi_complete functions are called during the
    NVMe and SCSi layers command preparetion/completion, but their actual
    place should be the block layer since T10-PI is a general data integrity
    feature that is used by block storage protocols. Introduce .prepare_fn
    and .complete_fn callbacks within the integrity profile that each type
    can implement according to its needs.

    Suggested-by: Christoph Hellwig
    Reviewed-by: Christoph Hellwig
    Suggested-by: Martin K. Petersen
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Max Gurtovoy

    Fixed to not call queue integrity functions if BLK_DEV_INTEGRITY
    isn't defined in the config.

    Signed-off-by: Jens Axboe

    Max Gurtovoy
     
  • Replace all hard-coded values with T10_PI_TYPES to make the code more
    readable.

    Reviewed-by: Christoph Hellwig
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Max Gurtovoy
    Signed-off-by: Jens Axboe

    Max Gurtovoy
     

01 May, 2019

1 commit


30 Jul, 2018

1 commit

  • Currently these functions are implemented in the scsi layer, but their
    actual place should be the block layer since T10-PI is a general data
    integrity feature that is used in the nvme protocol as well. Also, use
    the tuple size from the integrity profile since it may vary between
    integrity types.

    Suggested-by: Christoph Hellwig
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Max Gurtovoy
    Signed-off-by: Jens Axboe

    Max Gurtovoy
     

04 Jul, 2017

1 commit


16 Jun, 2017

1 commit

  • This patch fixes two sparse warnings introduced by the "dedicated
    error codes for the block layer V3" patch series. These changes
    have not been tested.

    Signed-off-by: Bart Van Assche
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Bart Van Assche
     

09 Jun, 2017

1 commit

  • Replace bi_error with a new bi_status to allow for a clear conversion.
    Note that device mapper overloaded bi_error with a private value, which
    we'll have to keep arround at least for now and thus propagate to a
    proper blk_status_t value.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Christoph Hellwig
     

25 Mar, 2017

1 commit


22 Oct, 2015

1 commit

  • We previously made a complete copy of a device's data integrity profile
    even though several of the fields inside the blk_integrity struct are
    pointers to fixed template entries in t10-pi.c.

    Split the static and per-device portions so that we can reference the
    template directly.

    Signed-off-by: Martin K. Petersen
    Reported-by: Christoph Hellwig
    Reviewed-by: Sagi Grimberg
    Cc: Dan Williams
    Signed-off-by: Dan Williams
    Signed-off-by: Jens Axboe

    Martin K. Petersen
     

27 Sep, 2014

1 commit

  • The T10 Protection Information format is also used by some devices that
    do not go through the SCSI layer (virtual block devices, NVMe). Relocate
    the relevant functions to a block layer library that can be used without
    involving SCSI.

    Signed-off-by: Martin K. Petersen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Jens Axboe

    Martin K. Petersen