Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Feb 2007 22:37:36 -0600
From:      Eric Anderson <anderson@freebsd.org>
To:        "Matthew D. Fuller" <fullermd@over-yonder.net>
Cc:        freebsd-current@freebsd.org
Subject:   Re: softdep_waitidle: Failed to flush worklist [...]
Message-ID:  <45CFEF10.5050605@freebsd.org>
In-Reply-To: <20070211050825.GA70508@over-yonder.net>
References:  <20070211050825.GA70508@over-yonder.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 02/10/07 23:08, Matthew D. Fuller wrote:
> 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


Aren't you putting the filesystem on top of the label here?  Shouldn't 
you do something like:

newfs -U /dev/md10a

instead?


> # 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...
> 
> 
> 


Eric





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