From patchwork Mon Mar 14 12:57:20 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 633011 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 p2ECvR37019764 for ; Mon, 14 Mar 2011 12:57:28 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752855Ab1CNM5X (ORCPT ); Mon, 14 Mar 2011 08:57:23 -0400 Received: from mail-iy0-f174.google.com ([209.85.210.174]:52145 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753369Ab1CNM5W (ORCPT ); Mon, 14 Mar 2011 08:57:22 -0400 Received: by mail-iy0-f174.google.com with SMTP id 26so4900509iyb.19 for ; Mon, 14 Mar 2011 05:57:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:subject:to:cc:date:message-id :in-reply-to:references:user-agent:mime-version:content-type :content-transfer-encoding; bh=1TWdz44OoAWV+JIzXjOcuxFMuULdrGP8Pz043N/BE0c=; b=w9Ignu66s9XfLFl1P8cTx2qP1F+ur9P5A2gye9YfB0Nq/IipcsOLsYXjxYrd4UiwbK iL8CqJxRezz9Na71AsK8fkORcKvEPsYKPV9vzqx0QHpoXO+MVhOnnjUIL+4zNMoIemuQ zgCYjqcmBfisdR/Ys16woZjbzSORGFXM6UjVY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:subject:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; b=XgKLi9qcY/S3VeH1tOn/UB5D/B5gTRVjHvCaNJvyeoHnVCR1gNScsM2nytSmQhUiKq 9Zq93ETxQ4eIgAAJzhaVn2bkMWJ0s8GqIXlfSbz0ZkbCbt9Ll5OQEeGokYBQn86dTqfL k70b+SIfVVAi4w11GsN2XbMI/TVZl+9OuWIyM= Received: by 10.43.54.142 with SMTP id vu14mr16186577icb.384.1300107442634; Mon, 14 Mar 2011 05:57:22 -0700 (PDT) Received: from matisse.1015granger.net (adsl-99-26-161-222.dsl.sfldmi.sbcglobal.net [99.26.161.222]) by mx.google.com with ESMTPS id u9sm6676348ibe.20.2011.03.14.05.57.21 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 14 Mar 2011 05:57:22 -0700 (PDT) From: Chuck Lever Subject: [PATCH 06/12] NFS: Introduce NFS_ATTR_FATTR_V4_LOCATIONS To: trond.myklebust@netapp.com Cc: linux-nfs@vger.kernel.org Date: Mon, 14 Mar 2011 08:57:20 -0400 Message-ID: <20110314125720.2413.28564.stgit@matisse.1015granger.net> In-Reply-To: <20110314125204.2413.8870.stgit@matisse.1015granger.net> References: <20110314125204.2413.8870.stgit@matisse.1015granger.net> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 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]); Mon, 14 Mar 2011 12:57:28 +0000 (UTC) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 491b068..1e72e5f 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -2202,7 +2202,8 @@ static int nfs4_get_referral(struct inode *dir, const struct qstr *name, struct } memcpy(fattr, &locations->fattr, sizeof(struct nfs_fattr)); - fattr->valid |= NFS_ATTR_FATTR_V4_REFERRAL; + if (fattr->valid & NFS_ATTR_FATTR_V4_LOCATIONS) + fattr->valid |= NFS_ATTR_FATTR_V4_REFERRAL; if (!fattr->mode) fattr->mode = S_IFDIR; memset(fhandle, 0, sizeof(struct nfs_fh)); @@ -4517,7 +4518,7 @@ static void nfs_fixup_referral_attributes(struct nfs_fattr *fattr) { if (!((fattr->valid & NFS_ATTR_FATTR_FILEID) && (fattr->valid & NFS_ATTR_FATTR_FSID) && - (fattr->valid & NFS_ATTR_FATTR_V4_REFERRAL))) + (fattr->valid & NFS_ATTR_FATTR_V4_LOCATIONS))) return; fattr->valid |= NFS_ATTR_FATTR_TYPE | NFS_ATTR_FATTR_MODE | diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 4e2c168..9d2c9d2 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -3204,7 +3204,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st res->nlocations++; } if (res->nlocations != 0) - status = NFS_ATTR_FATTR_V4_REFERRAL; + status = NFS_ATTR_FATTR_V4_LOCATIONS; out: dprintk("%s: fs_locations done, error = %d\n", __func__, status); return status; diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index b006857..2492487 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -77,7 +77,8 @@ struct nfs_fattr { #define NFS_ATTR_FATTR_PRECTIME (1U << 16) #define NFS_ATTR_FATTR_CHANGE (1U << 17) #define NFS_ATTR_FATTR_PRECHANGE (1U << 18) -#define NFS_ATTR_FATTR_V4_REFERRAL (1U << 19) /* NFSv4 referral */ +#define NFS_ATTR_FATTR_V4_REFERRAL (1U << 19) +#define NFS_ATTR_FATTR_V4_LOCATIONS (1U << 20) #define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \ | NFS_ATTR_FATTR_MODE \