linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 00/11] Add a new LOOP_CONFIGURE ioctl
@ 2020-05-13 13:38 Martijn Coenen
  2020-05-13 13:38 ` [PATCH v5 01/11] loop: Call loop_config_discard() only after new config is applied Martijn Coenen
                   ` (11 more replies)
  0 siblings, 12 replies; 15+ messages in thread
From: Martijn Coenen @ 2020-05-13 13:38 UTC (permalink / raw)
  To: axboe, hch, ming.lei
  Cc: narayan, zezeozue, maco, kernel-team, bvanassche,
	Chaitanya.Kulkarni, jaegeuk, linux-block, linux-kernel,
	Martijn Coenen

This series introduces a new ioctl that makes it possible to atomically
configure a loop device. Previously, if you wanted to set parameters
such as the offset on a loop device, this required calling LOOP_SET_FD
to set the backing file, and then LOOP_SET_STATUS to set the offset.
However, in between these two calls, the loop device is available and
would accept requests, which is generally not desirable. Similar issues
exist around setting the block size (LOOP_SET_BLOCK_SIZE) and requesting
direct I/O mode (LOOP_SET_DIRECT_IO).

There are also performance benefits with combining these ioctls into
one, which are described in more detail in the last change in the
series.

---
v5:
  - Added "loop: Call loop_config_discard() ..." as a first patch to
    this series, as the rest of the refactoring done depends on it.
  - Removed sector_t truncation checks, as suggested by Ming Lei.

v4:
  - Addressed review comments from Christoph Hellwig:
    -- Minor code cleanups
    -- Clarified what lo_flags LOOP_SET_STATUS can set and clear, and
       made that more explicit in the code (see [10/11])
    -- LOOP_CONFIGURE can now also be used to configure the block size
       and to explicitly request Direct I/O and read-only mode.
    -- Explicitly reject lo_flags we don't know about in LOOP_CONFIGURE
    -- Renamed LOOP_SET_FD_AND_STATUS to LOOP_CONFIGURE, since the ioctl
       can now do things LOOP_SET_STATUS couldn't do.
v3:
  - Addressed review comments from Christoph Hellwig:
    -- Factored out loop_validate_size()
    -- Split up the largish first patch in a few smaller ones
    -- Use set_capacity_revalidate_and_notify()
  - Fixed a variable wrongly using size_t instead of loff_t
v2:
  - Addressed review comments from Bart van Assche:
    -- Use SECTOR_SHIFT constant
    -- Renamed loop_set_from_status() to loop_set_status_from_info()
    -- Added kerneldoc for loop_set_status_from_info()
    -- Removed dots in patch subject lines
  - Addressed review comments from Christoph Hellwig:
    -- Added missing padding in struct loop_fd_and_status
    -- Cleaned up some __user pointer handling in lo_ioctl
    -- Pass in a stack-initialized loop_info64 for the legacy
       LOOP_SET_FD case

Martijn Coenen (11):
  loop: Call loop_config_discard() only after new config is applied
  loop: Remove sector_t truncation checks
  loop: Factor out setting loop device size
  loop: Switch to set_capacity_revalidate_and_notify()
  loop: Refactor loop_set_status() size calculation
  loop: Remove figure_loop_size()
  loop: Factor out configuring loop from status
  loop: Move loop_set_status_from_info() and friends up
  loop: Rework lo_ioctl() __user argument casting
  loop: Clean up LOOP_SET_STATUS lo_flags handling
  loop: Add LOOP_CONFIGURE ioctl

 drivers/block/loop.c      | 381 ++++++++++++++++++++++----------------
 include/uapi/linux/loop.h |  31 +++-
 2 files changed, 255 insertions(+), 157 deletions(-)

-- 
2.26.2.645.ge9eca65c58-goog


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2021-06-11 23:01 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-13 13:38 [PATCH v5 00/11] Add a new LOOP_CONFIGURE ioctl Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 01/11] loop: Call loop_config_discard() only after new config is applied Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 02/11] loop: Remove sector_t truncation checks Martijn Coenen
2020-05-13 13:45   ` Christoph Hellwig
2020-05-13 13:38 ` [PATCH v5 03/11] loop: Factor out setting loop device size Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 04/11] loop: Switch to set_capacity_revalidate_and_notify() Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 05/11] loop: Refactor loop_set_status() size calculation Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 06/11] loop: Remove figure_loop_size() Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 07/11] loop: Factor out configuring loop from status Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 08/11] loop: Move loop_set_status_from_info() and friends up Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 09/11] loop: Rework lo_ioctl() __user argument casting Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 10/11] loop: Clean up LOOP_SET_STATUS lo_flags handling Martijn Coenen
2020-05-13 13:38 ` [PATCH v5 11/11] loop: Add LOOP_CONFIGURE ioctl Martijn Coenen
2021-06-11 22:54   ` Kristian Klausen
2020-05-21 14:21 ` [PATCH v5 00/11] Add a new " Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).