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-3294 add support for inotify
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
        
*** 24,34 ****
   *      Copyright (c) 1983,1984,1985,1986,1987,1988,1989 AT&T.
   *      All rights reserved.
   */
  
  /*
!  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
   * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
   */
  
  #include <sys/param.h>
  #include <sys/types.h>
--- 24,34 ----
   *      Copyright (c) 1983,1984,1985,1986,1987,1988,1989 AT&T.
   *      All rights reserved.
   */
  
  /*
!  * Copyright (c) 2014, Joyent, Inc. All rights reserved.
   * Copyright 2015 Nexenta Systems, Inc.  All rights reserved.
   */
  
  #include <sys/param.h>
  #include <sys/types.h>
*** 1172,1183 ****
          if (error)
                  return (error);
  
          error = nfssetattr(vp, vap, flags, cr);
  
!         if (error == 0 && (mask & AT_SIZE) && vap->va_size == 0)
                  vnevent_truncate(vp, ct);
  
          return (error);
  }
  
  static int
--- 1172,1188 ----
          if (error)
                  return (error);
  
          error = nfssetattr(vp, vap, flags, cr);
  
!         if (error == 0 && (mask & AT_SIZE)) {
!                 if (vap->va_size == 0) {
                          vnevent_truncate(vp, ct);
+                 } else {
+                         vnevent_resize(vp, ct);
+                 }
+         }
  
          return (error);
  }
  
  static int
*** 2686,2700 ****
  
          if (error == 0) {
                  if (nvp)
                          vnevent_rename_dest(nvp, ndvp, nnm, ct);
  
-                 if (odvp != ndvp)
-                         vnevent_rename_dest_dir(ndvp, ct);
- 
                  ASSERT(ovp != NULL);
                  vnevent_rename_src(ovp, odvp, onm, ct);
          }
  
          if (nvp) {
                  VN_RELE(nvp);
          }
--- 2691,2703 ----
  
          if (error == 0) {
                  if (nvp)
                          vnevent_rename_dest(nvp, ndvp, nnm, ct);
  
                  ASSERT(ovp != NULL);
                  vnevent_rename_src(ovp, odvp, onm, ct);
+                 vnevent_rename_dest_dir(ndvp, ovp, nnm, ct);
          }
  
          if (nvp) {
                  VN_RELE(nvp);
          }
*** 4618,4629 ****
                                  return (error);
                          va.va_mask = AT_SIZE;
                          va.va_size = bfp->l_start;
                          error = nfssetattr(vp, &va, 0, cr);
  
!                         if (error == 0 && bfp->l_start == 0)
                                  vnevent_truncate(vp, ct);
                  } else
                          error = EINVAL;
          }
  
          return (error);
--- 4621,4637 ----
                                  return (error);
                          va.va_mask = AT_SIZE;
                          va.va_size = bfp->l_start;
                          error = nfssetattr(vp, &va, 0, cr);
  
!                         if (error == 0) {
!                                 if (bfp->l_start == 0) {
                                          vnevent_truncate(vp, ct);
+                                 } else {
+                                         vnevent_resize(vp, ct);
+                                 }
+                         }
                  } else
                          error = EINVAL;
          }
  
          return (error);