Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp2998093ybl; Thu, 29 Aug 2019 16:34:51 -0700 (PDT) X-Google-Smtp-Source: APXvYqx5Vm66D+RIPxQBh50SL7HBBxRL0zrs6xS2g+JPlkr0YarSQGNihrto/9QEjnxzv1vtR/k+ X-Received: by 2002:a17:902:8f85:: with SMTP id z5mr13014997plo.328.1567121690921; Thu, 29 Aug 2019 16:34:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567121690; cv=none; d=google.com; s=arc-20160816; b=CLTfx1EcyAoBMqaHRITVB6WrTO7chI5F8htvsAcjx3wWjHQeCAhdSxoZhuJzmbOkqw JjQe7YadJPfiUA6dkbkg9R14QPMoTr8cweYix9yNwM5ujl5CiBUKN/4ylbIptZdolLIt cpPoIawbwngrGb61MxeVnAtX0W01UAeDYnooGmHBcpwydi5vnYGCebuLeogSYDIj2MAQ X4lpnvrusiPUlSGtru+lsjv5ytfhg8vnATgjT/hm1J0orLIo8W8kDFwoYNEfrLifEDAD 4AfbhdAq+4MQ/35dosYxzF5CSm6EEiceaEqzjQd2N7YYPndHuxPc31YQgeT77QlsUhsB XHYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=jzAl9FqDWYjatd/qdI62/dGf3miEE4Aqb5J8MkWUK84=; b=B2O+SpiqIrjTQxyDnfVQCyd1dPO7FmiiED/8LlUq6THGd/6L+x6ooT+sdMkIyWSmck QH+F67Mi1NM7X9H5HuMbY93pyebfob48FwmDEmqzRg7hF2QachezVF6vCYCQperN87m4 dLzNzOHzQ87/uB7osJRcjw8+pGhrMADVbcOtQpo6vTDHa/8nPGkTNo7XW//NUPLhGVxN 0GPQddoXgZm+YsFGTCRHDTo47xxyrMhubrttkXrHKseQi4aq0uH3c2yBnqXWegOq3JhK U6oOnj9lebPRg7JDvQNUvsuSruELm/mRE4rdhOMOP9GJqRvDeImLh7ndWob0/rK6jDDx 5Y5Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u14si3129063pgm.418.2019.08.29.16.34.14; Thu, 29 Aug 2019 16:34:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-ext4-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726164AbfH2XeK (ORCPT + 99 others); Thu, 29 Aug 2019 19:34:10 -0400 Received: from mga01.intel.com ([192.55.52.88]:30261 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725847AbfH2XeK (ORCPT ); Thu, 29 Aug 2019 19:34:10 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Aug 2019 16:34:09 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,445,1559545200"; d="scan'208";a="172060373" Received: from iweiny-desk2.sc.intel.com ([10.3.52.157]) by orsmga007.jf.intel.com with ESMTP; 29 Aug 2019 16:34:08 -0700 Date: Thu, 29 Aug 2019 16:34:08 -0700 From: Ira Weiny To: Jeff Layton Cc: Dave Chinner , Andrew Morton , Jason Gunthorpe , Dan Williams , Matthew Wilcox , Jan Kara , Theodore Ts'o , John Hubbard , Michal Hocko , linux-xfs@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-nvdimm@lists.01.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC PATCH v2 02/19] fs/locks: Add Exclusive flag to user Layout lease Message-ID: <20190829233408.GD18249@iweiny-DESK2.sc.intel.com> References: <20190809225833.6657-1-ira.weiny@intel.com> <20190809225833.6657-3-ira.weiny@intel.com> <20190814215630.GQ6129@dread.disaster.area> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.11.1 (2018-12-01) Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org Missed this. sorry. On Mon, Aug 26, 2019 at 06:41:07AM -0400, Jeff Layton wrote: > On Thu, 2019-08-15 at 07:56 +1000, Dave Chinner wrote: > > On Wed, Aug 14, 2019 at 10:15:06AM -0400, Jeff Layton wrote: > > > On Fri, 2019-08-09 at 15:58 -0700, ira.weiny@intel.com wrote: > > > > From: Ira Weiny > > > > > > > > Add an exclusive lease flag which indicates that the layout mechanism > > > > can not be broken. > > > > > > > > Exclusive layout leases allow the file system to know that pages may be > > > > GUP pined and that attempts to change the layout, ie truncate, should be > > > > failed. > > > > > > > > A process which attempts to break it's own exclusive lease gets an > > > > EDEADLOCK return to help determine that this is likely a programming bug > > > > vs someone else holding a resource. > > ..... > > > > diff --git a/include/uapi/asm-generic/fcntl.h b/include/uapi/asm-generic/fcntl.h > > > > index baddd54f3031..88b175ceccbc 100644 > > > > --- a/include/uapi/asm-generic/fcntl.h > > > > +++ b/include/uapi/asm-generic/fcntl.h > > > > @@ -176,6 +176,8 @@ struct f_owner_ex { > > > > > > > > #define F_LAYOUT 16 /* layout lease to allow longterm pins such as > > > > RDMA */ > > > > +#define F_EXCLUSIVE 32 /* layout lease is exclusive */ > > > > + /* FIXME or shoudl this be F_EXLCK??? */ > > > > > > > > /* operations for bsd flock(), also used by the kernel implementation */ > > > > #define LOCK_SH 1 /* shared lock */ > > > > > > This interface just seems weird to me. The existing F_*LCK values aren't > > > really set up to be flags, but are enumerated values (even if there are > > > some gaps on some arches). For instance, on parisc and sparc: > > > > I don't think we need to worry about this - the F_WRLCK version of > > the layout lease should have these exclusive access semantics (i.e > > other ops fail rather than block waiting for lease recall) and hence > > the API shouldn't need a new flag to specify them. > > > > i.e. the primary difference between F_RDLCK and F_WRLCK layout > > leases is that the F_RDLCK is a shared, co-operative lease model > > where only delays in operations will be seen, while F_WRLCK is a > > "guarantee exclusive access and I don't care what it breaks" > > model... :) > > > > Not exactly... > > F_WRLCK and F_RDLCK leases can both be broken, and will eventually time > out if there is conflicting access. The F_EXCLUSIVE flag on the other > hand is there to prevent any sort of lease break from Right EXCLUSIVE will not break for any reason. It will fail truncate and hole punch as we discussed back in June. This is for the use case where the user has handed this file/pages off to some hardware for which removing the lease would be impossible. _And_ we don't anticipate any valid use case that someone will need to truncate short of killing the process to free up file system space. > > I'm guessing what Ira really wants with the F_EXCLUSIVE flag is > something akin to what happens when we set fl_break_time to 0 in the > nfsd code. nfsd never wants the locks code to time out a lease of any > sort, since it handles that timeout itself. > > If you're going to add this functionality, it'd be good to also convert > knfsd to use it as well, so we don't end up with multiple ways to deal > with that situation. Could you point me at the source for knfsd? I looked in git://git.linux-nfs.org/projects/steved/nfs-utils.git but I don't see anywhere leases are used in that source? Thanks, Ira