linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Martijn Coenen <maco@android.com>
To: axboe@kernel.dk, hch@lst.de, ming.lei@redhat.com
Cc: narayan@google.com, zezeozue@google.com, kernel-team@android.com,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
	maco@google.com, bvanassche@acm.org, Chaitanya.Kulkarni@wdc.com,
	jaegeuk@kernel.org, Martijn Coenen <maco@android.com>
Subject: [PATCH v3 0/9] Add a new LOOP_SET_FD_AND_STATUS ioctl
Date: Mon, 27 Apr 2020 09:42:13 +0200	[thread overview]
Message-ID: <20200427074222.65369-1-maco@android.com> (raw)

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.

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

Note that this series depends on
"loop: Call loop_config_discard() only after new config is applied."
[0], which I sent as a separate patch as it fixes an unrelated bug.

[0]: https://lkml.org/lkml/2020/3/31/755

---
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 (9):
  loop: Factor out loop size validation
  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: Add LOOP_SET_FD_AND_STATUS ioctl

 drivers/block/loop.c      | 337 +++++++++++++++++++++++---------------
 include/uapi/linux/loop.h |   7 +
 2 files changed, 208 insertions(+), 136 deletions(-)

-- 
2.26.2.303.gf8c07b1a785-goog


             reply	other threads:[~2020-04-27  7:43 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-27  7:42 Martijn Coenen [this message]
2020-04-27  7:42 ` [PATCH v3 1/9] loop: Factor out loop size validation Martijn Coenen
2020-04-27 14:53   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 2/9] loop: Factor out setting loop device size Martijn Coenen
2020-04-27 14:53   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 3/9] loop: Switch to set_capacity_revalidate_and_notify() Martijn Coenen
2020-04-27 14:54   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 4/9] loop: Refactor loop_set_status() size calculation Martijn Coenen
2020-04-27 14:55   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 5/9] loop: Remove figure_loop_size() Martijn Coenen
2020-04-27 14:56   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 6/9] loop: Factor out configuring loop from status Martijn Coenen
2020-04-27 14:57   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 7/9] loop: Move loop_set_status_from_info() and friends up Martijn Coenen
2020-04-27 14:57   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 8/9] loop: Rework lo_ioctl() __user argument casting Martijn Coenen
2020-04-27 14:57   ` Christoph Hellwig
2020-04-27  7:42 ` [PATCH v3 9/9] loop: Add LOOP_SET_FD_AND_STATUS ioctl Martijn Coenen
2020-04-27 14:58   ` Christoph Hellwig
2020-04-27 17:06 ` [PATCH v3 0/9] Add a new " Christoph Hellwig
2020-04-27 20:34   ` Martijn Coenen
2020-04-28  7:02     ` Christoph Hellwig
2020-04-28 14:57       ` Martijn Coenen
2020-04-29 14:06         ` Martijn Coenen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200427074222.65369-1-maco@android.com \
    --to=maco@android.com \
    --cc=Chaitanya.Kulkarni@wdc.com \
    --cc=axboe@kernel.dk \
    --cc=bvanassche@acm.org \
    --cc=hch@lst.de \
    --cc=jaegeuk@kernel.org \
    --cc=kernel-team@android.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maco@google.com \
    --cc=ming.lei@redhat.com \
    --cc=narayan@google.com \
    --cc=zezeozue@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).