On Mon, Jun 23, 2025 at 04:12:25PM +0200, Christoph Hellwig wrote: > @@ -888,7 +899,9 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req, > goto out_free_sg; > } > > - if (nvme_pci_use_sgls(dev, req, iod->sgt.nents)) > + if (use_sgl == SGL_FORCED || > + (use_sgl == SGL_SUPPORTED && > + (!sgl_threshold || nvme_pci_avg_seg_size(req) >= sgl_threshold))) > ret = nvme_pci_setup_sgls(nvmeq, req, &cmnd->rw); We historically interpreted sgl_threshold set to 0 to mean disable SGL usage, maybe because the controller is broken or something. It might be okay to have 0 mean to not consider segment sizes, but I just wanted to point out this is a different interpretation of the user parameter.