From: Dave Chinner <dchinner@redhat.com>
To: Jan Kara <jack@suse.cz>
Cc: linux-fsdevel@vger.kernel.org, Al Viro <viro@ZenIV.linux.org.uk>,
Ben Myers <bpm@sgi.com>, Alex Elder <elder@kernel.org>,
xfs@oss.sgi.com
Subject: Re: [PATCH 18/27] xfs: Convert to new freezing code
Date: Tue, 5 Jun 2012 14:15:46 +1000 [thread overview]
Message-ID: <20120605041546.GB3019@devil.redhat.com> (raw)
In-Reply-To: <1338589841-9568-19-git-send-email-jack@suse.cz>
On Sat, Jun 02, 2012 at 12:30:32AM +0200, Jan Kara wrote:
> Generic code now blocks all writers from standard write paths. So we add
> blocking of all writers coming from ioctl (we get a protection of ioctl against
> racing remount read-only as a bonus) and convert xfs_file_aio_write() to a
> non-racy freeze protection. We also keep freeze protection on transaction
> start to block internal filesystem writes such as removal of preallocated
> blocks.
I don't think this will apply to a current TOT XFS - the end_io
context hunks look wrong. Perhaps your rebased this before the XFS
tree was merged?
> CC: Ben Myers <bpm@sgi.com>
> CC: Alex Elder <elder@kernel.org>
> CC: xfs@oss.sgi.com
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
> fs/xfs/xfs_aops.c | 18 ++++++++++++++++
> fs/xfs/xfs_file.c | 10 ++++++--
> fs/xfs/xfs_ioctl.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++--
> fs/xfs/xfs_ioctl32.c | 12 ++++++++++
> fs/xfs/xfs_iomap.c | 4 +-
> fs/xfs/xfs_mount.c | 2 +-
> fs/xfs/xfs_mount.h | 3 --
> fs/xfs/xfs_sync.c | 2 +-
> fs/xfs/xfs_trans.c | 17 ++++++++++++--
> fs/xfs/xfs_trans.h | 2 +
> 10 files changed, 109 insertions(+), 16 deletions(-)
>
> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
> index ae31c31..4a001b8 100644
> --- a/fs/xfs/xfs_aops.c
> +++ b/fs/xfs/xfs_aops.c
> @@ -124,6 +124,12 @@ xfs_setfilesize_trans_alloc(
> ioend->io_append_trans = tp;
>
> /*
> + * We will pass freeze protection with a transaction. So tell lockdep
> + * we released it.
> + */
> + rwsem_release(&ioend->io_inode->i_sb->s_writers.lock_map[SB_FREEZE_FS-1],
> + 1, _THIS_IP_);
> + /*
Oh, that's rather ugly. If this is necessary where a transaction
handle is passed to another thread and completed there, then this
really needs to be wrapped in helper functions so it is always done
correctly when the PF_TRANS flag is also transferred. That can be
done later, though. It will also need to be done to the allocation
code which passes allocation off to a workqueue, but that is
currently synchronous so won't be a problem for this change right
now...
> @@ -631,7 +638,11 @@ xfs_ioc_space(
> if (ioflags & IO_INVIS)
> attr_flags |= XFS_ATTR_DMI;
>
> + error = mnt_want_write_file(filp);
> + if (error)
> + return error;
> error = xfs_change_file_space(ip, cmd, bf, filp->f_pos, attr_flags);
> + mnt_drop_write_file(filp);
> return -error;
Those positive/negative error conversions are starting to get
confusing and difficult to get right. I'm going to have to convert
XFS at some point to return negative errors everywhere so we can get
rid of that problem once and for all...
Otherwise, this looks OK. I'll need to pull this in and test it, but
the I was using the previous version of the patch series for almost
the entire 3.4-rc cycle and didn't come across any problems with
it....
Cheers,
Dave.
--
Dave Chinner
dchinner@redhat.com
next prev parent reply other threads:[~2012-06-05 4:16 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-01 22:30 [PATCH 00/27 v6] Fix filesystem freezing deadlocks Jan Kara
2012-06-01 22:30 ` [PATCH 01/27] fb_defio: Push file_update_time() into fb_deferred_io_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 02/27] fs: Push file_update_time() into __block_page_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 03/27] ceph: Push file_update_time() into ceph_page_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 04/27] 9p: Push file_update_time() into v9fs_vm_page_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 05/27] gfs2: Push file_update_time() into gfs2_page_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 06/27] sysfs: Push file_update_time() into bin_page_mkwrite() Jan Kara
2012-06-01 22:30 ` [PATCH 07/27] mm: Update file times from fault path only if .page_mkwrite is not set Jan Kara
2012-06-01 22:30 ` [PATCH 08/27] mm: Make default vm_ops provide ->page_mkwrite handler Jan Kara
2012-06-01 22:30 ` [PATCH 09/27] fs: Push mnt_want_write() outside of i_mutex Jan Kara
2012-06-01 22:30 ` [PATCH 10/27] fat: " Jan Kara
2012-06-01 22:30 ` [PATCH 11/27] btrfs: " Jan Kara
2012-06-01 22:30 ` [PATCH 12/27] nfsd: " Jan Kara
2012-06-01 22:30 ` [PATCH 13/27] fs: Improve filesystem freezing handling Jan Kara
2012-06-01 22:30 ` [PATCH 14/27] fs: Add freezing handling to mnt_want_write() / mnt_drop_write() Jan Kara
2012-06-06 8:04 ` Dave Chinner
2012-06-06 15:16 ` Jan Kara
2012-06-01 22:30 ` [PATCH 15/27] fs: Skip atime update on frozen filesystem Jan Kara
2012-06-01 22:30 ` [PATCH 16/27] fs: Protect write paths by sb_start_write - sb_end_write Jan Kara
2012-06-01 22:30 ` [PATCH 17/27] ext4: Convert to new freezing mechanism Jan Kara
2012-06-11 3:13 ` Ted Ts'o
2012-06-01 22:30 ` [PATCH 18/27] xfs: Convert to new freezing code Jan Kara
2012-06-05 4:15 ` Dave Chinner [this message]
2012-06-05 8:43 ` Jan Kara
2012-06-01 22:30 ` [PATCH 19/27] ocfs2: Convert to new freezing mechanism Jan Kara
2012-06-01 22:30 ` [PATCH 20/27] gfs2: " Jan Kara
2012-06-01 22:30 ` [PATCH 21/27] fuse: " Jan Kara
2012-06-01 22:30 ` [PATCH 22/27] ntfs: " Jan Kara
2012-06-01 22:30 ` [PATCH 24/27] btrfs: " Jan Kara
2012-06-01 22:30 ` [PATCH 25/27] ext2: Implement freezing Jan Kara
2012-06-01 22:30 ` [PATCH 26/27] fs: Remove old freezing mechanism Jan Kara
2012-06-01 22:30 ` [PATCH 27/27] Documentation: Correct s_umount state for freeze_fs/unfreeze_fs Jan Kara
[not found] ` <1338589841-9568-1-git-send-email-jack-AlSwsSmVLrQ@public.gmane.org>
2012-06-01 22:30 ` [PATCH 23/27] nilfs2: Convert to new freezing mechanism Jan Kara
2012-06-09 6:29 ` [PATCH 00/27 v6] Fix filesystem freezing deadlocks Al Viro
-- strict thread matches above, loose matches on Subject: below --
2012-04-16 16:13 [PATCH 00/19 v5] " Jan Kara
2012-04-16 16:13 ` [PATCH 18/27] xfs: Convert to new freezing code Jan Kara
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=20120605041546.GB3019@devil.redhat.com \
--to=dchinner@redhat.com \
--cc=bpm@sgi.com \
--cc=elder@kernel.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).