lkml.org 
[lkml]   [2020]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v3 0/9] Add a new LOOP_SET_FD_AND_STATUS ioctl
    Date
    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

    \
     
     \ /
      Last update: 2020-04-27 09:42    [W:4.027 / U:0.196 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site