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).
This commit is contained in:
parent
3a262f367e
commit
41bc53fc92
@ -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 */
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user