All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kent Overstreet <kent.overstreet@gmail.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: Matthew Wilcox <willy@infradead.org>,
	linux-mm <linux-mm@kvack.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Johannes Weiner <hannes@cmpxchg.org>
Subject: Re: [PATCH] mm: mark async iocb read as NOWAIT once some data has been, copied
Date: Sat, 17 Oct 2020 15:13:20 -0400	[thread overview]
Message-ID: <20201017191320.GA2198928@zaphod.evilpiepirate.org> (raw)
In-Reply-To: <e8850ae5-2c9e-4c5b-0aed-893577a83512@kernel.dk>

On Sat, Oct 17, 2020 at 11:30:47AM -0600, Jens Axboe wrote:
> On 10/17/20 10:28 AM, Matthew Wilcox wrote:
> > On Sat, Oct 17, 2020 at 09:30:59AM -0600, Jens Axboe wrote:
> >> Once we've copied some data for an iocb that is marked with IOCB_WAITQ,
> >> we should no longer attempt to async lock a new page. Instead make sure
> >> we return the copied amount, and let the caller retry, instead of
> >> returning -EIOCBQUEUED for a new page.
> >>
> >> This should only be possible with read-ahead disabled on the below
> >> device, and multiple threads racing on the same file. Haven't been able
> >> to reproduce on anything else.
> > 
> > Wouldn't this do the job just as well?
> > 
> > @@ -2211,6 +2211,8 @@ ssize_t generic_file_buffered_read(struct kiocb *iocb,
> >  
> >                 put_page(page);
> >                 written += ret;
> > +               if (iocb->ki_flags & IOCB_WAITQ)
> > +                       iocb->ki_flags |= IOCB_NOWAIT;
> >                 if (!iov_iter_count(iter))
> >                         goto out;
> >                 if (ret < nr) {
> 
> Indeed, that's cleaner. Let me re-test with that just to be on the safe
> side, and I'll post a new one.

generic_file_buffered_read() has written passed in, which can be nonzero (DIO
fallback) - we probably want the check to be at the top of the loop.


  reply	other threads:[~2020-10-17 19:13 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-17 15:30 [PATCH] mm: mark async iocb read as NOWAIT once some data has been, copied Jens Axboe
2020-10-17 16:28 ` Matthew Wilcox
2020-10-17 17:30   ` Jens Axboe
2020-10-17 19:13     ` Kent Overstreet [this message]
2020-10-17 19:36       ` Jens Axboe

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=20201017191320.GA2198928@zaphod.evilpiepirate.org \
    --to=kent.overstreet@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=hannes@cmpxchg.org \
    --cc=linux-mm@kvack.org \
    --cc=willy@infradead.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.