Commits
Nitesh-Shetty/…
Name already in use
Commits on Aug 11, 2023
-
null_blk: add support for copy offload
Implementation is based on existing read and write infrastructure. copy_max_bytes: A new configfs and module parameter is introduced, which can be used to set hardware/driver supported maximum copy limit. Only request based queue mode will support for copy offload. Added tracefs support to copy IO tracing. Suggested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
-
dm: Enable copy offload for dm-linear target
Setting copy_offload_supported flag to enable offload. Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com>
-
dm: Add support for copy offload
Before enabling copy for dm target, check if underlying devices and dm target support copy. Avoid split happening inside dm target. Fail early if the request needs split, currently splitting copy request is not supported. Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com>
-
nvmet: add copy command support for bdev and file ns
Add support for handling nvme_cmd_copy command on target. For bdev-ns if backing device supports copy offload we call device copy offload (blkdev_copy_offload). In case of partial completion from above or absence of device copy offload capability, we fallback to copy emulation (blkdev_copy_emulation) For file-ns we call vfs_copy_file_range to service our request. Currently target always shows copy capability by setting NVME_CTRL_ONCS_COPY in controller ONCS. loop target has copy support, which can be used to test copy offload. trace event support for nvme_cmd_copy. Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
-
nvme: add copy offload support
Current design only supports single source range. We receive a request with REQ_OP_COPY_SRC. Parse this request which consists of src(1st) and dst(2nd) bios. Form a copy command (TP 4065) trace event support for nvme_copy_cmd. Set the device copy limits to queue limits. Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Javier González <javier.gonz@samsung.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
-
fs, block: copy_file_range for def_blk_ops for direct block device
For direct block device opened with O_DIRECT, use copy_file_range to issue device copy offload, and fallback to generic_copy_file_range incase device copy offload capability is absent or the device files are not open with O_DIRECT. Signed-off-by: Anuj Gupta <anuj20.g@samsung.com> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com>
-
fs/read_write: Enable copy_file_range for block device.
This is a prep patch. Allow copy_file_range to work for block devices. Relaxing generic_copy_file_checks allows us to reuse the existing infra, instead of adding a new user interface for block copy offload. Change generic_copy_file_checks to use ->f_mapping->host for both inode_in and inode_out. Allow block device in generic_file_rw_checks. Signed-off-by: Anuj Gupta <anuj20.g@samsung.com> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com>
-
For the devices which does not support copy, copy emulation is added. It is required for in-kernel users like fabrics, where file descriptor is not available and hence they can't use copy_file_range. Copy-emulation is implemented by reading from source into memory and writing to the corresponding destination. Also emulation can be used, if copy offload fails or partially completes. At present in kernel user of emulation is NVMe fabrics. Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Vincent Fu <vincent.fu@samsung.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
-
block: add copy offload support
Introduce blkdev_copy_offload to perform copy offload. Issue REQ_OP_COPY_SRC with source info along with taking a plug. This flows till request layer and waits for dst bio to arrive. Issue REQ_OP_COPY_DST with destination info and this bio reaches request layer and merges with src request. For any reason, if a request comes to the driver with only one of src/dst bio, we fail the copy offload. Larger copy will be divided, based on max_copy_sectors limit. Signed-off-by: Anuj Gupta <anuj20.g@samsung.com> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com>
-
Add infrastructure for copy offload in block and request layer.
We add two new opcode REQ_OP_COPY_SRC, REQ_OP_COPY_DST. Since copy is a composite operation involving src and dst sectors/lba, each needs to be represented by a separate bio to make it compatible with device mapper. We expect caller to take a plug and send bio with source information, followed by bio with destination information. Once the src bio arrives we form a request and wait for destination bio. Upon arrival of destination we merge these two bio's and send corresponding request down to device driver. Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
-
block: Introduce queue limits and sysfs for copy-offload support
Add device limits as sysfs entries, - copy_max_bytes (RW) - copy_max_hw_bytes (RO) Above limits help to split the copy payload in block layer. copy_max_bytes: maximum total length of copy in single payload. copy_max_hw_bytes: Reflects the device supported maximum limit. Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Nitesh Shetty <nj.shetty@samsung.com> Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
Commits on Aug 7, 2023
-
Add linux-next specific files for 20230807
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/jgg/iommufd.git
-
Merge branch 'for-next/kspp' of git://git.kernel.org/pub/scm/linux/ke…
…rnel/git/gustavoars/linux.git
-
Merge branch 'for-next/kspp' of git://git.kernel.org/pub/scm/linux/ke…
…rnel/git/kees/linux.git
-
Merge branch 'sysctl-next' of git://git.kernel.org/pub/scm/linux/kern…
…el/git/mcgrof/linux.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/vbabka/slab.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/krisman/unicode.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/rppt/memblock.git
-
Merge branch 'mhi-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/mani/mhi.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/srini/nvmem.git
-
Merge branch 'for-next/seccomp' of git://git.kernel.org/pub/scm/linux…
…/kernel/git/kees/linux.git
-
Merge branch 'libnvdimm-for-next' of git://git.kernel.org/pub/scm/lin…
…ux/kernel/git/nvdimm/nvdimm.git
-
Merge branch 'rtc-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/abelloni/linux.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/livepatching/livepatching
-
Merge branch 'kunit' of git://git.kernel.org/pub/scm/linux/kernel/git…
…/shuah/linux-kselftest.git
-
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/…
…shuah/linux-kselftest.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/ebiederm/user-namespace.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/thierry.reding/linux-pwm.git
-
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/…
…git/linusw/linux-pinctrl.git