Diff for /src/sys/vfs/nullfs/null_vnops.c between versions 1.9 and 1.10

version 1.9, 2004/03/01 06:33:22 version 1.10, 2004/04/21 16:55:09
Line 230  static int null_unlock(struct vop_unlock Line 230  static int null_unlock(struct vop_unlock
  *   to determine what implementation of the op should be invoked   *   to determine what implementation of the op should be invoked
  * - all mapped vnodes are of our vnode-type (NEEDSWORK:   * - all mapped vnodes are of our vnode-type (NEEDSWORK:
  *   problems on rmdir'ing mount points and renaming?)   *   problems on rmdir'ing mount points and renaming?)
    *
    * null_bypass(struct vnodeop_desc *a_desc, ...)
  */   */
 int  int
null_bypass(ap)null_bypass(struct vop_generic_args *ap)
        struct vop_generic_args /* { 
                struct vnodeop_desc *a_desc; 
                <other random data follows, presumably> 
        } */ *ap; 
 {  {
         register struct vnode **this_vp_p;          register struct vnode **this_vp_p;
         int error;          int error;
Line 352  null_bypass(ap) Line 350  null_bypass(ap)
  * We have to carry on the locking protocol on the null layer vnodes   * We have to carry on the locking protocol on the null layer vnodes
  * as we progress through the tree. We also have to enforce read-only   * as we progress through the tree. We also have to enforce read-only
  * if this layer is mounted read-only.   * if this layer is mounted read-only.
    *
    * null_lookup(struct vnode *a_dvp, struct vnode **a_vpp,
    *              struct componentname *a_cnp)
  */   */
 static int  static int
null_lookup(ap)null_lookup(struct vop_lookup_args *ap)
        struct vop_lookup_args /* { 
                struct vnode * a_dvp; 
                struct vnode ** a_vpp; 
                struct componentname * a_cnp; 
        } */ *ap; 
 {  {
         struct componentname *cnp = ap->a_cnp;          struct componentname *cnp = ap->a_cnp;
         struct vnode *dvp = ap->a_dvp;          struct vnode *dvp = ap->a_dvp;
Line 405  null_lookup(ap) Line 401  null_lookup(ap)
   
 /*  /*
  * Setattr call. Disallow write attempts if the layer is mounted read-only.   * Setattr call. Disallow write attempts if the layer is mounted read-only.
    *
    * null_setattr(struct vnodeop_desc *a_desc, struct vnode *a_vp,
    *              struct vattr *a_vap, struct ucred *a_cred,
    *              struct thread *a_td)
  */   */
 int  int
null_setattr(ap)null_setattr(struct vop_setattr_args *ap)
        struct vop_setattr_args /* { 
                struct vnodeop_desc *a_desc; 
                struct vnode *a_vp; 
                struct vattr *a_vap; 
                struct ucred *a_cred; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct vattr *vap = ap->a_vap;          struct vattr *vap = ap->a_vap;
Line 452  null_setattr(ap) Line 445  null_setattr(ap)
   
 /*  /*
  *  We handle getattr only to change the fsid.   *  We handle getattr only to change the fsid.
    *
    * null_getattr(struct vnode *a_vp, struct vattr *a_vap, struct ucred *a_cred,
    *              struct thread *a_td)
  */   */
 static int  static int
null_getattr(ap)null_getattr(struct vop_getattr_args *ap)
        struct vop_getattr_args /* { 
                struct vnode *a_vp; 
                struct vattr *a_vap; 
                struct ucred *a_cred; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         int error;          int error;
   
Line 473  null_getattr(ap) Line 463  null_getattr(ap)
   
 /*  /*
  * Handle to disallow write access if mounted read-only.   * Handle to disallow write access if mounted read-only.
    *
    * null_access(struct vnode *a_vp, int a_mode, struct ucred *a_cred,
    *              struct thread *a_td)
  */   */
 static int  static int
null_access(ap)null_access(struct vop_access_args *ap)
        struct vop_access_args /* { 
                struct vnode *a_vp; 
                int  a_mode; 
                struct ucred *a_cred; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         mode_t mode = ap->a_mode;          mode_t mode = ap->a_mode;
Line 508  null_access(ap) Line 495  null_access(ap)
   
 /*  /*
  * We must handle open to be able to catch MNT_NODEV and friends.   * We must handle open to be able to catch MNT_NODEV and friends.
    *
    * null_open(struct vnode *a_vp, int a_mode, struct ucred *a_cred,
    *           struct thread *a_td)
  */   */
 static int  static int
null_open(ap)null_open(struct vop_open_args *ap)
        struct vop_open_args /* { 
                struct vnode *a_vp; 
                int  a_mode; 
                struct ucred *a_cred; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct vnode *lvp = NULLVPTOLOWERVP(ap->a_vp);          struct vnode *lvp = NULLVPTOLOWERVP(ap->a_vp);
Line 532  null_open(ap) Line 516  null_open(ap)
  * We handle this to eliminate null FS to lower FS   * We handle this to eliminate null FS to lower FS
  * file moving. Don't know why we don't allow this,   * file moving. Don't know why we don't allow this,
  * possibly we should.   * possibly we should.
    *
    * null_rename(struct vnode *a_fdvp, struct vnode *a_fvp,
    *              struct componentname *a_fcnp, struct vnode *a_tdvp,
    *              struct vnode *a_tvp, struct componentname *a_tcnp)
  */   */
 static int  static int
null_rename(ap)null_rename(struct vop_rename_args *ap)
        struct vop_rename_args /* { 
                struct vnode *a_fdvp; 
                struct vnode *a_fvp; 
                struct componentname *a_fcnp; 
                struct vnode *a_tdvp; 
                struct vnode *a_tvp; 
                struct componentname *a_tcnp; 
        } */ *ap; 
 {  {
         struct vnode *tdvp = ap->a_tdvp;          struct vnode *tdvp = ap->a_tdvp;
         struct vnode *fvp = ap->a_fvp;          struct vnode *fvp = ap->a_fvp;
Line 570  null_rename(ap) Line 550  null_rename(ap)
  * We need to process our own vnode lock and then clear the   * We need to process our own vnode lock and then clear the
  * interlock flag as it applies only to our vnode, not the   * interlock flag as it applies only to our vnode, not the
  * vnodes below us on the stack.   * vnodes below us on the stack.
    *
    * null_lock(struct vnode *a_vp, lwkt_tokref_t a_vlock, int a_flags,
    *           struct thread *a_td)
  */   */
 static int  static int
null_lock(ap)null_lock(struct vop_lock_args *ap)
        struct vop_lock_args /* { 
                struct vnode *a_vp; 
                lwkt_tokref_t a_vlock; 
                int a_flags; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         int flags = ap->a_flags;          int flags = ap->a_flags;
Line 647  null_lock(ap) Line 624  null_lock(ap)
  * We need to process our own vnode unlock and then clear the   * We need to process our own vnode unlock and then clear the
  * interlock flag as it applies only to our vnode, not the   * interlock flag as it applies only to our vnode, not the
  * vnodes below us on the stack.   * vnodes below us on the stack.
    *
    * null_unlock(struct vnode *a_vp, lwkt_tokref_t a_vlock, int a_flags,
    *              struct thread *a_td)
  */   */
 static int  static int
null_unlock(ap)null_unlock(struct vop_unlock_args *ap)
        struct vop_unlock_args /* { 
                struct vnode *a_vp; 
                lwkt_tokref_t a_vlock; 
                int a_flags; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         int flags = ap->a_flags;          int flags = ap->a_flags;
Line 685  null_unlock(ap) Line 659  null_unlock(ap)
         return (lockmgr(&np->null_lock, flags | LK_RELEASE, ap->a_vlock, ap->a_td));          return (lockmgr(&np->null_lock, flags | LK_RELEASE, ap->a_vlock, ap->a_td));
 }  }
   
   /*
    * null_islocked(struct vnode *a_vp, struct thread *a_td)
    */
 static int  static int
null_islocked(ap)null_islocked(struct vop_islocked_args *ap)
        struct vop_islocked_args /* { 
                struct vnode *a_vp; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
   
Line 704  null_islocked(ap) Line 677  null_islocked(ap)
  * There is no way to tell that someone issued remove/rmdir operation   * There is no way to tell that someone issued remove/rmdir operation
  * on the underlying filesystem. For now we just have to release lowevrp   * on the underlying filesystem. For now we just have to release lowevrp
  * as soon as possible.   * as soon as possible.
    *
    * null_inactive(struct vnode *a_vp, struct thread *a_td)
  */   */
 static int  static int
null_inactive(ap)null_inactive(struct vop_inactive_args *ap)
        struct vop_inactive_args /* { 
                struct vnode *a_vp; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct null_node *xp = VTONULL(vp);          struct null_node *xp = VTONULL(vp);
Line 740  null_inactive(ap) Line 711  null_inactive(ap)
 /*  /*
  * We can free memory in null_inactive, but we do this   * We can free memory in null_inactive, but we do this
  * here. (Possible to guard vp->v_data to point somewhere)   * here. (Possible to guard vp->v_data to point somewhere)
    *
    * null_reclaim(struct vnode *a_vp, struct thread *a_td)
  */   */
 static int  static int
null_reclaim(ap)null_reclaim(struct vop_reclaim_args *ap)
        struct vop_reclaim_args /* { 
                struct vnode *a_vp; 
                struct thread *a_td; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         void *vdata = vp->v_data;          void *vdata = vp->v_data;
Line 757  null_reclaim(ap) Line 726  null_reclaim(ap)
         return (0);          return (0);
 }  }
   
   /*
    * null_print(struct vnode *a_vp)
    */
 static int  static int
null_print(ap)null_print(struct vop_print_args *ap)
        struct vop_print_args /* { 
                struct vnode *a_vp; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
   
Line 779  null_print(ap) Line 748  null_print(ap)
   
 /*  /*
  * Let an underlying filesystem do the work   * Let an underlying filesystem do the work
    *
    * null_createvobject(struct vnode *vp, struct ucred *cred, struct proc *p)
  */   */
 static int  static int
null_createvobject(ap)null_createvobject(struct vop_createvobject_args *ap)
        struct vop_createvobject_args /* { 
                struct vnode *vp; 
                struct ucred *cred; 
                struct proc *p; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct vnode *lowervp = VTONULL(vp) ? NULLVPTOLOWERVP(vp) : NULL;          struct vnode *lowervp = VTONULL(vp) ? NULLVPTOLOWERVP(vp) : NULL;
Line 803  null_createvobject(ap) Line 769  null_createvobject(ap)
   
 /*  /*
  * We have nothing to destroy and this operation shouldn't be bypassed.   * We have nothing to destroy and this operation shouldn't be bypassed.
    *
    * null_destroyvobject(struct vnode *vp)
  */   */
 static int  static int
null_destroyvobject(ap)null_destroyvobject(struct vop_destroyvobject_args *ap)
        struct vop_destroyvobject_args /* { 
                struct vnode *vp; 
        } */ *ap; 
 {  {
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
   
Line 816  null_destroyvobject(ap) Line 781  null_destroyvobject(ap)
         return (0);          return (0);
 }  }
   
   /*
    * null_getvobject(struct vnode *vp, struct vm_object **objpp)
    */
 static int  static int
null_getvobject(ap)null_getvobject(struct vop_getvobject_args *ap)
        struct vop_getvobject_args /* { 
                struct vnode *vp; 
                struct vm_object **objpp; 
        } */ *ap; 
 {  {
         struct vnode *lvp = NULLVPTOLOWERVP(ap->a_vp);          struct vnode *lvp = NULLVPTOLOWERVP(ap->a_vp);
   

Removed from v.1.9  
changed lines
  Added in v.1.10