Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp724630ybb; Sat, 28 Mar 2020 08:35:05 -0700 (PDT) X-Google-Smtp-Source: ADFU+vso1d8eAVk1ds3EJK2dGkmyF1QEM61MpybVfLKX9NZNXBSN/n3uzg0g+f2fMvYx3pBc8LLK X-Received: by 2002:aca:3ad7:: with SMTP id h206mr2478937oia.169.1585409704905; Sat, 28 Mar 2020 08:35:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585409704; cv=none; d=google.com; s=arc-20160816; b=xM3o5sIB28vWZJMS3zLoJimEuFC4qsjoCd5cCUOFbrDhl4VFXWMH+k+dBtfazdlzwR zgt+Qqu7cTXE07zDXuohXbcG++TdPlZ/XRMcq3wnC2GogeoU4ICBLTJDCy2cTzzqkVtU 1w2v6dFtuoRJqtGKWygGIxSXZUWG5ymola/O2txRiD3ZMr1a9eN5WvuWTjgVXXij5emv knVmk2wChiLZ01c7m9fhbomtWkxAV3QW1dg4NchV2WqyttBdc0OJhgsBU+XhiNk9oX3u XmCFwQDeUfo2yY0DvWis6s3gxu+Wvsmvk3DHClLvB0kNAZKlGA9BxMXsu+CiX13vztgu cRWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from :dkim-signature; bh=L69Wkofp2aWruvwIaaBlsGWDkSY9b8krIyQBYFmGP/4=; b=WHur1mbnnB/8cGsSx2Mkcfw+bCke4ldSwAQg1ACTOTb4F8e6PTVEfTEO0Q42TzBZsQ FVbaO2n6zU/yUuQhkx05sSi3vKFbDQQTpEkPKhNU+hhVAUBE+L7d9VpGoUkbIux2wZgt i6Q5u31pR9Pux82UpOOjP9QXArq7wpT1NI0Evbd6QDxhUJjn6rQDl2eY0U/XnOWQ4Ohd g6JF3t8e6d7oOYSBXDkFUQuB5Uo8ByINT+OA4e5NCxKmHgcN+DWazG5flQXrapulInua eA8M8DqqoM9z6NLaI8OMnVhPxJE+VRdqDa+IHRLrTU5J8EJqzjqOU2SlT7WhduFaXiS6 huvw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=miqghEpX; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k27si2863262otf.40.2020.03.28.08.34.46; Sat, 28 Mar 2020 08:35:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=miqghEpX; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727167AbgC1Pei (ORCPT + 99 others); Sat, 28 Mar 2020 11:34:38 -0400 Received: from mail.kernel.org ([198.145.29.99]:40310 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726389AbgC1Peh (ORCPT ); Sat, 28 Mar 2020 11:34:37 -0400 Received: from localhost.localdomain (c-68-36-133-222.hsd1.mi.comcast.net [68.36.133.222]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B13FA20748 for ; Sat, 28 Mar 2020 15:34:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1585409676; bh=vutH3/YReiNFiYTDSRW2/u7raVAoGoT4cTuq6TCiAtk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=miqghEpXJ8w7AZRyxyLvBN6eK0c68MB30GvrswnnsQZy9clekwsNkLrLqPrVAHzFt Fc6ikZD/wEfKgB74Am8OYSBRKAaS+Xe4LC7gCVex24mYqLif+M0aPo8QdnE+3qH+XN +btv3g0wT9aoQOMEw7u3Q2cNEtNluBF4aA2INy24= From: trondmy@kernel.org To: linux-nfs@vger.kernel.org Subject: [PATCH v2 08/22] NFS/pNFS: Allow O_DIRECT to release the DS commitinfo Date: Sat, 28 Mar 2020 11:32:06 -0400 Message-Id: <20200328153220.1352010-9-trondmy@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200328153220.1352010-8-trondmy@kernel.org> References: <20200328153220.1352010-1-trondmy@kernel.org> <20200328153220.1352010-2-trondmy@kernel.org> <20200328153220.1352010-3-trondmy@kernel.org> <20200328153220.1352010-4-trondmy@kernel.org> <20200328153220.1352010-5-trondmy@kernel.org> <20200328153220.1352010-6-trondmy@kernel.org> <20200328153220.1352010-7-trondmy@kernel.org> <20200328153220.1352010-8-trondmy@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: Trond Myklebust Add a pNFS callback to allow the O_DIRECT code to release the DS commitinfo when freeing the dreq. Signed-off-by: Trond Myklebust --- fs/nfs/direct.c | 1 + fs/nfs/pnfs.h | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index f9a73febce02..7ef7f71ae315 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -317,6 +317,7 @@ static void nfs_direct_req_free(struct kref *kref) { struct nfs_direct_req *dreq = container_of(kref, struct nfs_direct_req, kref); + pnfs_release_ds_info(&dreq->ds_cinfo, dreq->inode); nfs_free_pnfs_ds_cinfo(&dreq->ds_cinfo); if (dreq->l_ctx != NULL) nfs_put_lock_context(dreq->l_ctx); diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index b293afb48d04..2ec97b419b56 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h @@ -149,6 +149,8 @@ struct pnfs_layoutdriver_type { const struct nfs_pageio_ops *pg_write_ops; struct pnfs_ds_commit_info *(*get_ds_info) (struct inode *inode); + void (*release_ds_info)(struct pnfs_ds_commit_info *, + struct inode *inode); void (*mark_request_commit) (struct nfs_page *req, struct pnfs_layout_segment *lseg, struct nfs_commit_info *cinfo, @@ -468,6 +470,15 @@ pnfs_init_ds_commit_info(struct pnfs_ds_commit_info *fl_cinfo) INIT_LIST_HEAD(&fl_cinfo->commits); } +static inline void +pnfs_release_ds_info(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) +{ + struct pnfs_layoutdriver_type *ld = NFS_SERVER(inode)->pnfs_curr_ld; + + if (ld != NULL && ld->release_ds_info != NULL) + ld->release_ds_info(fl_cinfo, inode); +} + static inline void pnfs_generic_mark_devid_invalid(struct nfs4_deviceid_node *node) { @@ -770,6 +781,11 @@ pnfs_init_ds_commit_info(struct pnfs_ds_commit_info *fl_cinfo) { } +static inline void +pnfs_release_ds_info(struct pnfs_ds_commit_info *fl_cinfo, struct inode *inode) +{ +} + static inline bool pnfs_mark_request_commit(struct nfs_page *req, struct pnfs_layout_segment *lseg, struct nfs_commit_info *cinfo, u32 ds_commit_idx) -- 2.25.1