diff options
author | bde <bde@FreeBSD.org> | 1997-03-22 06:53:45 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1997-03-22 06:53:45 +0000 |
commit | 0bc178170104cff1e818e849d08a50c6a4ee0851 (patch) | |
tree | 1a4787be89dc6587f785bb211bf92dd0ce277648 /sys/gnu/ext2fs/ext2_alloc.c | |
parent | 5610d80b6231f85421e587a175ddd4d4b0c735c5 (diff) | |
download | FreeBSD-src-0bc178170104cff1e818e849d08a50c6a4ee0851.zip FreeBSD-src-0bc178170104cff1e818e849d08a50c6a4ee0851.tar.gz |
Fixed some invalid (non-atomic) accesses to `time', mostly ones of the
form `tv = time'. Use a new function gettime(). The current version
just forces atomicicity without fixing precision or efficiency bugs.
Simplified some related valid accesses by using the central function.
Diffstat (limited to 'sys/gnu/ext2fs/ext2_alloc.c')
-rw-r--r-- | sys/gnu/ext2fs/ext2_alloc.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/gnu/ext2fs/ext2_alloc.c b/sys/gnu/ext2fs/ext2_alloc.c index 8d46733..eef5393 100644 --- a/sys/gnu/ext2fs/ext2_alloc.c +++ b/sys/gnu/ext2fs/ext2_alloc.c @@ -241,6 +241,7 @@ return ENOSPC; daddr_t start_lbn, end_lbn, soff, eoff, newblk, blkno; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; int i, len, start_lvl, end_lvl, pref, ssize; + struct timeval tv; vp = ap->a_vp; ip = VTOI(vp); @@ -346,13 +347,11 @@ return ENOSPC; else bwrite(sbp); } else { -#if !defined(__FreeBSD__) - struct timeval time; - get_time(&time); -#endif ip->i_flag |= IN_CHANGE | IN_UPDATE; - if (!doasyncfree) - VOP_UPDATE(vp, &time, &time, MNT_WAIT); + if (!doasyncfree) { + gettime(&tv); + VOP_UPDATE(vp, &tv, &tv, MNT_WAIT); + } } if (ssize < len) if (doasyncfree) @@ -441,7 +440,7 @@ ext2_valloc(ap) * XXX check if this makes sense in ext2 */ #if !defined(__FreeBSD__) - get_time(&time); + gettime(&time); #endif if (++nextgennumber < (u_long)time.tv_sec) nextgennumber = time.tv_sec; |