Do schedule delayed writes for async mounts.

While there, make some style adjustments, like missed () around
return values.

Submitted by:	bde
Reviewed by:	mckusick
Tested by:	pho
MFC after:	2 weeks
This commit is contained in:
Konstantin Belousov 2012-03-11 20:26:19 +00:00
parent 2fd2c0b1e3
commit dd522d76dc

View File

@ -244,7 +244,7 @@ ffs_truncate(vp, length, flags, cred, td)
ip->i_din2->di_extb[i] = 0;
}
ip->i_flag |= IN_CHANGE;
if ((error = ffs_update(vp, 1)))
if ((error = ffs_update(vp, !DOINGASYNC(vp))))
return (error);
for (i = 0; i < NXADDR; i++) {
if (oldblks[i] == 0)
@ -270,13 +270,13 @@ ffs_truncate(vp, length, flags, cred, td)
ip->i_flag |= IN_CHANGE | IN_UPDATE;
if (needextclean)
goto extclean;
return ffs_update(vp, 1);
return (ffs_update(vp, !DOINGASYNC(vp)));
}
if (ip->i_size == length) {
ip->i_flag |= IN_CHANGE | IN_UPDATE;
if (needextclean)
goto extclean;
return ffs_update(vp, 0);
return (ffs_update(vp, 0));
}
if (fs->fs_ronly)
panic("ffs_truncate: read-only filesystem");
@ -303,10 +303,12 @@ ffs_truncate(vp, length, flags, cred, td)
bp->b_flags |= B_CLUSTEROK;
if (flags & IO_SYNC)
bwrite(bp);
else if (DOINGASYNC(vp))
bdwrite(bp);
else
bawrite(bp);
ip->i_flag |= IN_CHANGE | IN_UPDATE;
return ffs_update(vp, 1);
return (ffs_update(vp, !DOINGASYNC(vp)));
}
if (DOINGSOFTDEP(vp)) {
if (softdeptrunc == 0 && journaltrunc == 0) {
@ -378,6 +380,8 @@ ffs_truncate(vp, length, flags, cred, td)
bp->b_flags |= B_CLUSTEROK;
if (flags & IO_SYNC)
bwrite(bp);
else if (DOINGASYNC(vp))
bdwrite(bp);
else
bawrite(bp);
}
@ -411,7 +415,7 @@ ffs_truncate(vp, length, flags, cred, td)
DIP_SET(ip, i_db[i], 0);
}
ip->i_flag |= IN_CHANGE | IN_UPDATE;
allerror = ffs_update(vp, 1);
allerror = ffs_update(vp, !DOINGASYNC(vp));
/*
* Having written the new inode to disk, save its new configuration
@ -543,7 +547,7 @@ extclean:
softdep_journal_freeblocks(ip, cred, length, IO_EXT);
else
softdep_setup_freeblocks(ip, length, IO_EXT);
return ffs_update(vp, MNT_WAIT);
return (ffs_update(vp, !DOINGASYNC(vp)));
}
/*
@ -624,7 +628,7 @@ ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp)
else
bap2[i] = 0;
if (DOINGASYNC(vp)) {
bawrite(bp);
bdwrite(bp);
} else {
error = bwrite(bp);
if (error)