diff options
author | bde <bde@FreeBSD.org> | 2004-02-13 17:49:03 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 2004-02-13 17:49:03 +0000 |
commit | 082b328bb003bf0d74fb302c96685f4f059175f1 (patch) | |
tree | 00bb1b4db42782231795c8b5de101eddb2c958c2 /sys | |
parent | bd3ac210d05e37f59972ed4c62e3ca5781d42efb (diff) | |
download | FreeBSD-src-082b328bb003bf0d74fb302c96685f4f059175f1.zip FreeBSD-src-082b328bb003bf0d74fb302c96685f4f059175f1.tar.gz |
Fixed longstanding brokenness of inode updates. The waitfor flag was
dishonored in rev.1.1 by commenting out the code that honored it. This
gave the worst disadvantages of async mounts in an uncontrollable way.
Honoring the flag costs about 50% in real time in worst cases on a new
but not very fast ATA drive with write caching (probably more on drives
without write caching). The old misbehavior can be recovered using
async mounts after implementing them in mount_ext2fs(8) (just put the
MNT_ASYNC flag in mount_ext2fs's table of supported options like it
is in mount's table).
Diffstat (limited to 'sys')
-rw-r--r-- | sys/gnu/ext2fs/ext2_inode.c | 4 | ||||
-rw-r--r-- | sys/gnu/fs/ext2fs/ext2_inode.c | 4 |
2 files changed, 0 insertions, 8 deletions
diff --git a/sys/gnu/ext2fs/ext2_inode.c b/sys/gnu/ext2fs/ext2_inode.c index 38c9672..ec7215e 100644 --- a/sys/gnu/ext2fs/ext2_inode.c +++ b/sys/gnu/ext2fs/ext2_inode.c @@ -96,16 +96,12 @@ ext2_update(vp, waitfor) } ext2_i2ei(ip, (struct ext2_inode *)((char *)bp->b_data + EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number))); -/* if (waitfor && (vp->v_mount->mnt_flag & MNT_ASYNC) == 0) return (bwrite(bp)); else { -*/ bdwrite(bp); return (0); -/* } -*/ } #define SINGLE 0 /* index of single indirect block */ diff --git a/sys/gnu/fs/ext2fs/ext2_inode.c b/sys/gnu/fs/ext2fs/ext2_inode.c index 38c9672..ec7215e 100644 --- a/sys/gnu/fs/ext2fs/ext2_inode.c +++ b/sys/gnu/fs/ext2fs/ext2_inode.c @@ -96,16 +96,12 @@ ext2_update(vp, waitfor) } ext2_i2ei(ip, (struct ext2_inode *)((char *)bp->b_data + EXT2_INODE_SIZE * ino_to_fsbo(fs, ip->i_number))); -/* if (waitfor && (vp->v_mount->mnt_flag & MNT_ASYNC) == 0) return (bwrite(bp)); else { -*/ bdwrite(bp); return (0); -/* } -*/ } #define SINGLE 0 /* index of single indirect block */ |