From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Chinner Date: Tue, 1 Nov 2016 07:07:16 +1100 Subject: [Cluster-devel] [PATCH v2 2/3] GFS2: Implement iomap for block_map In-Reply-To: <58146ADD.9010702@redhat.com> References: <1477682971-4517-1-git-send-email-rpeterso@redhat.com> <1477682971-4517-3-git-send-email-rpeterso@redhat.com> <58146ADD.9010702@redhat.com> Message-ID: <20161031200716.GM22126@dastard> List-Id: To: cluster-devel.redhat.com MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Sat, Oct 29, 2016 at 10:24:45AM +0100, Steven Whitehouse wrote: > On 28/10/16 20:29, Bob Peterson wrote: > >+ if (create) > >+ flags |= IOMAP_WRITE; > Hmm, I wonder why IOMAP_WRITE and IOMAP_ZERO are separate flags from > the iomap.flags field... Christoph, was there a specific reason for > that? They are different actions. IOMAP_WRITE requires allocation over holes and conversion of unwritten extents to allow writing of user data into the range. IOMAP_ZERO is for zeroing a range of a file via iomap_zero_range() and it does not require allocation - it skips holes and unwritten regions as they are already guaranteed to contain zeros. One *could* allocate blocks with IOMAP_ZERO if desired (i.e. implement IOMAP_ZERO as though it implied IOMAP_WRITE) and iomap_zero_range_actor() will zero the allocated regions appropriately, but it's not necessary to do if it is already known what ranges of the file contain zeros... Cheers, Dave. -- Dave Chinner david at fromorbit.com