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>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/udfs/udf_vnops.c
          +++ new/usr/src/uts/common/fs/udfs/udf_vnops.c
↓ open down ↓ 561 lines elided ↑ open up ↑
 562  562                          goto update_inode;
 563  563                  }
 564  564                  if (vap->va_size > MAXOFFSET_T) {
 565  565                          error = EFBIG;
 566  566                          goto update_inode;
 567  567                  }
 568  568                  if (error = ud_itrunc(ip, vap->va_size, 0, cr)) {
 569  569                          goto update_inode;
 570  570                  }
 571  571  
 572      -                if (vap->va_size == 0)
      572 +                if (vap->va_size == 0) {
 573  573                          vnevent_truncate(vp, ct);
      574 +                } else {
      575 +                        vnevent_resize(vp, ct);
      576 +                }
 574  577          }
 575  578          /*
 576  579           * Change file access or modified times.
 577  580           */
 578  581          if (mask & (AT_ATIME|AT_MTIME)) {
 579  582                  mutex_enter(&ip->i_tlock);
 580  583                  if (mask & AT_ATIME) {
 581  584                          ip->i_atime.tv_sec = vap->va_atime.tv_sec;
 582  585                          ip->i_atime.tv_nsec = vap->va_atime.tv_nsec;
 583  586                          ip->i_flag &= ~IACC;
↓ open down ↓ 1058 lines elided ↑ open up ↑
1642 1645  {
1643 1646          int32_t error = 0;
1644 1647  
1645 1648          ud_printf("udf_space\n");
1646 1649  
1647 1650          if (cmd != F_FREESP) {
1648 1651                  error =  EINVAL;
1649 1652          } else if ((error = convoff(vp, bfp, 0, offset)) == 0) {
1650 1653                  error = ud_freesp(vp, bfp, flag, cr);
1651 1654  
1652      -                if (error == 0 && bfp->l_start == 0)
1653      -                        vnevent_truncate(vp, ct);
     1655 +                if (error == 0) {
     1656 +                        if (bfp->l_start == 0) {
     1657 +                                vnevent_truncate(vp, ct);
     1658 +                        } else {
     1659 +                                vnevent_resize(vp, ct);
     1660 +                        }
     1661 +                }
1654 1662          }
1655 1663  
1656 1664          return (error);
1657 1665  }
1658 1666  
1659 1667  /* ARGSUSED */
1660 1668  static int32_t
1661 1669  udf_getpage(
1662 1670          struct vnode *vp,
1663 1671          offset_t off,
↓ open down ↓ 1957 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX