diff options
Diffstat (limited to 'usr/src/uts/common/fs/ufs')
-rw-r--r-- | usr/src/uts/common/fs/ufs/ufs_vnops.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/usr/src/uts/common/fs/ufs/ufs_vnops.c b/usr/src/uts/common/fs/ufs/ufs_vnops.c index 2be623f755..8aa961e340 100644 --- a/usr/src/uts/common/fs/ufs/ufs_vnops.c +++ b/usr/src/uts/common/fs/ufs/ufs_vnops.c @@ -2084,8 +2084,13 @@ again: goto update_inode; } - if (error == 0 && vap->va_size) - vnevent_truncate(vp, ct); + if (error == 0) { + if (vap->va_size) { + vnevent_truncate(vp, ct); + } else { + vnevent_resize(vp, ct); + } + } } if (ulp) { @@ -3610,12 +3615,7 @@ retry_firstlock: if (error == 0) { vnevent_rename_src(ITOV(sip), sdvp, snm, ct); - /* - * Notify the target directory of the rename event - * if source and target directories are not the same. - */ - if (sdvp != tdvp) - vnevent_rename_dest_dir(tdvp, ct); + vnevent_rename_dest_dir(tdvp, ITOV(sip), tnm, ct); } errout: @@ -4350,8 +4350,13 @@ ufs_space(struct vnode *vp, int cmd, struct flock64 *bfp, int flag, return (error); error = ufs_freesp(vp, bfp, flag, cr); - if (error == 0 && bfp->l_start == 0) - vnevent_truncate(vp, ct); + if (error == 0) { + if (bfp->l_start == 0) { + vnevent_truncate(vp, ct); + } else { + vnevent_resize(vp, ct); + } + } } else if (cmd == F_ALLOCSP) { error = ufs_lockfs_begin(ufsvfsp, &ulp, ULOCKFS_FALLOCATE_MASK); |