aboutsummaryrefslogtreecommitdiff
path: root/sys/gnu
diff options
context:
space:
mode:
authorPoul-Henning Kamp <phk@FreeBSD.org>1997-10-14 18:46:48 +0000
committerPoul-Henning Kamp <phk@FreeBSD.org>1997-10-14 18:46:48 +0000
commit40715905a7b8fa9fb0fd2489bf2b062f33e3fd39 (patch)
tree080b3c86cf2ecbc4594958debb6f39464725e590 /sys/gnu
parent4475598f18d71838caaa881ce94f778d8dc91c1a (diff)
Notes
Diffstat (limited to 'sys/gnu')
-rw-r--r--sys/gnu/ext2fs/ext2_alloc.c2
-rw-r--r--sys/gnu/ext2fs/ext2_ihash.c11
-rw-r--r--sys/gnu/ext2fs/inode.h3
-rw-r--r--sys/gnu/fs/ext2fs/ext2_alloc.c2
-rw-r--r--sys/gnu/fs/ext2fs/inode.h3
5 files changed, 11 insertions, 10 deletions
diff --git a/sys/gnu/ext2fs/ext2_alloc.c b/sys/gnu/ext2fs/ext2_alloc.c
index a570ce4db9ddd..64e9b87180daa 100644
--- a/sys/gnu/ext2fs/ext2_alloc.c
+++ b/sys/gnu/ext2fs/ext2_alloc.c
@@ -538,8 +538,6 @@ ext2_vfree(ap)
int mode;
pip = VTOI(ap->a_pvp);
- /* Remove the inode from its hash chain */
- ufs_ihashrem(pip);
fs = pip->i_e2fs;
if ((u_int)ino >= fs->s_inodes_per_group * fs->s_groups_count)
panic("ifree: range: dev = 0x%x, ino = %d, fs = %s",
diff --git a/sys/gnu/ext2fs/ext2_ihash.c b/sys/gnu/ext2fs/ext2_ihash.c
index 83b29d4d58e57..e536e1ef27513 100644
--- a/sys/gnu/ext2fs/ext2_ihash.c
+++ b/sys/gnu/ext2fs/ext2_ihash.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)ufs_ihash.c 8.7 (Berkeley) 5/17/95
- * $Id: ufs_ihash.c,v 1.8 1997/02/22 09:47:47 peter Exp $
+ * $Id: ufs_ihash.c,v 1.9 1997/10/12 20:26:21 phk Exp $
*/
#include <sys/param.h>
@@ -131,6 +131,7 @@ ufs_ihashins(ip)
simple_lock(&ufs_ihash_slock);
ipp = INOHASH(ip->i_dev, ip->i_number);
LIST_INSERT_HEAD(ipp, ip, i_hash);
+ ip->i_flags |= IN_HASHED;
simple_unlock(&ufs_ihash_slock);
}
@@ -142,10 +143,12 @@ ufs_ihashrem(ip)
struct inode *ip;
{
simple_lock(&ufs_ihash_slock);
- LIST_REMOVE(ip, i_hash);
+ if (ip->i_flags & IN_HASHED) {
+ LIST_REMOVE(ip, i_hash);
#ifdef DIAGNOSTIC
- ip->i_hash.le_next = NULL;
- ip->i_hash.le_prev = NULL;
+ ip->i_hash.le_next = NULL;
+ ip->i_hash.le_prev = NULL;
#endif
+ }
simple_unlock(&ufs_ihash_slock);
}
diff --git a/sys/gnu/ext2fs/inode.h b/sys/gnu/ext2fs/inode.h
index 464713603ae79..8a7e93599ce41 100644
--- a/sys/gnu/ext2fs/inode.h
+++ b/sys/gnu/ext2fs/inode.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)inode.h 8.9 (Berkeley) 5/14/95
- * $Id: inode.h,v 1.15 1997/05/22 07:30:55 phk Exp $
+ * $Id: inode.h,v 1.16 1997/07/13 15:40:31 bde Exp $
*/
#ifndef _UFS_UFS_INODE_H_
@@ -121,6 +121,7 @@ struct inode {
#define IN_RENAME 0x0010 /* Inode is being renamed. */
#define IN_SHLOCK 0x0020 /* File has shared lock. */
#define IN_EXLOCK 0x0040 /* File has exclusive lock. */
+#define IN_HASHED 0x0080 /* Inode is on hash list */
#ifdef KERNEL
/*
diff --git a/sys/gnu/fs/ext2fs/ext2_alloc.c b/sys/gnu/fs/ext2fs/ext2_alloc.c
index a570ce4db9ddd..64e9b87180daa 100644
--- a/sys/gnu/fs/ext2fs/ext2_alloc.c
+++ b/sys/gnu/fs/ext2fs/ext2_alloc.c
@@ -538,8 +538,6 @@ ext2_vfree(ap)
int mode;
pip = VTOI(ap->a_pvp);
- /* Remove the inode from its hash chain */
- ufs_ihashrem(pip);
fs = pip->i_e2fs;
if ((u_int)ino >= fs->s_inodes_per_group * fs->s_groups_count)
panic("ifree: range: dev = 0x%x, ino = %d, fs = %s",
diff --git a/sys/gnu/fs/ext2fs/inode.h b/sys/gnu/fs/ext2fs/inode.h
index 464713603ae79..8a7e93599ce41 100644
--- a/sys/gnu/fs/ext2fs/inode.h
+++ b/sys/gnu/fs/ext2fs/inode.h
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)inode.h 8.9 (Berkeley) 5/14/95
- * $Id: inode.h,v 1.15 1997/05/22 07:30:55 phk Exp $
+ * $Id: inode.h,v 1.16 1997/07/13 15:40:31 bde Exp $
*/
#ifndef _UFS_UFS_INODE_H_
@@ -121,6 +121,7 @@ struct inode {
#define IN_RENAME 0x0010 /* Inode is being renamed. */
#define IN_SHLOCK 0x0020 /* File has shared lock. */
#define IN_EXLOCK 0x0040 /* File has exclusive lock. */
+#define IN_HASHED 0x0080 /* Inode is on hash list */
#ifdef KERNEL
/*