[PATCH 00/13] xfs: remove the xfssyncd mess

Dave Chinner
2012-08-30T10:57:06Z

Folks,

Here's the patchset I talked about here:

http://oss.sgi.com/archives/xfs/2012-06/msg00064.html

to sort out the syncd start/stop unmount race/panic mess once and
for all. I've only smoke tested it so far, but it hasn't let any out
yet.

The overall diffstat is:

fs/xfs/Makefile | 3 +-
fs/xfs/{xfs_sync.c => xfs_icache.c} | 694 +++++++++++++++++++++-------------
fs/xfs/{xfs_sync.h => xfs_icache.h} | 14 +-
fs/xfs/xfs_iget.c | 705 -----------------------------------
fs/xfs/xfs_inode.c | 250 +++++++++++++
fs/xfs/xfs_inode.h | 10 +-
fs/xfs/xfs_iomap.c | 3 +-
fs/xfs/xfs_log.c | 83 ++++-
fs/xfs/xfs_log.h | 4 +
fs/xfs/xfs_log_priv.h | 1 +
fs/xfs/xfs_mount.c | 32 +-
fs/xfs/xfs_mount.h | 6 +-
fs/xfs/xfs_qm_syscalls.c | 1 +
fs/xfs/xfs_super.c | 93 +++--
fs/xfs/xfs_vnodeops.c | 3 +-
15 files changed, 840 insertions(+), 1062 deletions(-)

So it removes a couple of hundred lines of code whilst still
providing exactly the same functionality and fixing some bugs.

e.g. xfs_attr_quiesce() isn't waiting for metadata IO completion
before writing the unmount record, which explains why occasionally
freeze results in a log with more than just an unmount and dummy
record in it.

Comments?

Cheers,

Dave.

PS: it just let the smoke out caused by the
writeback_inodes_sb_if_idle() change in xfs_create(). I think I used
the wrong inode to get the superblock....