From: Brian Foster <bfoster@redhat.com>
To: Jan Kara <jack@suse.cz>
Cc: "Darrick J. Wong" <darrick.wong@oracle.com>,
linux-xfs@vger.kernel.org, Eryu Guan <eguan@redhat.com>
Subject: Re: [PATCH 3/3] xfs: Move handling of missing page into one place in xfs_find_get_desired_pgoff()
Date: Mon, 22 May 2017 13:50:52 -0400 [thread overview]
Message-ID: <20170522175050.GC1473@bfoster.bfoster> (raw)
In-Reply-To: <20170518104850.14508-4-jack@suse.cz>
On Thu, May 18, 2017 at 12:48:50PM +0200, Jan Kara wrote:
> Currently several places in xfs_find_get_desired_pgoff() handle the case
> of a missing page. Make them all handled in one place after the loop has
> terminated.
>
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
Reviewed-by: Brian Foster <bfoster@redhat.com>
> fs/xfs/xfs_file.c | 38 ++++++++------------------------------
> 1 file changed, 8 insertions(+), 30 deletions(-)
>
> diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
> index 3714b5736fd3..204e81abce05 100644
> --- a/fs/xfs/xfs_file.c
> +++ b/fs/xfs/xfs_file.c
> @@ -1052,29 +1052,8 @@ xfs_find_get_desired_pgoff(
> want = min_t(pgoff_t, end - index, PAGEVEC_SIZE);
> nr_pages = pagevec_lookup(&pvec, inode->i_mapping, index,
> want);
> - /*
> - * No page mapped into given range. If we are searching holes
> - * and if this is the first time we got into the loop, it means
> - * that the given offset is landed in a hole, return it.
> - *
> - * If we have already stepped through some block buffers to find
> - * holes but they all contains data. In this case, the last
> - * offset is already updated and pointed to the end of the last
> - * mapped page, if it does not reach the endpoint to search,
> - * that means there should be a hole between them.
> - */
> - if (nr_pages == 0) {
> - /* Data search found nothing */
> - if (type == DATA_OFF)
> - break;
> -
> - ASSERT(type == HOLE_OFF);
> - if (lastoff == startoff || lastoff < endoff) {
> - found = true;
> - *offset = lastoff;
> - }
> + if (nr_pages == 0)
> break;
> - }
>
> for (i = 0; i < nr_pages; i++) {
> struct page *page = pvec.pages[i];
> @@ -1140,21 +1119,20 @@ xfs_find_get_desired_pgoff(
>
> /*
> * The number of returned pages less than our desired, search
> - * done. In this case, nothing was found for searching data,
> - * but we found a hole behind the last offset.
> + * done.
> */
> - if (nr_pages < want) {
> - if (type == HOLE_OFF) {
> - *offset = lastoff;
> - found = true;
> - }
> + if (nr_pages < want)
> break;
> - }
>
> index = pvec.pages[i - 1]->index + 1;
> pagevec_release(&pvec);
> } while (index <= end);
>
> + /* No page at lastoff and we are not done - we found a hole. */
> + if (type == HOLE_OFF && lastoff < endoff) {
> + *offset = lastoff;
> + found = true;
> + }
> out:
> pagevec_release(&pvec);
> return found;
> --
> 2.12.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-05-22 17:50 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-18 10:48 [PATCH 0/3 v3] xfs: Fix SEEK_HOLE implementation Jan Kara
2017-05-18 10:48 ` [PATCH 1/3] xfs: Fix missed holes in " Jan Kara
2017-05-22 17:50 ` Brian Foster
2017-05-18 10:48 ` [PATCH 2/3] xfs: Fix off-by-in in loop termination in xfs_find_get_desired_pgoff() Jan Kara
2017-05-22 17:50 ` Brian Foster
2017-05-23 3:21 ` Eryu Guan
2017-05-23 8:50 ` Jan Kara
2017-05-23 11:08 ` Eryu Guan
2017-05-23 12:17 ` Brian Foster
2017-05-23 13:05 ` Eryu Guan
2017-05-23 17:37 ` Darrick J. Wong
2017-05-23 15:30 ` Darrick J. Wong
2017-05-23 16:00 ` Brian Foster
2017-05-18 10:48 ` [PATCH 3/3] xfs: Move handling of missing page into one place " Jan Kara
2017-05-22 17:50 ` Brian Foster [this message]
2017-05-19 0:06 ` [PATCH 0/3 v3] xfs: Fix SEEK_HOLE implementation Darrick J. Wong
-- strict thread matches above, loose matches on Subject: below --
2017-05-17 12:10 [PATCH 0/3 v2] " Jan Kara
2017-05-17 12:10 ` [PATCH 3/3] xfs: Move handling of missing page into one place in xfs_find_get_desired_pgoff() Jan Kara
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=20170522175050.GC1473@bfoster.bfoster \
--to=bfoster@redhat.com \
--cc=darrick.wong@oracle.com \
--cc=eguan@redhat.com \
--cc=jack@suse.cz \
--cc=linux-xfs@vger.kernel.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 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).