From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH 04/13] xfs: don't run the sync work if the filesyste is read-only
Date: Thu, 30 Aug 2012 22:00:08 +1000 [thread overview]
Message-ID: <1346328017-2795-5-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1346328017-2795-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
If the filesytem is mounted or remounted read-only, stop the sync
worker that tries to flush or cover the log if the filesystem is
dirty. It's read-only, so it isn't dirty. Restart it on a remount,rw
as necessary. This avoids the need for RO checks in the work.
Similarly, stop the sync work when the filesystem is frozen, and
start it again when the filesysetm is thawed. This avoids the need
for special freeze checks in the work.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
fs/xfs/xfs_super.c | 2 ++
fs/xfs/xfs_sync.c | 26 ++++++++++++++------------
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c
index a08a648..619a3ff 100644
--- a/fs/xfs/xfs_super.c
+++ b/fs/xfs/xfs_super.c
@@ -1106,6 +1106,7 @@ xfs_fs_remount(
* value if it is non-zero, otherwise go with the default.
*/
xfs_restore_resvblks(mp);
+ xfs_sync_queue_work(mp);
}
/* rw -> ro */
@@ -1151,6 +1152,7 @@ xfs_fs_unfreeze(
struct xfs_mount *mp = XFS_M(sb);
xfs_restore_resvblks(mp);
+ xfs_sync_queue_work(mp);
return 0;
}
diff --git a/fs/xfs/xfs_sync.c b/fs/xfs/xfs_sync.c
index ea8e0a1..b0a11cd 100644
--- a/fs/xfs/xfs_sync.c
+++ b/fs/xfs/xfs_sync.c
@@ -322,6 +322,9 @@ xfs_quiesce_data(
* Second stage of a quiesce. The data is already synced, now we have to take
* care of the metadata. New transactions are already blocked, so we need to
* wait for any remaining transactions to drain out before proceeding.
+ *
+ * Note: this stops background sync work - the callers must ensure it is started
+ * again when appropriate.
*/
void
xfs_quiesce_attr(
@@ -340,6 +343,9 @@ xfs_quiesce_attr(
/* flush all pending changes from the AIL */
xfs_ail_push_all_sync(mp->m_ail);
+ /* stop background sync work */
+ cancel_delayed_work_sync(&mp->m_sync_work);
+
/*
* Just warn here till VFS can correctly support
* read-only remount without racing.
@@ -380,7 +386,7 @@ xfs_sync_work_queue(
/*
* Every sync period we need to unpin all items in the AIL and push them to
* disk. If there is nothing dirty, then we might need to cover the log to
- * indicate that the filesystem is idle and not frozen.
+ * indicate that the filesystem is idle.
*/
void
xfs_sync_worker(
@@ -388,19 +394,15 @@ xfs_sync_worker(
{
struct xfs_mount *mp = container_of(to_delayed_work(work),
struct xfs_mount, m_sync_work);
- int error;
- if (!(mp->m_flags & XFS_MOUNT_RDONLY)) {
- /* dgc: errors ignored here */
- if (mp->m_super->s_writers.frozen == SB_UNFROZEN &&
- xfs_log_need_covered(mp))
- error = xfs_fs_log_dummy(mp);
- else
- xfs_log_force(mp, 0);
+ /* dgc: errors ignored - not fatal and nowhere to report them */
+ if (xfs_log_need_covered(mp))
+ xfs_fs_log_dummy(mp);
+ else
+ xfs_log_force(mp, 0);
- /* start pushing all the metadata that is currently dirty */
- xfs_ail_push_all(mp->m_ail);
- }
+ /* start pushing all the metadata that is currently dirty */
+ xfs_ail_push_all(mp->m_ail);
/* queue us up again */
xfs_sync_work_queue(mp);
--
1.7.10
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next prev parent reply other threads:[~2012-08-30 11:59 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-30 12:00 [PATCH V2 00/13] xfs: remove the xfssyncd mess Dave Chinner
2012-08-30 12:00 ` [PATCH 01/13] xfs: xfs_syncd_stop must die Dave Chinner
2012-09-01 23:15 ` Christoph Hellwig
2012-09-04 16:10 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 02/13] xfs: rename the xfs_syncd workqueue Dave Chinner
2012-09-01 23:17 ` Christoph Hellwig
2012-09-03 3:09 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 03/13] xfs: rationalise xfs_mount_wq users Dave Chinner
2012-09-04 15:48 ` Mark Tinguely
2012-09-05 4:30 ` Dave Chinner
2012-09-05 13:16 ` Mark Tinguely
2012-09-05 14:34 ` Mark Tinguely
2012-09-06 0:46 ` Dave Chinner
2012-09-06 15:08 ` Mark Tinguely
2012-09-07 0:41 ` Dave Chinner
2012-09-11 21:25 ` Mark Tinguely
2012-08-30 12:00 ` Dave Chinner [this message]
2012-09-04 16:13 ` [PATCH 04/13] xfs: don't run the sync work if the filesyste is read-only Mark Tinguely
2012-08-30 12:00 ` [PATCH 05/13] xfs: sync work is now only periodic log work Dave Chinner
2012-09-01 23:23 ` Christoph Hellwig
2012-09-03 3:36 ` Dave Chinner
2012-09-04 16:14 ` Mark Tinguely
2012-09-04 18:57 ` Mark Tinguely
2012-09-05 4:35 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 06/13] xfs: Bring some sanity to log unmounting Dave Chinner
2012-09-01 23:28 ` Christoph Hellwig
2012-09-04 19:11 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 07/13] xfs: xfs_sync_data is redundant Dave Chinner
2012-09-01 23:24 ` Christoph Hellwig
2012-09-03 6:08 ` Dave Chinner
2012-09-04 20:48 ` Mark Tinguely
2012-09-06 0:53 ` Dave Chinner
2012-08-30 12:00 ` [PATCH 08/13] xfs: xfs_sync_fsdata " Dave Chinner
2012-09-01 23:27 ` Christoph Hellwig
2012-09-04 20:59 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 09/13] xfs: move xfs_quiesce_attr() into xfs_super.c Dave Chinner
2012-09-01 23:27 ` Christoph Hellwig
2012-09-04 21:03 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 10/13] xfs: xfs_quiesce_attr() should quiesce the log like unmount Dave Chinner
2012-09-01 23:29 ` Christoph Hellwig
2012-09-04 21:04 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 11/13] xfs: rename xfs_sync.[ch] to xfs_icache.[ch] Dave Chinner
2012-09-01 23:30 ` Christoph Hellwig
2012-09-04 21:06 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 12/13] xfs: move inode locking functions to xfs_inode.c Dave Chinner
2012-09-01 23:30 ` Christoph Hellwig
2012-09-04 21:07 ` Mark Tinguely
2012-08-30 12:00 ` [PATCH 13/13] xfs: remove xfs_iget.c Dave Chinner
2012-09-01 23:31 ` Christoph Hellwig
2012-09-04 21:11 ` Mark Tinguely
2012-08-30 12:15 ` [PATCH V2 00/13] xfs: remove the xfssyncd mess Markus Trippelsdorf
2012-08-30 22:51 ` Dave Chinner
2012-08-31 6:18 ` Markus Trippelsdorf
2012-08-31 8:42 ` Dave Chinner
2012-08-31 9:30 ` Markus Trippelsdorf
2012-08-31 14:01 ` Mark Tinguely
2012-09-03 4:05 ` Dave Chinner
2012-09-04 0:13 ` Mark Tinguely
2012-09-25 9:26 ` Christoph Hellwig
2012-09-25 9:35 ` Dave Chinner
-- strict thread matches above, loose matches on Subject: below --
2012-08-30 10:57 [PATCH " Dave Chinner
2012-08-30 10:57 ` [PATCH 04/13] xfs: don't run the sync work if the filesyste is read-only Dave Chinner
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=1346328017-2795-5-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--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