summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2010-05-07 08:20:56 +0000
committerjeff <jeff@FreeBSD.org>2010-05-07 08:20:56 +0000
commit0b3e023908811e6f4c304045b5b8e993f712b6af (patch)
treeb3807258ade484b6f328486eb7b6eec8ae4dd80b /sys/ufs
parent3ced1746188e9e1bdaeb9b312f53ba6709dc6414 (diff)
downloadFreeBSD-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.c2
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
OpenPOWER on IntegriCloud