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

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

Diff for /src/sys/fs/udf/udf_vnops.c between version 1.7 and 1.7.2.2

version 1.7, 2006/10/12 01:32:14 version 1.7.2.2, 2007/02/17 23:27:46
Line 473  udf_lookup(void *v)
Line 473  udf_lookup(void *v)
         struct udf_mount *ump;          struct udf_mount *ump;
         struct long_ad    icb_loc;          struct long_ad    icb_loc;
         const char *name;          const char *name;
         int namelen, nameiop, islastcn, lock_parent, mounted_ro;          int namelen, nameiop, islastcn, mounted_ro;
         int vnodetp;          int vnodetp;
         int error, found;          int error, found;
   
Line 486  udf_lookup(void *v)
Line 486  udf_lookup(void *v)
         /* simplify/clarification flags */          /* simplify/clarification flags */
         nameiop     = cnp->cn_nameiop;          nameiop     = cnp->cn_nameiop;
         islastcn    = cnp->cn_flags & ISLASTCN;          islastcn    = cnp->cn_flags & ISLASTCN;
         lock_parent = cnp->cn_flags & LOCKPARENT;  
         mounted_ro  = dvp->v_mount->mnt_flag & MNT_RDONLY;          mounted_ro  = dvp->v_mount->mnt_flag & MNT_RDONLY;
   
         /* check exec/dirread permissions first */          /* check exec/dirread permissions first */
Line 531  udf_lookup(void *v)
Line 530  udf_lookup(void *v)
   
                 /* first unlock parent */                  /* first unlock parent */
                 VOP_UNLOCK(dvp, 0);                  VOP_UNLOCK(dvp, 0);
                 cnp->cn_flags |= PDIRUNLOCK;  
   
                 /* get our node */                  /* get our node */
                 name    = "..";                  name    = "..";
Line 551  udf_lookup(void *v)
Line 549  udf_lookup(void *v)
                         }                          }
                 }                  }
   
                 /* see if we're requested to lock the parent */                  /* try to relock parent */
                 if (lock_parent && islastcn) {                  vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY);
                         if (vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY) == 0)  
                                 cnp->cn_flags &= ~PDIRUNLOCK;  
                 }  
                 /* done */  
         } else {          } else {
                 DPRINTF(LOOKUP, ("\tlookup file\n"));                  DPRINTF(LOOKUP, ("\tlookup file\n"));
                 /* all other files */                  /* all other files */
Line 603  udf_lookup(void *v)
Line 597  udf_lookup(void *v)
   
                         }                          }
                         if (!error) {                          if (!error) {
                                 /*  
                                  * If LOCKPARENT or ISLASTCN is not set, dvp  
                                  * is returned unlocked on a successful  
                                  * lookup.  
                                  */  
                                 *vpp = res_node->vnode;                                  *vpp = res_node->vnode;
                                 if (!lock_parent || !islastcn)  
                                         VOP_UNLOCK(dvp, 0);  
                         }                          }
                         /* done */  
                 }                  }
                 /* done */  
         }          }
   
         /*          /*
Line 713  udf_getattr(void *v)
Line 698  udf_getattr(void *v)
         vap->va_gen       = 1;          /* no multiple generations yes (!?) */          vap->va_gen       = 1;          /* no multiple generations yes (!?) */
         vap->va_flags     = 0;          /* no flags */          vap->va_flags     = 0;          /* no flags */
         vap->va_rdev      = udf_node->rdev;          vap->va_rdev      = udf_node->rdev;
         vap->va_bytes     = udf_node->ump->discinfo.sector_size * blkssize;          vap->va_bytes     = blkssize * udf_node->ump->discinfo.sector_size;
         vap->va_filerev   = 1;          /* TODO file revision numbers? */          vap->va_filerev   = 1;          /* TODO file revision numbers? */
         vap->va_vaflags   = 0;          /* TODO which va_vaflags? */          vap->va_vaflags   = 0;          /* TODO which va_vaflags? */
   

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.7.2.2

CVSweb <webmaster@jp.NetBSD.org>