linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL] orangefs pull request for 5.13
@ 2021-05-02 20:45 Mike Marshall
  2021-05-02 21:37 ` pr-tracker-bot
  2021-05-02 22:58 ` Matthew Wilcox
  0 siblings, 2 replies; 4+ messages in thread
From: Mike Marshall @ 2021-05-02 20:45 UTC (permalink / raw)
  To: Linus Torvalds, linux-fsdevel, Mike Marshall, Mike Marshall

The following changes since commit acd3d28594536e9096c1ea76c5867d8a68babef6:

  Merge tag 'fixes-v5.13' of
git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
(2021-04-27 19:32:55 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
tags/for-linus-5.13-ofs-1

for you to fetch changes up to 211f9f2e0503efa4023a46920e7ad07377b4ec58:

  orangefs: leave files in the page cache for a few micro seconds at
least (2021-04-29 08:06:05 -0400)

----------------------------------------------------------------
orangefs: implement orangefs_readahead

mm/readahead.c/read_pages was quite a bit different back
when I put my open-coded readahead logic into orangefs_readpage.
It seemed to work as designed then, it is a trainwreck now.

This patch implements orangefs_readahead using new xarray
and readahead_expand features that have just been pulled and
removes all my open-coded readahead logic.

This patch results in an extreme read performance improvement,
these sample numbers are from my test VM:

Here's an example of what's upstream in
5.11.8-200.fc33.x86_64:

30+0 records in
30+0 records out
125829120 bytes (126 MB, 120 MiB) copied, 5.77943 s, 21.8 MB/s

And here's this version of orangefs_readahead on top of
5.12.0-rc4:

30+0 records in
30+0 records out
125829120 bytes (126 MB, 120 MiB) copied, 0.325919 s, 386 MB/s

There are four xfstest regressions with this patch. David Howells
and Matthew Wilcox have been helping me work with this code. One
of the regressions has gone away with the most recent version of
their code that I'm using. I hope this patch can be
pulled even though there are still a few regressions, and that
we can try to get them resolved during the RC period.

----------------------------------------------------------------
Mike Marshall (2):
      Orangef: implement orangefs_readahead.
      orangefs: leave files in the page cache for a few micro seconds at least

 fs/orangefs/file.c         |  34 +++----------
 fs/orangefs/inode.c        | 122 +++++++++++++++++----------------------------
 fs/orangefs/orangefs-mod.c |   2 +-
 3 files changed, 54 insertions(+), 104 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] orangefs pull request for 5.13
  2021-05-02 20:45 [GIT PULL] orangefs pull request for 5.13 Mike Marshall
@ 2021-05-02 21:37 ` pr-tracker-bot
  2021-05-02 22:58 ` Matthew Wilcox
  1 sibling, 0 replies; 4+ messages in thread
From: pr-tracker-bot @ 2021-05-02 21:37 UTC (permalink / raw)
  To: Mike Marshall; +Cc: Linus Torvalds, linux-fsdevel, Mike Marshall, Mike Marshall

The pull request you sent on Sun, 2 May 2021 16:45:19 -0400:

> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git tags/for-linus-5.13-ofs-1

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/9ccce092fc64d19504fa54de4fd659e279cc92e7

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] orangefs pull request for 5.13
  2021-05-02 20:45 [GIT PULL] orangefs pull request for 5.13 Mike Marshall
  2021-05-02 21:37 ` pr-tracker-bot
@ 2021-05-02 22:58 ` Matthew Wilcox
  2021-05-03 15:43   ` Mike Marshall
  1 sibling, 1 reply; 4+ messages in thread
From: Matthew Wilcox @ 2021-05-02 22:58 UTC (permalink / raw)
  To: Mike Marshall; +Cc: Linus Torvalds, linux-fsdevel, Mike Marshall

On Sun, May 02, 2021 at 04:45:19PM -0400, Mike Marshall wrote:
> orangefs: implement orangefs_readahead
> 
> mm/readahead.c/read_pages was quite a bit different back
> when I put my open-coded readahead logic into orangefs_readpage.
> It seemed to work as designed then, it is a trainwreck now.

Hey Mike,

I happened to have a chance to look at orangefs_readahead today, and
I'd like to suggest a minor improvement.

It's possible for rac->file to be NULL if the caller doesn't have a
struct file.  I think that only happens when filesystems call their own
readahead routine internally, but in case it might happen from generic
code in the future, I recommend you do something like ...

-       struct file *file = rac->file;
-       struct inode *inode = file->f_mapping->host;
+       struct inode *inode = rac->mapping->host;
...
-       i_pages = &file->f_mapping->i_pages;
+       i_pages = &rac->mapping->i_pages;
...
-                       inode->i_size, NULL, NULL, file)) < 0)
+                       inode->i_size, NULL, NULL, rac->file)) < 0)

(i have this change all tangled up with some other changes in my tree,
so no easy patch to apply, sorry)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [GIT PULL] orangefs pull request for 5.13
  2021-05-02 22:58 ` Matthew Wilcox
@ 2021-05-03 15:43   ` Mike Marshall
  0 siblings, 0 replies; 4+ messages in thread
From: Mike Marshall @ 2021-05-03 15:43 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: Linus Torvalds, linux-fsdevel, Mike Marshall

Thanks Matthew...

I added in your changes to "the current linus tree" and ran
the whole thing through xfstests with my fingers crossed.
It didn't fix any regressions :-) but I'll send it in as a patch.

-Mike

On Sun, May 2, 2021 at 6:59 PM Matthew Wilcox <willy@infradead.org> wrote:
>
> On Sun, May 02, 2021 at 04:45:19PM -0400, Mike Marshall wrote:
> > orangefs: implement orangefs_readahead
> >
> > mm/readahead.c/read_pages was quite a bit different back
> > when I put my open-coded readahead logic into orangefs_readpage.
> > It seemed to work as designed then, it is a trainwreck now.
>
> Hey Mike,
>
> I happened to have a chance to look at orangefs_readahead today, and
> I'd like to suggest a minor improvement.
>
> It's possible for rac->file to be NULL if the caller doesn't have a
> struct file.  I think that only happens when filesystems call their own
> readahead routine internally, but in case it might happen from generic
> code in the future, I recommend you do something like ...
>
> -       struct file *file = rac->file;
> -       struct inode *inode = file->f_mapping->host;
> +       struct inode *inode = rac->mapping->host;
> ...
> -       i_pages = &file->f_mapping->i_pages;
> +       i_pages = &rac->mapping->i_pages;
> ...
> -                       inode->i_size, NULL, NULL, file)) < 0)
> +                       inode->i_size, NULL, NULL, rac->file)) < 0)
>
> (i have this change all tangled up with some other changes in my tree,
> so no easy patch to apply, sorry)

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-05-03 15:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-02 20:45 [GIT PULL] orangefs pull request for 5.13 Mike Marshall
2021-05-02 21:37 ` pr-tracker-bot
2021-05-02 22:58 ` Matthew Wilcox
2021-05-03 15:43   ` Mike Marshall

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).