[BACK]Return to tmpfs_vnops.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / fs / tmpfs

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/fs/tmpfs/tmpfs_vnops.c between version 1.133 and 1.133.16.1

version 1.133, 2017/05/26 14:21:01 version 1.133.16.1, 2020/02/29 20:21:02
Line 1164  tmpfs_getpages(void *v)
Line 1164  tmpfs_getpages(void *v)
         struct uvm_object *uobj;          struct uvm_object *uobj;
   
         KASSERT(vp->v_type == VREG);          KASSERT(vp->v_type == VREG);
         KASSERT(mutex_owned(vp->v_interlock));          KASSERT(rw_lock_held(vp->v_uobj.vmobjlock));
   
         /*          /*
          * Currently, PGO_PASTEOF is not supported.           * Currently, PGO_PASTEOF is not supported.
          */           */
         if (vp->v_size <= offset + (centeridx << PAGE_SHIFT)) {          if (vp->v_size <= offset + (centeridx << PAGE_SHIFT)) {
                 if ((flags & PGO_LOCKED) == 0)                  if ((flags & PGO_LOCKED) == 0)
                         mutex_exit(vp->v_interlock);                          rw_exit(vp->v_uobj.vmobjlock);
                 return EINVAL;                  return EINVAL;
         }          }
   
Line 1182  tmpfs_getpages(void *v)
Line 1182  tmpfs_getpages(void *v)
         if ((flags & PGO_LOCKED) != 0)          if ((flags & PGO_LOCKED) != 0)
                 return EBUSY;                  return EBUSY;
   
         if (vdead_check(vp, VDEAD_NOWAIT) != 0)          mutex_enter(vp->v_interlock);
           error = vdead_check(vp, VDEAD_NOWAIT);
           mutex_exit(vp->v_interlock);
           if (error != 0)
                 return ENOENT;                  return ENOENT;
   
         node = VP_TO_TMPFS_NODE(vp);          node = VP_TO_TMPFS_NODE(vp);
Line 1211  tmpfs_getpages(void *v)
Line 1214  tmpfs_getpages(void *v)
         if (pgs) {          if (pgs) {
                 memset(pgs, 0, sizeof(struct vm_pages *) * npages);                  memset(pgs, 0, sizeof(struct vm_pages *) * npages);
         }          }
         KASSERT(vp->v_interlock == uobj->vmobjlock);          KASSERT(vp->v_uobj.vmobjlock == uobj->vmobjlock);
   
         error = (*uobj->pgops->pgo_get)(uobj, offset, pgs, &npages, centeridx,          error = (*uobj->pgops->pgo_get)(uobj, offset, pgs, &npages, centeridx,
             access_type, advice, flags | PGO_ALLPAGES);              access_type, advice, flags | PGO_ALLPAGES);
Line 1243  tmpfs_putpages(void *v)
Line 1246  tmpfs_putpages(void *v)
         struct uvm_object *uobj;          struct uvm_object *uobj;
         int error;          int error;
   
         KASSERT(mutex_owned(vp->v_interlock));          KASSERT(rw_write_held(vp->v_uobj.vmobjlock));
   
         if (vp->v_type != VREG) {          if (vp->v_type != VREG) {
                 mutex_exit(vp->v_interlock);                  rw_exit(vp->v_uobj.vmobjlock);
                 return 0;                  return 0;
         }          }
   
         node = VP_TO_TMPFS_NODE(vp);          node = VP_TO_TMPFS_NODE(vp);
         uobj = node->tn_spec.tn_reg.tn_aobj;          uobj = node->tn_spec.tn_reg.tn_aobj;
   
         KASSERT(vp->v_interlock == uobj->vmobjlock);          KASSERT(vp->v_uobj.vmobjlock == uobj->vmobjlock);
         error = (*uobj->pgops->pgo_put)(uobj, offlo, offhi, flags);          error = (*uobj->pgops->pgo_put)(uobj, offlo, offhi, flags);
   
         /* XXX mtime */          /* XXX mtime */

Legend:
Removed from v.1.133  
changed lines
  Added in v.1.133.16.1

CVSweb <webmaster@jp.NetBSD.org>