[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CADUfDZr6d_EV6sek0K1ULpg2T862PsnnFT08PhoX9WjHGBA=0w@mail.gmail.com>
Date: Thu, 17 Jul 2025 16:04:31 -0400
From: Caleb Sander Mateos <csander@...estorage.com>
To: Chris Mason <clm@...com>, Josef Bacik <josef@...icpanda.com>, David Sterba <dsterba@...e.com>,
Jens Axboe <axboe@...nel.dk>
Cc: Mark Harmstone <maharmstone@...com>, linux-btrfs@...r.kernel.org,
io-uring@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 0/4] io_uring/btrfs: remove struct io_uring_cmd_data
Hi Jens,
Are you satisfied with the updated version of this series? Let me know
if there's anything else you'd like to see.
Thanks,
Caleb
On Tue, Jul 8, 2025 at 4:22 PM Caleb Sander Mateos
<csander@...estorage.com> wrote:
>
> btrfs's ->uring_cmd() implementations are the only ones using io_uring_cmd_data
> to store data that lasts for the lifetime of the uring_cmd. But all uring_cmds
> have to pay the memory and CPU cost of initializing this field and freeing the
> pointer if necessary when the uring_cmd ends. There is already a pdu field in
> struct io_uring_cmd that ->uring_cmd() implementations can use for storage. The
> only benefit of op_data seems to be that io_uring initializes it, so
> ->uring_cmd() can read it to tell if there was a previous call to ->uring_cmd().
>
> Introduce a flag IORING_URING_CMD_REISSUE that ->uring_cmd() implementations can
> use to tell if this is the first call to ->uring_cmd() or a reissue of the
> uring_cmd. Switch btrfs to use the pdu storage for its btrfs_uring_encoded_data.
> If IORING_URING_CMD_REISSUE is unset, allocate a new btrfs_uring_encoded_data.
> If it's set, use the existing one in op_data. Free the btrfs_uring_encoded_data
> in the btrfs layer instead of relying on io_uring to free op_data. Finally,
> remove io_uring_cmd_data since it's now unused.
>
> Caleb Sander Mateos (4):
> btrfs/ioctl: don't skip accounting in early ENOTTY return
> io_uring/cmd: introduce IORING_URING_CMD_REISSUE flag
> btrfs/ioctl: store btrfs_uring_encoded_data in io_btrfs_cmd
> io_uring/cmd: remove struct io_uring_cmd_data
>
> fs/btrfs/ioctl.c | 41 +++++++++++++++++++++++++-----------
> include/linux/io_uring/cmd.h | 11 ++--------
> io_uring/uring_cmd.c | 18 ++++++----------
> io_uring/uring_cmd.h | 1 -
> 4 files changed, 37 insertions(+), 34 deletions(-)
>
> v2:
> - Don't branch twice on -EAGAIN in io_uring_cmd() (Jens)
> - Rebase on for-6.17/io_uring
>
> --
> 2.45.2
>
Powered by blists - more mailing lists