diff options
author | kib <kib@FreeBSD.org> | 2007-06-22 13:22:37 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2007-06-22 13:22:37 +0000 |
commit | 2f486f25b672cff71428e86c7369dbc7ed9d21a5 (patch) | |
tree | 9b4d2ba0b5040919a7c5e7db8282c7ce8cd9012c /sys/netinet | |
parent | 35e07e1a73d48b9ab13a630c8e5447aeb4e222f5 (diff) | |
download | FreeBSD-src-2f486f25b672cff71428e86c7369dbc7ed9d21a5.zip FreeBSD-src-2f486f25b672cff71428e86c7369dbc7ed9d21a5.tar.gz |
Fix livelock that could occur when snapshoting UFS with quotas, where
some quota limit was exceeded. Sequence of UFS_VALLOC()/UFS_VFREE()
call there could cause inodeblock to have both freefile and inodedep
dependencies without any inode in the block being marked for write.
Then, softdep_check_suspend() would return EAGAIN forewer.
Force write of inodeblock with allocated freefile softdependency by
setting IN_MODIFIED flag in softdep_freefile and unconditionally calling
UFS_UPDATE() in ufs_reclaim.
Reported by: kris
Debug help and tested by: Peter Holm
Approved by: re (kensmith)
MFC after: 3 weeks
Diffstat (limited to 'sys/netinet')
0 files changed, 0 insertions, 0 deletions