• Nicholas Bellinger's avatar
    target/iblock: Use backend REQ_FLUSH hint for WriteCacheEnabled status · d0c8b259
    Nicholas Bellinger authored
    This patch allows IBLOCK to check block hints in request_queue->flush_flags
    when reporting current backend device WriteCacheEnabled status to a remote
    SCSI initiator port.
    
    This is done via a se_subsystem_api->get_write_cache() call instead of a
    backend se_device creation time flag, as we expect REQ_FLUSH bits to possibly
    change from an underlying blk_queue_flush() by the SCSI disk driver, or
    internal raw struct block_device driver usage.
    
    Also go ahead and update iblock_execute_rw() bio I/O path code to use
    REQ_FLUSH + REQ_FUA hints when determining WRITE_FUA usage, and make SPC
    emulation code use a spc_check_dev_wce() helper to handle both types of
    cases for virtual backend subsystem drivers.
    
    (asias: Drop unnecessary comparsion operators)
    Reported-by: default avatarmajianpeng <majianpeng@gmail.com>
    Cc: majianpeng <majianpeng@gmail.com>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    d0c8b259
target_core_spc.c 33.9 KB