Print this page
OS-5591 Double flock(3C) causes undue block
OS-5585 fcntl(F_OFD_GETLK) should return EINVAL on bad parameters
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: Robert Mustacchi <rm@joyent.com>
OS-4098 move open, close and fcntl into the kernel
        
*** 52,62 ****
  #include <sys/rctl.h>
  #include <sys/nbmlock.h>
  
  #include <sys/cmn_err.h>
  
! static int flock_check(vnode_t *, flock64_t *, offset_t, offset_t);
  static int flock_get_start(vnode_t *, flock64_t *, offset_t, u_offset_t *);
  static void fd_too_big(proc_t *);
  
  /*
   * File control.
--- 52,63 ----
  #include <sys/rctl.h>
  #include <sys/nbmlock.h>
  
  #include <sys/cmn_err.h>
  
! /* This is global so that it can be used by brand emulation. */
! int flock_check(vnode_t *, flock64_t *, offset_t, offset_t);
  static int flock_get_start(vnode_t *, flock64_t *, offset_t, u_offset_t *);
  static void fd_too_big(proc_t *);
  
  /*
   * File control.
*** 363,373 ****
                                  error = EINVAL;
                                  break;
                          }
                  }
  
!                 if (cmd == F_OFD_SETLK || cmd == F_OFD_SETLKW) {
                          /*
                           * TBD OFD-style locking is currently limited to
                           * covering the entire file.
                           */
                          if (bf.l_whence != 0 || bf.l_start != 0 ||
--- 364,375 ----
                                  error = EINVAL;
                                  break;
                          }
                  }
  
!                 if (cmd == F_OFD_GETLK || cmd == F_OFD_SETLK ||
!                     cmd == F_OFD_SETLKW) {
                          /*
                           * TBD OFD-style locking is currently limited to
                           * covering the entire file.
                           */
                          if (bf.l_whence != 0 || bf.l_start != 0 ||