The block layer only accepts max_segment_size values smaller than the page size if the QUEUE_FLAG_SUB_PAGE_SEGMENTS flag is set. Hence this patch. Cc: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> Cc: Kiwoong Kim <kwmad.kim@xxxxxxxxxxx> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> --- drivers/scsi/scsi_lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 9ed1ebcb7443..91f2e7f787d8 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -1876,6 +1876,9 @@ void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q) { struct device *dev = shost->dma_dev; + if (shost->max_segment_size && shost->max_segment_size < PAGE_SIZE) + blk_queue_flag_set(QUEUE_FLAG_SUB_PAGE_SEGMENTS, q); + /* * this limit is imposed by hardware restrictions */