[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240926174043.GA2166429@unreal>
Date: Thu, 26 Sep 2024 20:40:43 +0300
From: Leon Romanovsky <leon@...nel.org>
To: Christian Brauner <brauner@...nel.org>,
David Howells <dhowells@...hat.com>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [GIT PULL] vfs netfs
On Fri, Sep 13, 2024 at 06:56:36PM +0200, Christian Brauner wrote:
> Hey Linus,
>
> /* Summary */
>
> This contains the work to improve read/write performance for the new
> netfs library.
>
> The main performance enhancing changes are:
>
> - Define a structure, struct folio_queue, and a new iterator type,
> ITER_FOLIOQ, to hold a buffer as a replacement for ITER_XARRAY. See
> that patch for questions about naming and form.
>
> ITER_FOLIOQ is provided as a replacement for ITER_XARRAY. The
> problem with an xarray is that accessing it requires the use of a
> lock (typically the RCU read lock) - and this means that we can't
> supply iterate_and_advance() with a step function that might sleep
> (crypto for example) without having to drop the lock between
> pages. ITER_FOLIOQ is the iterator for a chain of folio_queue
> structs, where each folio_queue holds a small list of folios. A
> folio_queue struct is a simpler structure than xarray and is not
> subject to concurrent manipulation by the VM. folio_queue is used
> rather than a bvec[] as it can form lists of indefinite size,
> adding to one end and removing from the other on the fly.
<...>
> David Howells (24):
> cachefiles: Fix non-taking of sb_writers around set/removexattr
> netfs: Adjust labels in /proc/fs/netfs/stats
> netfs: Record contention stats for writeback lock
> netfs: Reduce number of conditional branches in netfs_perform_write()
> netfs, cifs: Move CIFS_INO_MODIFIED_ATTR to netfs_inode
> netfs: Move max_len/max_nr_segs from netfs_io_subrequest to netfs_io_stream
> netfs: Reserve netfs_sreq_source 0 as unset/unknown
> netfs: Remove NETFS_COPY_TO_CACHE
> netfs: Set the request work function upon allocation
> netfs: Use bh-disabling spinlocks for rreq->lock
> mm: Define struct folio_queue and ITER_FOLIOQ to handle a sequence of folios
> iov_iter: Provide copy_folio_from_iter()
> cifs: Provide the capability to extract from ITER_FOLIOQ to RDMA SGEs
> netfs: Use new folio_queue data type and iterator instead of xarray iter
> netfs: Provide an iterator-reset function
> netfs: Simplify the writeback code
> afs: Make read subreqs async
> netfs: Speed up buffered reading
> netfs: Remove fs/netfs/io.c
> cachefiles, netfs: Fix write to partial block at EOF
> netfs: Cancel dirty folios that have no storage destination
> cifs: Use iterate_and_advance*() routines directly for hashing
> cifs: Switch crypto buffer to use a folio_queue rather than an xarray
> cifs: Don't support ITER_XARRAY
Christian, David,
Do you have fixes for the following issues reported for series?
https://lore.kernel.org/all/20240923183432.1876750-1-chantr4@gmail.com/
https://lore.kernel.org/all/4b5621958a758da830c1cf09c6f6893aed371f9d.camel@gmail.com/
https://lore.kernel.org/all/20240924094809.GA1182241@unreal/
In my case, I don't have any other workaround but simply revert these commits:
"netfs: Use new folio_queue data type and iterator instead of xarray iter"
"netfs: Provide an iterator-reset function"
"netfs: Simplify the writeback code"
"afs: Make read subreqs async"
"netfs: Speed up buffered reading"
"netfs: Remove fs/netfs/io.c"
"cachefiles, netfs: Fix write to partial block at EOF"
"netfs: Cancel dirty folios that have no storage destination"
"cifs: Use iterate_and_advance*() routines directly for hashing"
"cifs: Switch crypto buffer to use a folio_queue rather than an xarray"
"cifs: Don't support ITER_XARRAY"
"cifs: Fix signature miscalculation"
"cifs: Fix cifs readv callback merge resolution issue"
"cifs: Remove redundant setting of NETFS_SREQ_HIT_EOF"
Thanks
Powered by blists - more mailing lists