Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Feb 2007 23:08:25 -0600
From:      "Matthew D. Fuller" <fullermd@over-yonder.net>
To:        freebsd-current@freebsd.org
Subject:   softdep_waitidle: Failed to flush worklist [...]
Message-ID:  <20070211050825.GA70508@over-yonder.net>

next in thread | raw e-mail | index | archive | help
So, I have a lot of my filesystems (like /) mounted read-only, which
means I occasionally have to remount them to change stuff.  For a long
time, I had an issue where, if I remounted them too quickly after
making changes that needed to be sync'd, the remount wouldn't fully
sync them and would leave turds lying around the fs requiring a manual
fsck to clean up, even though it would mark the fs clean.  That was
rather annoying and scary.

Last time I updated -CURRENT (~Nov), it stopped doing that; it instead
moved on to much freakier occurances where it would lock the
filesystem mounted (still usable, but stuck).  I've mentioned this
once or twice, but today I updated to current -CURRENT, and got a
chance to take my system offline to characterize it.

This is trivially reproducible, and rather scary.  Following is a
script with comments I can use to cause it at will.  If you don't like
having a mounted and indestructible filesystem hanging around your
system, don't run it.


#!/bin/sh -ex

# Make file
rm -f /tmp/fs
dd if=/dev/zero of=/tmp/fs bs=1m count=20

# Make vnode
mdconfig -a -t vnode -f /tmp/fs -u 10

# Make the filesystem
bsdlabel -w md10 auto
newfs -U /dev/md10

# Mount
mount /dev/md10 /mnt

# This tree is big enough to trigger it
mtree -deU -f /etc/mtree/BSD.usr.dist -p /mnt >> /dev/null

# Sync up, just for sport
sync ; sync ; sync

# Now blow it away
rm -rf /mnt/*

# Now, if we did this, it would work OK.  I THINK this actually failed
# last time, but with a few quick tries it always seems to work here
# now.
#umount /mnt

# But when I do this...
mount -u -o ro /mnt

# BOOM.  In syslog and on console, I get "softdep_waitidle: Failed to
# flush worklist for 0xc33ac538".  The filesystem is still mounted
# r/w.  I can't mount it r/o.  I can't umount it, or umount -f it.
# Every try just repeats the same softdep message.  The sync on reboot
# bitches just the same.  I did this to /usr/ports a month or two ago,
# and could still use it just fine up until tonite's reboot, but I
# really wanted to be able to unmount it...



-- 
Matthew Fuller     (MF4839)   |  fullermd@over-yonder.net
Systems/Network Administrator |  http://www.over-yonder.net/~fullermd/
           On the Internet, nobody can hear you scream.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070211050825.GA70508>