From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753451AbcHPJPq (ORCPT ); Tue, 16 Aug 2016 05:15:46 -0400 Received: from mx2.suse.de ([195.135.220.15]:41147 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750928AbcHPJOE (ORCPT ); Tue, 16 Aug 2016 05:14:04 -0400 Date: Tue, 16 Aug 2016 11:13:57 +0200 From: Jan Kara To: Ross Zwisler Cc: linux-kernel@vger.kernel.org, "Theodore Ts'o" , Alexander Viro , Andreas Dilger , Andrew Morton , Dan Williams , Dave Chinner , Jan Kara , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-nvdimm@ml01.01.org Subject: Re: [PATCH 3/7] dax: remove buffer_size_valid() Message-ID: <20160816091357.GC27284@quack2.suse.cz> References: <20160815190918.20672-1-ross.zwisler@linux.intel.com> <20160815190918.20672-4-ross.zwisler@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160815190918.20672-4-ross.zwisler@linux.intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon 15-08-16 13:09:14, Ross Zwisler wrote: > Now that all our supported filesystems (ext2, ext4 and XFS) all properly > set bh.b_size when we call get_block() for a hole, rely on that value and > remove the buffer_size_valid() sanity check. > > Signed-off-by: Ross Zwisler Looks good. You can add: Reviewed-by: Jan Kara Honza > --- > fs/dax.c | 22 +--------------------- > 1 file changed, 1 insertion(+), 21 deletions(-) > > diff --git a/fs/dax.c b/fs/dax.c > index 993dc6f..8030f93 100644 > --- a/fs/dax.c > +++ b/fs/dax.c > @@ -121,19 +121,6 @@ static bool buffer_written(struct buffer_head *bh) > return buffer_mapped(bh) && !buffer_unwritten(bh); > } > > -/* > - * When ext4 encounters a hole, it returns without modifying the buffer_head > - * which means that we can't trust b_size. To cope with this, we set b_state > - * to 0 before calling get_block and, if any bit is set, we know we can trust > - * b_size. Unfortunate, really, since ext4 knows precisely how long a hole is > - * and would save us time calling get_block repeatedly. > - */ > -static bool buffer_size_valid(struct buffer_head *bh) > -{ > - return bh->b_state != 0; > -} > - > - > static sector_t to_sector(const struct buffer_head *bh, > const struct inode *inode) > { > @@ -175,8 +162,6 @@ static ssize_t dax_io(struct inode *inode, struct iov_iter *iter, > rc = get_block(inode, block, bh, rw == WRITE); > if (rc) > break; > - if (!buffer_size_valid(bh)) > - bh->b_size = 1 << blkbits; > bh_max = pos - first + bh->b_size; > bdev = bh->b_bdev; > /* > @@ -1010,12 +995,7 @@ int dax_pmd_fault(struct vm_area_struct *vma, unsigned long address, > > bdev = bh.b_bdev; > > - /* > - * If the filesystem isn't willing to tell us the length of a hole, > - * just fall back to PTEs. Calling get_block 512 times in a loop > - * would be silly. > - */ > - if (!buffer_size_valid(&bh) || bh.b_size < PMD_SIZE) { > + if (bh.b_size < PMD_SIZE) { > dax_pmd_dbg(&bh, address, "allocated block too small"); > return VM_FAULT_FALLBACK; > } > -- > 2.9.0 > > -- Jan Kara SUSE Labs, CR