All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: linux-fsdevel@vger.kernel.org, hch@lst.de,
	linux-xfs@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v2 4/5] xfs: Support large pages
Date: Wed, 18 Sep 2019 14:31:08 -0700	[thread overview]
Message-ID: <20190918213108.GE2229799@magnolia> (raw)
In-Reply-To: <20190821003039.12555-5-willy@infradead.org>

On Tue, Aug 20, 2019 at 05:30:38PM -0700, Matthew Wilcox wrote:
> From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> 
> Mostly this is just checking the page size of each page instead of
> assuming PAGE_SIZE.  Clean up the logic in writepage a little.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>

Looks ok, let's see what happens when I get back to the "make xfs use
iomap writeback" series...

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>

--D

> ---
>  fs/xfs/xfs_aops.c | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index 102cfd8a97d6..1a26e9ca626b 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -765,7 +765,7 @@ xfs_add_to_ioend(
>  	struct xfs_mount	*mp = ip->i_mount;
>  	struct block_device	*bdev = xfs_find_bdev_for_inode(inode);
>  	unsigned		len = i_blocksize(inode);
> -	unsigned		poff = offset & (PAGE_SIZE - 1);
> +	unsigned		poff = offset & (page_size(page) - 1);
>  	bool			merged, same_page = false;
>  	sector_t		sector;
>  
> @@ -843,7 +843,7 @@ xfs_aops_discard_page(
>  	if (error && !XFS_FORCED_SHUTDOWN(mp))
>  		xfs_alert(mp, "page discard unable to remove delalloc mapping.");
>  out_invalidate:
> -	xfs_vm_invalidatepage(page, 0, PAGE_SIZE);
> +	xfs_vm_invalidatepage(page, 0, page_size(page));
>  }
>  
>  /*
> @@ -984,8 +984,7 @@ xfs_do_writepage(
>  	struct xfs_writepage_ctx *wpc = data;
>  	struct inode		*inode = page->mapping->host;
>  	loff_t			offset;
> -	uint64_t              end_offset;
> -	pgoff_t                 end_index;
> +	uint64_t		end_offset;
>  
>  	trace_xfs_writepage(inode, page, 0, 0);
>  
> @@ -1024,10 +1023,9 @@ xfs_do_writepage(
>  	 * ---------------------------------^------------------|
>  	 */
>  	offset = i_size_read(inode);
> -	end_index = offset >> PAGE_SHIFT;
> -	if (page->index < end_index)
> -		end_offset = (xfs_off_t)(page->index + 1) << PAGE_SHIFT;
> -	else {
> +	end_offset = file_offset_of_next_page(page);
> +
> +	if (end_offset > offset) {
>  		/*
>  		 * Check whether the page to write out is beyond or straddles
>  		 * i_size or not.
> @@ -1039,7 +1037,8 @@ xfs_do_writepage(
>  		 * |				    |      Straddles     |
>  		 * ---------------------------------^-----------|--------|
>  		 */
> -		unsigned offset_into_page = offset & (PAGE_SIZE - 1);
> +		unsigned offset_into_page = offset_in_this_page(page, offset);
> +		pgoff_t end_index = offset >> PAGE_SHIFT;
>  
>  		/*
>  		 * Skip the page if it is fully outside i_size, e.g. due to a
> @@ -1070,7 +1069,7 @@ xfs_do_writepage(
>  		 * memory is zeroed when mapped, and writes to that region are
>  		 * not written out to the file."
>  		 */
> -		zero_user_segment(page, offset_into_page, PAGE_SIZE);
> +		zero_user_segment(page, offset_into_page, page_size(page));
>  
>  		/* Adjust the end_offset to the end of file */
>  		end_offset = offset;
> -- 
> 2.23.0.rc1
> 

  reply	other threads:[~2019-09-18 21:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-21  0:30 [PATCH v2 0/5] iomap & xfs support for large pages Matthew Wilcox
2019-08-21  0:30 ` [PATCH v2 1/5] fs: Introduce i_blocks_per_page Matthew Wilcox
2019-08-23 12:26   ` kbuild test robot
2019-09-18 21:14   ` Darrick J. Wong
2019-09-18 23:48     ` Matthew Wilcox
2019-08-21  0:30 ` [PATCH v2 2/5] mm: Add file_offset_of_ helpers Matthew Wilcox
2019-08-23 12:49   ` kbuild test robot
2019-08-24 11:48   ` kbuild test robot
2019-08-24 15:28     ` Matthew Wilcox
2019-09-18 21:17   ` Darrick J. Wong
2019-09-18 23:49     ` Matthew Wilcox
2019-09-19  0:04       ` Darrick J. Wong
2019-08-21  0:30 ` [PATCH v2 3/5] iomap: Support large pages Matthew Wilcox
2019-08-23 12:48   ` kbuild test robot
2019-09-18 21:29   ` Darrick J. Wong
2019-08-21  0:30 ` [PATCH v2 4/5] xfs: " Matthew Wilcox
2019-09-18 21:31   ` Darrick J. Wong [this message]
2019-08-21  0:30 ` [PATCH v2 5/5] xfs: Pass a page to xfs_finish_page_writeback Matthew Wilcox
2019-09-18 21:32   ` Darrick J. Wong

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=20190918213108.GE2229799@magnolia \
    --to=darrick.wong@oracle.com \
    --cc=hch@lst.de \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-xfs@vger.kernel.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.