lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <ZOki7u/zJGmZtL6g@dread.disaster.area> Date: Sat, 26 Aug 2023 07:53:50 +1000 From: Dave Chinner <david@...morbit.com> To: Hao Xu <hao.xu@...ux.dev> Cc: io-uring@...r.kernel.org, Jens Axboe <axboe@...nel.dk>, Dominique Martinet <asmadeus@...ewreck.org>, Pavel Begunkov <asml.silence@...il.com>, Christian Brauner <brauner@...nel.org>, Alexander Viro <viro@...iv.linux.org.uk>, Stefan Roesch <shr@...com>, Clay Harris <bugs@...ycon.org>, "Darrick J . Wong" <djwong@...nel.org>, linux-fsdevel@...r.kernel.org, linux-xfs@...r.kernel.org, linux-ext4@...r.kernel.org, linux-cachefs@...hat.com, ecryptfs@...r.kernel.org, linux-nfs@...r.kernel.org, linux-unionfs@...r.kernel.org, bpf@...r.kernel.org, netdev@...r.kernel.org, linux-s390@...r.kernel.org, linux-kernel@...r.kernel.org, linux-block@...r.kernel.org, linux-btrfs@...r.kernel.org, codalist@...a.cs.cmu.edu, linux-f2fs-devel@...ts.sourceforge.net, cluster-devel@...hat.com, linux-mm@...ck.org, linux-nilfs@...r.kernel.org, devel@...ts.orangefs.org, linux-cifs@...r.kernel.org, samba-technical@...ts.samba.org, linux-mtd@...ts.infradead.org, Wanpeng Li <wanpengli@...cent.com> Subject: Re: [PATCH 24/29] xfs: support nowait for xfs_buf_read_map() On Fri, Aug 25, 2023 at 09:54:26PM +0800, Hao Xu wrote: > From: Hao Xu <howeyxu@...cent.com> > > This causes xfstests generic/232 hung in umount process, waiting for ail > push, so I comment it for now, need some hints from xfs folks. > Not a real patch. > > Signed-off-by: Hao Xu <howeyxu@...cent.com> > --- > fs/xfs/xfs_buf.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c > index cdad80e1ae25..284962a9f31a 100644 > --- a/fs/xfs/xfs_buf.c > +++ b/fs/xfs/xfs_buf.c > @@ -828,6 +828,13 @@ xfs_buf_read_map( > trace_xfs_buf_read(bp, flags, _RET_IP_); > > if (!(bp->b_flags & XBF_DONE)) { > +// /* > +// * Let's bypass the _xfs_buf_read() for now > +// */ > +// if (flags & XBF_NOWAIT) { > +// xfs_buf_relse(bp); > +// return -EAGAIN; > +// } This is *fundamentally broken*, and apart from anything else breaks readahead. IF we asked for a read, we cannot instantiate the buffer and then *not issue any IO on it* and release it. That leaves an uninitialised buffer in memory, and there's every chance that something then trips over it and bad things happen. A buffer like this *must* be errored out and marked stale so that the next access to it will then re-initialise the buffer state and trigger any preparatory work that needs to be done for the new operation. This comes back to my first comments that XBF_TRYLOCK cannot simpy be replaced with XBF_NOWAIT semantics... -Dave. -- Dave Chinner david@...morbit.com
Powered by blists - more mailing lists