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>
OS-5291 lxbrand inotify02 LTP regression
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
OS-3294 add support for inotify
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>

*** 23,33 **** * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* ! * Copyright (c) 2015, Joyent, Inc. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright 2016 RackTop Systems. */ #include <sys/types.h> --- 23,33 ---- * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* ! * Copyright 2016, Joyent, Inc. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. * Copyright 2016 RackTop Systems. */ #include <sys/types.h>
*** 785,796 **** rw_enter(&tp->tn_contents, RW_WRITER); error = tmpnode_trunc(tm, tp, (ulong_t)vap->va_size); rw_exit(&tp->tn_contents); rw_exit(&tp->tn_rwlock); ! if (error == 0 && vap->va_size == 0) vnevent_truncate(vp, ct); goto out1; } out: mutex_exit(&tp->tn_tlock); --- 785,801 ---- rw_enter(&tp->tn_contents, RW_WRITER); error = tmpnode_trunc(tm, tp, (ulong_t)vap->va_size); rw_exit(&tp->tn_contents); rw_exit(&tp->tn_rwlock); ! if (error == 0) { ! if (vap->va_size == 0) { vnevent_truncate(vp, ct); + } else { + vnevent_resize(vp, ct); + } + } goto out1; } out: mutex_exit(&tp->tn_tlock);
*** 1302,1315 **** if (error == 0) { vnevent_rename_src(TNTOV(fromtp), odvp, onm, ct); /* * vnevent_rename_dest is called in tdirenter(). - * Notify the target dir if not same as source dir. */ ! if (ndvp != odvp) ! vnevent_rename_dest_dir(ndvp, ct); } done: tmpnode_rele(fromtp); mutex_exit(&tm->tm_renamelck); --- 1307,1318 ---- if (error == 0) { vnevent_rename_src(TNTOV(fromtp), odvp, onm, ct); /* * vnevent_rename_dest is called in tdirenter(). */ ! vnevent_rename_dest_dir(ndvp, TNTOV(fromtp), nnm, ct); } done: tmpnode_rele(fromtp); mutex_exit(&tm->tm_renamelck);
*** 2342,2354 **** if ((error = convoff(vp, bfp, 0, (offset_t)offset)) == 0) { if ((bfp->l_start > MAXOFF_T) || (bfp->l_len > MAXOFF_T)) return (EFBIG); error = tmp_freesp(vp, bfp, flag); ! if (error == 0 && bfp->l_start == 0) vnevent_truncate(vp, ct); } return (error); } /* ARGSUSED */ static int --- 2345,2362 ---- if ((error = convoff(vp, bfp, 0, (offset_t)offset)) == 0) { if ((bfp->l_start > MAXOFF_T) || (bfp->l_len > MAXOFF_T)) return (EFBIG); error = tmp_freesp(vp, bfp, flag); ! if (error == 0) { ! if (bfp->l_start == 0) { vnevent_truncate(vp, ct); + } else { + vnevent_resize(vp, ct); } + } + } return (error); } /* ARGSUSED */ static int