All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Bobrowski <mbobrowski@mbobrowski.org>
To: Ritesh Harjani <riteshh@linux.ibm.com>
Cc: tytso@mit.edu, jack@suse.cz, adilger.kernel@dilger.ca,
	linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	hch@infradead.org, david@fromorbit.com, darrick.wong@oracle.com
Subject: Re: [PATCH v4 2/8] ext4: move out IOMAP_WRITE path into separate helper
Date: Wed, 9 Oct 2019 20:31:46 +1100	[thread overview]
Message-ID: <20191009093144.GD2125@poseidon.bobrowski.net> (raw)
In-Reply-To: <20191009062242.87D244204B@d06av24.portsmouth.uk.ibm.com>

On Wed, Oct 09, 2019 at 11:52:41AM +0530, Ritesh Harjani wrote:
> On 10/3/19 5:03 PM, Matthew Bobrowski wrote:
> Minor comment, but otherwise.
> Patch looks good to me. You may add:
> 
> Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>

*nod* - Thank you!

> >   static int ext4_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
> >   			    unsigned flags, struct iomap *iomap)
> >   {
> > @@ -3500,62 +3556,16 @@ static int ext4_iomap_begin(struct inode *inode, loff_t offset, loff_t length,
> >   			}
> >   		}
> >   	} else if (flags & IOMAP_WRITE) {
> > -		int dio_credits;
> > -		handle_t *handle;
> > -		int retries = 0;
> > -
> > -		/* Trim mapping request to maximum we can map at once for DIO */
> > -		if (map.m_len > DIO_MAX_BLOCKS)
> > -			map.m_len = DIO_MAX_BLOCKS;
> > -		dio_credits = ext4_chunk_trans_blocks(inode, map.m_len);
> > -retry:
> > -		/*
> > -		 * Either we allocate blocks and then we don't get unwritten
> > -		 * extent so we have reserved enough credits, or the blocks
> > -		 * are already allocated and unwritten and in that case
> > -		 * extent conversion fits in the credits as well.
> > -		 */
> > -		handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS,
> > -					    dio_credits);
> > -		if (IS_ERR(handle))
> > -			return PTR_ERR(handle);
> > -
> > -		ret = ext4_map_blocks(handle, inode, &map,
> > -				      EXT4_GET_BLOCKS_CREATE_ZERO);
> > -		if (ret < 0) {
> > -			ext4_journal_stop(handle);
> > -			if (ret == -ENOSPC &&
> > -			    ext4_should_retry_alloc(inode->i_sb, &retries))
> > -				goto retry;
> > -			return ret;
> > -		}
> > -
> > -		/*
> > -		 * If we added blocks beyond i_size, we need to make sure they
> > -		 * will get truncated if we crash before updating i_size in
> > -		 * ext4_iomap_end(). For faults we don't need to do that (and
> > -		 * even cannot because for orphan list operations inode_lock is
> > -		 * required) - if we happen to instantiate block beyond i_size,
> > -		 * it is because we race with truncate which has already added
> > -		 * the inode to the orphan list.
> > -		 */
> > -		if (!(flags & IOMAP_FAULT) && first_block + map.m_len >
> > -		    (i_size_read(inode) + (1 << blkbits) - 1) >> blkbits) {
> > -			int err;
> > -
> > -			err = ext4_orphan_add(handle, inode);
> > -			if (err < 0) {
> > -				ext4_journal_stop(handle);
> > -				return err;
> > -			}
> > -		}
> > -		ext4_journal_stop(handle);
> > +		ret = ext4_iomap_alloc(inode, flags, first_block, &map);
> 
> We don't need "first_block" argument here. Since
> map->m_lblk saves first_block directly above in the same function.

You're right. I will change that.

> No strong objection against ext4_iomap_alloc, but
> maybe ext4_iomap_map_write sounds better?
> Either way is fine though.

I like 'ext4_iomap_alloc', because it's performing allocation in
preparation for a write being performed on behalf of iomap. :)

--<M>--


  reply	other threads:[~2019-10-09  9:31 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-03 11:32 [PATCH v4 0/8] ext4: port direct I/O to iomap infrastructure Matthew Bobrowski
2019-10-03 11:33 ` [PATCH v4 1/8] ext4: move out iomap field population into separate helper Matthew Bobrowski
2019-10-08 10:27   ` Jan Kara
2019-10-09  8:57     ` Matthew Bobrowski
2019-10-09 13:06       ` Jan Kara
2019-10-10  5:39         ` Matthew Bobrowski
2019-10-09  6:02   ` Ritesh Harjani
2019-10-09  7:07     ` Christoph Hellwig
2019-10-09  7:50       ` Ritesh Harjani
2019-10-09  9:09         ` Matthew Bobrowski
2019-10-03 11:33 ` [PATCH v4 2/8] ext4: move out IOMAP_WRITE path " Matthew Bobrowski
2019-10-08 10:31   ` Jan Kara
2019-10-09  9:18     ` Matthew Bobrowski
2019-10-09  6:22   ` Ritesh Harjani
2019-10-09  9:31     ` Matthew Bobrowski [this message]
2019-10-03 11:33 ` [PATCH v4 3/8] ext4: introduce new callback for IOMAP_REPORT operations Matthew Bobrowski
2019-10-08 10:42   ` Jan Kara
2019-10-09  9:41     ` Matthew Bobrowski
2019-10-09  6:00   ` Ritesh Harjani
2019-10-09 12:08     ` Matthew Bobrowski
2019-10-09 13:14       ` Ritesh Harjani
2019-10-03 11:34 ` [PATCH v4 4/8] ext4: introduce direct I/O read path using iomap infrastructure Matthew Bobrowski
2019-10-08 10:52   ` Jan Kara
2019-10-09 10:55     ` Matthew Bobrowski
2019-10-09  6:39   ` Ritesh Harjani
2019-10-03 11:34 ` [PATCH v4 5/8] ext4: move inode extension/truncate code out from ->iomap_end() callback Matthew Bobrowski
2019-10-08 11:25   ` Jan Kara
2019-10-09 10:18     ` Matthew Bobrowski
2019-10-09 12:51       ` Jan Kara
2019-10-10  5:44         ` Matthew Bobrowski
2019-10-09  6:27   ` Ritesh Harjani
2019-10-09 10:20     ` Matthew Bobrowski
2019-10-03 11:34 ` [PATCH v4 6/8] ext4: move inode extension checks out from ext4_iomap_alloc() Matthew Bobrowski
2019-10-08 11:27   ` Jan Kara
2019-10-09 10:21     ` Matthew Bobrowski
2019-10-09  6:30   ` Ritesh Harjani
2019-10-09 10:39     ` Matthew Bobrowski
2019-10-03 11:34 ` [PATCH v4 7/8] ext4: reorder map.m_flags checks in ext4_set_iomap() Matthew Bobrowski
2019-10-08 11:30   ` Jan Kara
2019-10-09 10:42     ` Matthew Bobrowski
2019-10-09  6:35   ` Ritesh Harjani
2019-10-09 10:43     ` Matthew Bobrowski
2019-10-03 11:35 ` [PATCH v4 8/8] ext4: introduce direct I/O write path using iomap infrastructure Matthew Bobrowski
2019-10-08 15:12   ` Jan Kara
2019-10-09  7:11     ` Christoph Hellwig
2019-10-09 13:41       ` Jan Kara
2019-10-09 11:53     ` Matthew Bobrowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191009093144.GD2125@poseidon.bobrowski.net \
    --to=mbobrowski@mbobrowski.org \
    --cc=adilger.kernel@dilger.ca \
    --cc=darrick.wong@oracle.com \
    --cc=david@fromorbit.com \
    --cc=hch@infradead.org \
    --cc=jack@suse.cz \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=riteshh@linux.ibm.com \
    --cc=tytso@mit.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.