From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aserp1040.oracle.com ([141.146.126.69]:31295 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934942AbcKDTJZ (ORCPT ); Fri, 4 Nov 2016 15:09:25 -0400 From: Liu Bo To: linux-fsdevel@vger.kernel.org Cc: Jan Kara , Ross Zwisler Subject: [PATCH] DAX: use proper length when the range is not aligned to PAGE_SIZE Date: Fri, 4 Nov 2016 12:17:11 -0700 Message-Id: <1478287031-3303-1-git-send-email-bo.li.liu@oracle.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: Currently if we write to [2k, 6k] where pos is 2k and end is 6k, get_block() will be called twice, but we can save one get_block by sending two blocks together to get_block. Signed-off-by: Liu Bo --- fs/dax.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/dax.c b/fs/dax.c index 53eb6a0..8d4bd5f 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -172,7 +172,7 @@ static ssize_t dax_io(struct inode *inode, struct iov_iter *iter, long size; if (pos == bh_max) { - bh->b_size = PAGE_ALIGN(end - pos); + bh->b_size = PAGE_ALIGN(end - (pos - first)); bh->b_state = 0; rc = get_block(inode, block, bh, rw == WRITE); if (rc) -- 2.5.5