NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/40562: busy loop in ffs_sync when unmounting a file system
>Number: 40562
>Category: kern
>Synopsis: busy loop in ffs_sync when unmounting a file system
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Feb 06 00:10:00 +0000 2009
>Originator: YAMAMOTO Takashi <yamt%mwd.biglobe.ne.jp@localhost>
>Release: NetBSD 5.99.7
>Organization:
>Environment:
amd64
>Description:
it seems that ffs_fsync failed to write out dirty blocks
for VBLK if the file system which the VBLK special file is on
is mounted with wapbl. it causes ffs_sync busy-loop with calling
VOP_FSYNC on devvp.
>How-To-Repeat:
make /dev an ffs with logging, run the following,
and see that umount takes too long.
rm foo
dd if=/dev/zero of=foo bs=1m count=16
vnconfig vnd0 foo
newfs -F /dev/rvnd0d
mount /dev/vnd0d /mnt
touch /mnt/0
umount /dev/vnd0d
>Fix:
ensure that ffs_fsync do vflushbuf equivalent for VBLK.
i'd suggest:
- ensure that all VOP_FSYNC implementations call VFS_FSYNC
for VBLK if a file system is mounted on it.
- make ffs VFS_FSYNC have its own function, say, ffs_vfs_fsync,
rather than sharing ffs_full_fsync or ffs_fsync.
- move the softdep/wapbl VBLK handling for a mounted file system
from ffs_full_fsync to ffs_vfs_fsync.
- kill FSYNC_VFS.
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index