diff options
author | jeff <jeff@FreeBSD.org> | 2010-05-07 08:20:56 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2010-05-07 08:20:56 +0000 |
commit | 0b3e023908811e6f4c304045b5b8e993f712b6af (patch) | |
tree | b3807258ade484b6f328486eb7b6eec8ae4dd80b /sys/ufs | |
parent | 3ced1746188e9e1bdaeb9b312f53ba6709dc6414 (diff) | |
download | FreeBSD-src-0b3e023908811e6f4c304045b5b8e993f712b6af.zip FreeBSD-src-0b3e023908811e6f4c304045b5b8e993f712b6af.tar.gz |
- Use the correct flag mask when determining whether an inode has
successfully made it to the free list yet or not. This fixes
a deadlock that can occur with unlinked but referenced files.
Journal space and inodedeps were not correctly reclaimed because
the inode block was not left dirty.
Tested/Reported by: lwindschuh@googlemail.com
Diffstat (limited to 'sys/ufs')
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index b05339b..90ed314 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -9301,7 +9301,7 @@ handle_written_inodeblock(inodedep, bp) hadchanges = 1; } /* Leave this inodeblock dirty until it's in the list. */ - if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED) + if ((inodedep->id_state & (UNLINKED | UNLINKONLIST)) == UNLINKED) hadchanges = 1; /* * If we had to rollback the inode allocation because of |