From patchwork Sat Aug 13 01:04:10 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Tao X-Patchwork-Id: 1071542 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter2.kernel.org (8.14.4/8.14.4) with ESMTP id p7GDluiV006920 for ; Tue, 16 Aug 2011 13:48:13 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752752Ab1HPNsM (ORCPT ); Tue, 16 Aug 2011 09:48:12 -0400 Received: from mail-pz0-f42.google.com ([209.85.210.42]:35848 "EHLO mail-pz0-f42.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752155Ab1HPNsM (ORCPT ); Tue, 16 Aug 2011 09:48:12 -0400 Received: by pzk37 with SMTP id 37so4663577pzk.1 for ; Tue, 16 Aug 2011 06:48:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer; bh=/S0P5UumvEkcv1EMn+jBINBH7VjMUvlqQgorVfCSI48=; b=qY6EZbF0NLkiiHViSTuA8qrnGAtCeIfa29NmHyeCHZGd3SmJCS3RhhilP1U6KVmxpx OevleMsa3l0zsU/OszMSjHFQGvy7DJKWoljfJojXvzAnrOuhNNsD0QA3IgdFkTxAAvm+ Jw0bKCjeuErZ1iHVsN6+/TOzF9mrlwddAmnbI= Received: by 10.143.155.19 with SMTP id h19mr2717846wfo.354.1313502491818; Tue, 16 Aug 2011 06:48:11 -0700 (PDT) Received: from debian-sid.localdomain ([123.121.61.53]) by mx.google.com with ESMTPS id c4sm53015pbe.16.2011.08.16.06.48.08 (version=SSLv3 cipher=OTHER); Tue, 16 Aug 2011 06:48:11 -0700 (PDT) From: Peng Tao To: benny@tonian.com Cc: linux-nfs@vger.kernel.org, Peng Tao Subject: [PATCH] pnfsblock: init pg_bsize properly Date: Fri, 12 Aug 2011 18:04:10 -0700 Message-Id: <1313197450-4595-1-git-send-email-bergwolf@gmail.com> X-Mailer: git-send-email 1.7.1.262.g5ef3d Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter2.kernel.org [140.211.167.43]); Tue, 16 Aug 2011 13:48:13 +0000 (UTC) pg_bsize is server->wsize/rsize by default. We would want to use the lseg length. Signed-off-by: Peng Tao --- fs/nfs/blocklayout/blocklayout.c | 20 ++++++++++++++++++-- 1 files changed, 18 insertions(+), 2 deletions(-) diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c index 36648e1..9143e61 100644 --- a/fs/nfs/blocklayout/blocklayout.c +++ b/fs/nfs/blocklayout/blocklayout.c @@ -919,14 +919,30 @@ bl_clear_layoutdriver(struct nfs_server *server) return 0; } +static void bl_pg_init_read(struct nfs_pageio_descriptor *pgio, + struct nfs_page *req) +{ + pnfs_generic_pg_init_read(pgio, req); + if (pgio->pg_lseg) + pgio->pg_bsize = pgio->pg_lseg->pls_range.length; +} + +static void bl_pg_init_write(struct nfs_pageio_descriptor *pgio, + struct nfs_page *req) +{ + pnfs_generic_pg_init_write(pgio, req); + if (pgio->pg_lseg) + pgio->pg_bsize = pgio->pg_lseg->pls_range.length; +} + static const struct nfs_pageio_ops bl_pg_read_ops = { - .pg_init = pnfs_generic_pg_init_read, + .pg_init = bl_pg_init_read, .pg_test = pnfs_generic_pg_test, .pg_doio = pnfs_generic_pg_readpages, }; static const struct nfs_pageio_ops bl_pg_write_ops = { - .pg_init = pnfs_generic_pg_init_write, + .pg_init = bl_pg_init_write, .pg_test = pnfs_generic_pg_test, .pg_doio = pnfs_generic_pg_writepages, };