Print this page
OS-5148 ftruncate at offset should emit proper events
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
*** 567,579 ****
}
if (error = ud_itrunc(ip, vap->va_size, 0, cr)) {
goto update_inode;
}
! if (vap->va_size == 0)
vnevent_truncate(vp, ct);
}
/*
* Change file access or modified times.
*/
if (mask & (AT_ATIME|AT_MTIME)) {
mutex_enter(&ip->i_tlock);
--- 567,582 ----
}
if (error = ud_itrunc(ip, vap->va_size, 0, cr)) {
goto update_inode;
}
! if (vap->va_size == 0) {
vnevent_truncate(vp, ct);
+ } else {
+ vnevent_resize(vp, ct);
}
+ }
/*
* Change file access or modified times.
*/
if (mask & (AT_ATIME|AT_MTIME)) {
mutex_enter(&ip->i_tlock);
*** 1647,1659 ****
if (cmd != F_FREESP) {
error = EINVAL;
} else if ((error = convoff(vp, bfp, 0, offset)) == 0) {
error = ud_freesp(vp, bfp, flag, cr);
! if (error == 0 && bfp->l_start == 0)
vnevent_truncate(vp, ct);
}
return (error);
}
/* ARGSUSED */
--- 1650,1667 ----
if (cmd != F_FREESP) {
error = EINVAL;
} else if ((error = convoff(vp, bfp, 0, offset)) == 0) {
error = ud_freesp(vp, bfp, flag, cr);
! if (error == 0) {
! if (bfp->l_start == 0) {
vnevent_truncate(vp, ct);
+ } else {
+ vnevent_resize(vp, ct);
}
+ }
+ }
return (error);
}
/* ARGSUSED */