From patchwork Wed Feb 23 17:56:00 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benny Halevy X-Patchwork-Id: 585461 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1NHu0CX008107 for ; Wed, 23 Feb 2011 17:56:01 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755477Ab1BWR4A (ORCPT ); Wed, 23 Feb 2011 12:56:00 -0500 Received: from daytona.panasas.com ([67.152.220.89]:54287 "EHLO daytona.panasas.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753914Ab1BWRz7 (ORCPT ); Wed, 23 Feb 2011 12:55:59 -0500 Received: from lt.bhalevy.com ([172.17.142.146]) by daytona.panasas.com with Microsoft SMTPSVC(6.0.3790.4675); Wed, 23 Feb 2011 12:55:58 -0500 Message-ID: <4D654A30.5020303@panasas.com> Date: Wed, 23 Feb 2011 09:56:00 -0800 From: Benny Halevy User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101209 Fedora/3.1.7-0.35.b3pre.fc13 Thunderbird/3.1.7 MIME-Version: 1.0 To: Boaz Harrosh CC: linux-nfs@vger.kernel.org Subject: Re: [PATCH] pnfsd-lexp: recall layout on truncate References: <1298419783-27791-1-git-send-email-bhalevy@panasas.com> <4D654174.3000101@panasas.com> In-Reply-To: <4D654174.3000101@panasas.com> X-OriginalArrivalTime: 23 Feb 2011 17:55:59.0058 (UTC) FILETIME=[ED4BFB20:01CBD382] 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 (demeter1.kernel.org [140.211.167.41]); Wed, 23 Feb 2011 17:56:01 +0000 (UTC) diff --git a/fs/nfsd/pnfsd.h b/fs/nfsd/pnfsd.h index 51dd982..c11d93d 100644 --- a/fs/nfsd/pnfsd.h +++ b/fs/nfsd/pnfsd.h @@ -139,6 +139,7 @@ extern struct sockaddr pnfsd_lexp_addr; extern size_t pnfs_lexp_addr_len; extern void pnfsd_lexp_init(struct inode *); +extern bool is_inode_pnfsd_lexp(struct inode *); extern int pnfsd_lexp_recall_layout(struct inode *); #endif /* CONFIG_PNFSD_LOCAL_EXPORT */ diff --git a/fs/nfsd/pnfsd_lexp.c b/fs/nfsd/pnfsd_lexp.c index 736cc3f..71d503e 100644 --- a/fs/nfsd/pnfsd_lexp.c +++ b/fs/nfsd/pnfsd_lexp.c @@ -232,6 +232,12 @@ pnfsd_lexp_init(struct inode *inode) init_waitqueue_head(&lo_recall_wq); } +bool +is_inode_pnfsd_lexp(struct inode *inode) +{ + return inode->i_sb->s_pnfs_op == &pnfsd_lexp_ops; +} + static bool has_no_layout(struct nfs4_file *fp) { diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 021e89e..2a3eff2 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -386,7 +386,8 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap, if (err) goto out; #if defined(CONFIG_PNFSD_LOCAL_EXPORT) - pnfsd_lexp_recall_layout(inode); + if (is_inode_pnfsd_lexp(inode)) + pnfsd_lexp_recall_layout(inode); #endif /* CONFIG_PNFSD_LOCAL_EXPORT */ #if defined(CONFIG_SPNFS_BLOCK) if (pnfs_block_enabled(inode, 0)) {