summaryrefslogtreecommitdiffstats
path: root/sys/gnu/fs
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1997-12-02 11:42:28 +0000
committerbde <bde@FreeBSD.org>1997-12-02 11:42:28 +0000
commitc7448527e18b572d781a615a1bd6fc7a34c8040e (patch)
tree24ff795b9dec739e6f1ef09d95717f07724c53b8 /sys/gnu/fs
parente5bce5c78c0eec929722656daf79a8e91f11665c (diff)
downloadFreeBSD-src-c7448527e18b572d781a615a1bd6fc7a34c8040e.zip
FreeBSD-src-c7448527e18b572d781a615a1bd6fc7a34c8040e.tar.gz
Use the same algorithm as ffs for generation numbers.
Diffstat (limited to 'sys/gnu/fs')
-rw-r--r--sys/gnu/fs/ext2fs/ext2_alloc.c7
-rw-r--r--sys/gnu/fs/ext2fs/ext2_vfsops.c5
2 files changed, 3 insertions, 9 deletions
diff --git a/sys/gnu/fs/ext2fs/ext2_alloc.c b/sys/gnu/fs/ext2fs/ext2_alloc.c
index dca62d8..53409f2 100644
--- a/sys/gnu/fs/ext2fs/ext2_alloc.c
+++ b/sys/gnu/fs/ext2fs/ext2_alloc.c
@@ -58,8 +58,6 @@
#include <gnu/ext2fs/fs.h>
#include <gnu/ext2fs/ext2_extern.h>
-extern u_long nextgennumber;
-
static void ext2_fserr __P((struct ext2_sb_info *, u_int, char *));
/*
@@ -426,9 +424,8 @@ ext2_valloc(pvp, mode, cred, vpp)
* Set up a new generation number for this inode.
* XXX check if this makes sense in ext2
*/
- if (++nextgennumber < (u_long)time.tv_sec)
- nextgennumber = time.tv_sec;
- ip->i_gen = nextgennumber;
+ if (ip->i_gen == 0 || ++ip->i_gen == 0)
+ ip->i_gen = random() / 2 + 1;
/*
printf("ext2_valloc: allocated inode %d\n", ino);
*/
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c
index 2beedfe..781c4d8 100644
--- a/sys/gnu/fs/ext2fs/ext2_vfsops.c
+++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c
@@ -102,7 +102,6 @@ VFS_SET(ext2fs_vfsops, ext2fs, MOUNT_EXT2FS, 0);
#define bsd_malloc malloc
#define bsd_free free
-extern u_long nextgennumber;
static int ext2fs_inode_hash_lock;
static int compute_sb_data __P((struct vnode * devvp,
@@ -1005,9 +1004,7 @@ printf("ext2_vget(%d) dbn= %d ", ino, fsbtodb(fs, ino_to_fsba(fs, ino)));
* already have one. This should only happen on old filesystems.
*/
if (ip->i_gen == 0) {
- if (++nextgennumber < (u_long)time.tv_sec)
- nextgennumber = time.tv_sec;
- ip->i_gen = nextgennumber;
+ ip->i_gen = random() / 2 + 1;
if ((vp->v_mount->mnt_flag & MNT_RDONLY) == 0)
ip->i_flag |= IN_MODIFIED;
}
OpenPOWER on IntegriCloud