From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751965AbeCJJ4C (ORCPT ); Sat, 10 Mar 2018 04:56:02 -0500 Received: from verein.lst.de ([213.95.11.211]:44754 "EHLO newverein.lst.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751012AbeCJJ4A (ORCPT ); Sat, 10 Mar 2018 04:56:00 -0500 Date: Sat, 10 Mar 2018 10:55:58 +0100 From: Christoph Hellwig To: Dan Williams Cc: linux-nvdimm@lists.01.org, Jan Kara , Dave Chinner , "Darrick J. Wong" , Ross Zwisler , Christoph Hellwig , linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 11/11] xfs, dax: introduce xfs_break_dax_layouts() Message-ID: <20180310095558.GC31604@lst.de> References: <152066488891.40260.14605734226832760468.stgit@dwillia2-desk3.amr.corp.intel.com> <152066494840.40260.6478694186268933246.stgit@dwillia2-desk3.amr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <152066494840.40260.6478694186268933246.stgit@dwillia2-desk3.amr.corp.intel.com> User-Agent: Mutt/1.5.17 (2007-11-01) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > +static int xfs_wait_dax_page( > + atomic_t *count, > + unsigned int mode) > +{ Normal XFS style would be: static int xfs_wait_dax_page( atomic_t *count, unsigned int mode) { > + struct page *page = refcount_to_page(count); > + struct address_space *mapping = page->mapping; > + struct inode *inode = mapping->host; > + struct xfs_inode *ip = XFS_I(inode); Looks we don't really need the mapping and inode variables: struct page *page = refcount_to_page(count); struct xfs_inode *ip = XFS_I(page->mapping->host); > + do { > + if (flags & XFS_BREAK_REMOTE) > + ret = xfs_break_leased_layouts(inode, iolock); > + if (ret) > + return ret; > + if (flags & XFS_BREAK_MAPS) > + ret = xfs_break_dax_layouts(inode, *iolock); > + /* > + * EBUSY indicates that we dropped locks and waited for > + * the dax layout to be released. When that happens we > + * need to revalidate that no new leases or pinned dax > + * mappings have been established. > + */ > + } while (ret == -EBUSY); Maybe instead of the flags argument this should be a type argument of something like enum layout_break_reason { BREAK_WRITE, /* write to file */ BREAK_TRUNCATE, /* truncate or hole punch */ }; as that makes the intent more clear?