Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp9474230pxu; Mon, 28 Dec 2020 17:52:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJx4+ROqQ9PzkvaL0trpOzIlSt7bg19FhZcadtGNm9TTUroM1cqze+o3MWBJN/VgGpFAnqND X-Received: by 2002:aa7:c3cf:: with SMTP id l15mr45796451edr.282.1609206724680; Mon, 28 Dec 2020 17:52:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1609206724; cv=none; d=google.com; s=arc-20160816; b=mewDTrJie3tx8O+cpxOgFsf78Y3mP2bYZgUtHJxYJ+GTlG6D3KDVbsQkP9cvARNdVA /LGcKxfMRlK6rwEFh16zi5dH65hUS3g79+7ZPmzwiAsWoxj6mxX3wDKDkqgFqve0NLat s34D7zYk5j/GSwjEiPR3cqnJJJ5P5CjyrPUwMzN6kLFS5onrm+Kx9dBYSLao6d3JV62a be33YjhaMOqGg5VLug35A6zfhMvGUisft30bG2nV9En5FXADe6t2h81SXHENvGL4tSNv 2Pc2VYVQyNIQDs4Reroniqqn67SLbL5cejH7obQhmPH1sC7ZwsTuQEXrBjNXH/14n+wh GZgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=pQy9bFC/Uhj9HBSa6/7joHuMIi+g8nSBYX4/BySJdl4=; b=h1E4T9xaiUlXXIDthxNYJLGPFoEpo8Pras9pVu/qcEHEJDJ+v/pkKABWnonX4UWRS4 P6rIkzRXduvWU1MzQFuyDoNtcefeaEjWxGmaKDYAhqV8Sp7tJyia4ZGwpDYy6ebXSEsI zV4StYmen6PvCl7vkmQgEpcwPWv8AC1s50NHUjd4CjtgTpZb75L28J5gHNK4M8AMP6Ny ztQpN0yoVUl0+sEDKS7nV43cFpyOSeVYPNzKrhFbUSP2/A4g08YAlXKmQyIABU5UvAJe 90WpxN5qnoNJuZMa71789/aZEVEVqfMR8SGI7JpqtfTdCTzmdtYoPr4ml8WSH0a1Jqg3 sH/Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x9si19924896eje.134.2020.12.28.17.51.42; Mon, 28 Dec 2020 17:52:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729735AbgL2AAR (ORCPT + 99 others); Mon, 28 Dec 2020 19:00:17 -0500 Received: from smtp.infotech.no ([82.134.31.41]:59799 "EHLO smtp.infotech.no" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729004AbgL2AAR (ORCPT ); Mon, 28 Dec 2020 19:00:17 -0500 Received: from localhost (localhost [127.0.0.1]) by smtp.infotech.no (Postfix) with ESMTP id 34DD4204271; Tue, 29 Dec 2020 00:50:06 +0100 (CET) X-Virus-Scanned: by amavisd-new-2.6.6 (20110518) (Debian) at infotech.no Received: from smtp.infotech.no ([127.0.0.1]) by localhost (smtp.infotech.no [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JvVK8k-3kqyi; Tue, 29 Dec 2020 00:49:59 +0100 (CET) Received: from xtwo70.bingwo.ca (host-104-157-204-209.dyn.295.ca [104.157.204.209]) by smtp.infotech.no (Postfix) with ESMTPA id 47D3C204193; Tue, 29 Dec 2020 00:49:58 +0100 (CET) From: Douglas Gilbert To: linux-scsi@vger.kernel.org, linux-block@vger.kernel.org, target-devel@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org Cc: martin.petersen@oracle.com, jejb@linux.vnet.ibm.com, bostroesser@gmail.com, bvanassche@acm.org, ddiss@suse.de Subject: [PATCH v5 0/4] scatterlist: add new capabilities Date: Mon, 28 Dec 2020 18:49:51 -0500 Message-Id: <20201228234955.190858-1-dgilbert@interlog.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Scatter-gather lists (sgl_s) are frequently used as data carriers in the block layer. For example the SCSI and NVMe subsystems interchange data with the block layer using sgl_s. The sgl API is declared in The author has extended these transient sgl use cases to a store (i.e. a ramdisk) in the scsi_debug driver. Other new potential uses of sgl_s could be for the target subsystem. When this extra step is taken, the need to copy between sgl_s becomes apparent. The patchset adds sgl_copy_sgl(), sgl_compare_sgl() and sgl_memset(). The existing sgl_alloc_order() function can be seen as a replacement for vmalloc() for large, long-term allocations. For what seems like no good reason, sgl_alloc_order() currently restricts its total allocation to less than or equal to 4 GiB. vmalloc() has no such restriction. Changes since v3 [posted 20201105]: - rebase on lk 5.11.0-rc2 Changes since v3 [posted 20201019]: - re-instate check on integer overflow of nent calculation in sgl_alloc_order(). Do it in such a way as to not limit the overall sgl size to 4 GiB - introduce sgl_compare_sgl_idx() helper function that, if requested and if a miscompare is detected, will yield the byte index of the first miscompare. - add Reviewed-by tags from Bodo Stroesser - rebase on lk 5.10.0-rc2 [was on lk 5.9.0] Changes since v2 [posted 20201018]: - remove unneeded lines from sgl_memset() definition. - change sg_zero_buffer() to call sgl_memset() as the former is a subset. Changes since v1 [posted 20201016]: - Bodo Stroesser pointed out a problem with the nesting of kmap_atomic() [called via sg_miter_next()] and kunmap_atomic() calls [called via sg_miter_stop()] and proposed a solution that simplifies the previous code. - the new implementation of the three functions has shorter periods when pre-emption is disabled (but has more them). This should make operations on large sgl_s more pre-emption "friendly" with a relatively small performance hit. - sgl_memset return type changed from void to size_t and is the number of bytes actually (over)written. That number is needed anyway internally so may as well return it as it may be useful to the caller. This patchset is against lk 5.10.0-rc2 Douglas Gilbert (4): sgl_alloc_order: remove 4 GiB limit, sgl_free() warning scatterlist: add sgl_copy_sgl() function scatterlist: add sgl_compare_sgl() function scatterlist: add sgl_memset() include/linux/scatterlist.h | 16 +++ lib/scatterlist.c | 244 +++++++++++++++++++++++++++++++++--- 2 files changed, 243 insertions(+), 17 deletions(-) -- 2.25.1