diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-10-14 18:46:48 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 1997-10-14 18:46:48 +0000 |
| commit | 40715905a7b8fa9fb0fd2489bf2b062f33e3fd39 (patch) | |
| tree | 080b3c86cf2ecbc4594958debb6f39464725e590 /sys/gnu | |
| parent | 4475598f18d71838caaa881ce94f778d8dc91c1a (diff) | |
Notes
Diffstat (limited to 'sys/gnu')
| -rw-r--r-- | sys/gnu/ext2fs/ext2_alloc.c | 2 | ||||
| -rw-r--r-- | sys/gnu/ext2fs/ext2_ihash.c | 11 | ||||
| -rw-r--r-- | sys/gnu/ext2fs/inode.h | 3 | ||||
| -rw-r--r-- | sys/gnu/fs/ext2fs/ext2_alloc.c | 2 | ||||
| -rw-r--r-- | sys/gnu/fs/ext2fs/inode.h | 3 |
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 /* |
