From: Alex Elder <aelder@sgi.com>
To: Christoph Hellwig <hch@infradead.org>
Cc: xfs@oss.sgi.com
Subject: Re: [PATCH 07/27] xfs: split xfs_itruncate_finish
Date: Tue, 5 Jul 2011 23:35:58 -0500 [thread overview]
Message-ID: <1309926958.3381.61.camel@doink> (raw)
In-Reply-To: <20110701094603.580931463@bombadil.infradead.org>
On Fri, 2011-07-01 at 05:43 -0400, Christoph Hellwig wrote:
> plain text document attachment (xfs-split-xfs_itruncate_finish)
> Split the guts of xfs_itruncate_finish that loop over the existing extents
> and calls xfs_bunmapi on them into a new helper, xfs_itruncate_externs.
> Make xfs_attr_inactive call it directly instead of xfs_itruncate_finish,
> which allows to simplify the latter a lot, by only letting it deal with
> the data fork. As a result xfs_itruncate_finish is renamed to
> xfs_itruncate_data to make its use case more obvious.
>
> Also remove the sync parameter from xfs_itruncate_data, which has been
> unessecary since the introduction of the busy extent list in 2002, and
> completely dead code since 2003 when the XFS_BMAPI_ASYNC parameter was
> made a no-op.
>
> I can't actually see why the xfs_attr_inactive needs to set the transaction
> sync, but let's keep this patch simple and without changes in behaviour.
>
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Dave Chinner <dchinner@redhat.com>
OK, finally got through this. Not with my usual
rigor, but it looks like a pretty reasonable
split-up of the function.
I have one remark but that's it.
Reviewed-by: Alex Elder <aelder@sgi.com>
. . .
> @@ -1390,128 +1274,143 @@ xfs_itruncate_finish(
> * beyond the maximum file size (ie it is the same as last_block),
> * then there is nothing to do.
> */
> + first_unmap_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)new_size);
> last_block = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_MAXIOFFSET(mp));
> - ASSERT(first_unmap_block <= last_block);
. . .
> + if (error)
> + goto out_bmap_cancel;
>
> /*
> * Duplicate the transaction that has the permanent
> * reservation and commit the old transaction.
> */
> - error = xfs_bmap_finish(tp, &free_list, &committed);
> - ntp = *tp;
> + error = xfs_bmap_finish(&tp, &free_list, &committed);
> if (committed)
> - xfs_trans_ijoin(ntp, ip);
> -
> - if (error) {
> - /*
> - * If the bmap finish call encounters an error, return
> - * to the caller where the transaction can be properly
> - * aborted. We just need to make sure we're not
> - * holding any resources that we were not when we came
> - * in.
> - *
> - * Aborting from this point might lose some blocks in
> - * the file system, but oh well.
The above comment (if true--I haven't really checked) seems
like something significant to preserve.
> - */
> - xfs_bmap_cancel(&free_list);
> - return error;
> - }
> + xfs_trans_ijoin(tp, ip);
> + if (error)
> + goto out_bmap_cancel;
. . .
> +
> +out:
> + *tpp = tp;
> + return error;
> +out_bmap_cancel:
> + /*
> + * If the bunmapi call encounters an error, return to the caller where
> + * the transaction can be properly aborted. We just need to make sure
> + * we're not holding any resources that we were not when we came in.
> + */
> + xfs_bmap_cancel(&free_list);
> + goto out;
> +}
> +
. . .
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2011-07-06 4:35 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-01 9:43 [PATCH 00/27] patch queue for Linux 3.1, V2 Christoph Hellwig
2011-07-01 9:43 ` [PATCH 01/27] xfs: PF_FSTRANS should never be set in ->writepage Christoph Hellwig
2011-07-01 9:43 ` [PATCH 02/27] xfs: re-enable non-blocking behaviour in xfs_map_blocks Christoph Hellwig
2011-07-05 22:35 ` Alex Elder
2011-07-06 6:37 ` Christoph Hellwig
2011-07-06 13:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 03/27] xfs: work around bogus gcc warning in xfs_allocbt_init_cursor Christoph Hellwig
2011-07-01 9:43 ` [PATCH 04/27] xfs: split xfs_setattr Christoph Hellwig
2011-07-01 9:43 ` [PATCH 06/27] xfs: kill xfs_itruncate_start Christoph Hellwig
2011-07-01 9:43 ` [PATCH 07/27] xfs: split xfs_itruncate_finish Christoph Hellwig
2011-07-06 4:35 ` Alex Elder [this message]
2011-07-06 8:11 ` Christoph Hellwig
2011-07-06 14:05 ` Alex Elder
2011-07-01 9:43 ` [PATCH 08/27] xfs: improve sync behaviour in the fact of aggressive dirtying Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-06 8:15 ` Christoph Hellwig
2011-07-06 14:59 ` Alex Elder
2011-07-01 9:43 ` [PATCH 09/27] xfs: fix filesystsem freeze race in xfs_trans_alloc Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 10/27] xfs: remove i_transp Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 11/27] xfs: kill the unused struct xfs_sync_work Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 12/27] xfs: factor out xfs_dir2_leaf_find_entry Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 13/27] xfs: cleanup shortform directory inode number handling Christoph Hellwig
2011-07-05 22:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 14/27] xfs: kill struct xfs_dir2_sf Christoph Hellwig
2011-07-06 1:57 ` Dave Chinner
2011-07-06 8:28 ` Christoph Hellwig
2011-07-06 3:24 ` Alex Elder
2011-07-06 8:33 ` Christoph Hellwig
2011-07-06 15:05 ` Alex Elder
2011-07-01 9:43 ` [PATCH 15/27] xfs: cleanup the defintion of struct xfs_dir2_sf_entry Christoph Hellwig
2011-07-06 2:00 ` Dave Chinner
2011-07-06 3:33 ` Alex Elder
2011-07-06 8:34 ` Christoph Hellwig
2011-07-01 9:43 ` [PATCH 16/27] xfs: avoid usage of struct xfs_dir2_block Christoph Hellwig
2011-07-06 2:19 ` Dave Chinner
2011-07-06 8:35 ` Christoph Hellwig
2011-07-06 3:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 17/27] xfs: kill " Christoph Hellwig
2011-07-06 2:31 ` Dave Chinner
2011-07-06 8:37 ` Christoph Hellwig
2011-07-06 15:11 ` Alex Elder
2011-07-06 3:36 ` Alex Elder
2011-07-01 9:43 ` [PATCH 18/27] xfs: avoid usage of struct xfs_dir2_data Christoph Hellwig
2011-07-06 3:02 ` Dave Chinner
2011-07-06 8:43 ` Christoph Hellwig
2011-07-06 3:38 ` Alex Elder
2011-07-06 8:45 ` Christoph Hellwig
2011-07-01 9:43 ` [PATCH 19/27] xfs: kill " Christoph Hellwig
2011-07-06 3:05 ` Dave Chinner
2011-07-06 3:38 ` Alex Elder
2011-07-01 9:43 ` [PATCH 20/27] xfs: cleanup the defintion of struct xfs_dir2_data_entry Christoph Hellwig
2011-07-06 3:06 ` Dave Chinner
2011-07-06 3:44 ` Alex Elder
2011-07-06 8:48 ` Christoph Hellwig
2011-07-01 9:43 ` [PATCH 21/27] xfs: cleanup struct xfs_dir2_leaf Christoph Hellwig
2011-07-06 3:13 ` Dave Chinner
2011-07-06 3:44 ` Alex Elder
2011-07-01 9:43 ` [PATCH 22/27] xfs: use generic get_unaligned_beXX helpers Christoph Hellwig
2011-07-06 3:44 ` Dave Chinner
2011-07-06 9:07 ` Christoph Hellwig
2011-07-07 8:00 ` Christoph Hellwig
2011-07-06 3:47 ` Alex Elder
2011-07-01 9:43 ` [PATCH 23/27] xfs: remove the unused xfs_bufhash structure Christoph Hellwig
2011-07-06 3:44 ` Dave Chinner
2011-07-06 3:49 ` Alex Elder
2011-07-01 9:43 ` [PATCH 24/27] xfs: clean up buffer locking helpers Christoph Hellwig
2011-07-06 3:47 ` Dave Chinner
2011-07-06 3:55 ` Alex Elder
2011-07-01 9:43 ` [PATCH 25/27] xfs: return the buffer locked from xfs_buf_get_uncached Christoph Hellwig
2011-07-06 3:48 ` Dave Chinner
2011-07-06 3:57 ` Alex Elder
2011-07-01 9:43 ` [PATCH 26/27] xfs: cleanup I/O-related buffer flags Christoph Hellwig
2011-07-06 3:54 ` Dave Chinner
2011-07-06 9:11 ` Christoph Hellwig
2011-07-06 4:09 ` Alex Elder
2011-07-06 9:11 ` Christoph Hellwig
2011-07-01 9:43 ` [PATCH 27/27] xfs: avoid a few disk cache flushes Christoph Hellwig
2011-07-06 3:55 ` Dave Chinner
2011-07-06 4:11 ` Alex Elder
2011-07-06 4:40 ` [PATCH 00/27] patch queue for Linux 3.1, V2 Alex Elder
2011-07-06 6:42 ` Christoph Hellwig
2011-07-06 13:32 ` Alex Elder
2011-07-06 13:43 ` Christoph Hellwig
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=1309926958.3381.61.camel@doink \
--to=aelder@sgi.com \
--cc=hch@infradead.org \
--cc=xfs@oss.sgi.com \
/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.