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

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

Diff for /src/sys/fs/filecorefs/filecore_vnops.c between version 1.21 and 1.21.6.2

version 1.21, 2007/07/29 21:17:41 version 1.21.6.2, 2008/01/09 01:55:42
Line 104  filecore_access(v)
Line 104  filecore_access(v)
                 struct vnode *a_vp;                  struct vnode *a_vp;
                 int  a_mode;                  int  a_mode;
                 kauth_cred_t a_cred;                  kauth_cred_t a_cred;
                 struct lwp *a_l;  
         } */ *ap = v;          } */ *ap = v;
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct filecore_node *ip = VTOI(vp);          struct filecore_node *ip = VTOI(vp);
Line 138  filecore_getattr(v)
Line 137  filecore_getattr(v)
                 struct vnode *a_vp;                  struct vnode *a_vp;
                 struct vattr *a_vap;                  struct vattr *a_vap;
                 kauth_cred_t a_cred;                  kauth_cred_t a_cred;
                 struct lwp *a_l;  
         } */ *ap = v;          } */ *ap = v;
         struct vnode *vp = ap->a_vp;          struct vnode *vp = ap->a_vp;
         struct filecore_node *ip = VTOI(vp);          struct filecore_node *ip = VTOI(vp);
Line 251  filecore_read(v)
Line 249  filecore_read(v)
 #ifdef FILECORE_DEBUG_BR  #ifdef FILECORE_DEBUG_BR
                         printf("brelse(%p) vn1\n", bp);                          printf("brelse(%p) vn1\n", bp);
 #endif  #endif
                         brelse(bp);                          brelse(bp, 0);
                         return (error);                          return (error);
                 }                  }
   
Line 259  filecore_read(v)
Line 257  filecore_read(v)
 #ifdef FILECORE_DEBUG_BR  #ifdef FILECORE_DEBUG_BR
                 printf("brelse(%p) vn2\n", bp);                  printf("brelse(%p) vn2\n", bp);
 #endif  #endif
                 brelse(bp);                  brelse(bp, 0);
         } while (error == 0 && uio->uio_resid > 0 && n != 0);          } while (error == 0 && uio->uio_resid > 0 && n != 0);
   
 out:  out:
Line 286  filecore_readdir(v)
Line 284  filecore_readdir(v)
         struct filecore_node *dp;          struct filecore_node *dp;
         struct filecore_mnt *fcmp;          struct filecore_mnt *fcmp;
         struct buf *bp = NULL;          struct buf *bp = NULL;
         struct dirent de;          struct dirent *de;
         struct filecore_direntry *dep = NULL;          struct filecore_direntry *dep = NULL;
         int error = 0;          int error = 0;
         off_t *cookies = NULL;          off_t *cookies = NULL;
Line 309  filecore_readdir(v)
Line 307  filecore_readdir(v)
   
         error = filecore_dbread(dp, &bp);          error = filecore_dbread(dp, &bp);
         if (error) {          if (error) {
                 brelse(bp);                  brelse(bp, 0);
                 return error;                  return error;
         }          }
   
Line 321  filecore_readdir(v)
Line 319  filecore_readdir(v)
                 cookies = malloc(ncookies * sizeof(off_t), M_TEMP, M_WAITOK);                  cookies = malloc(ncookies * sizeof(off_t), M_TEMP, M_WAITOK);
         }          }
   
           de = malloc(sizeof(struct dirent), M_FILECORETMP, M_WAITOK | M_ZERO);
   
         for (; ; i++) {          for (; ; i++) {
                 switch (i) {                  switch (i) {
                 case 0:                  case 0:
                         /* Fake the '.' entry */                          /* Fake the '.' entry */
                         de.d_fileno = dp->i_number;                          de->d_fileno = dp->i_number;
                         de.d_type = DT_DIR;                          de->d_type = DT_DIR;
                         de.d_namlen = 1;                          de->d_namlen = 1;
                         strlcpy(de.d_name, ".", sizeof(de.d_name));                          strlcpy(de->d_name, ".", sizeof(de->d_name));
                         break;                          break;
                 case 1:                  case 1:
                         /* Fake the '..' entry */                          /* Fake the '..' entry */
                         de.d_fileno = filecore_getparent(dp);                          de->d_fileno = filecore_getparent(dp);
                         de.d_type = DT_DIR;                          de->d_type = DT_DIR;
                         de.d_namlen = 2;                          de->d_namlen = 2;
                         strlcpy(de.d_name, "..", sizeof(de.d_name));                          strlcpy(de->d_name, "..", sizeof(de->d_name));
                         break;                          break;
                 default:                  default:
                         de.d_fileno = dp->i_dirent.addr +                          de->d_fileno = dp->i_dirent.addr +
                                         ((i - 2) << FILECORE_INO_INDEX);                                          ((i - 2) << FILECORE_INO_INDEX);
                         dep = fcdirentry(bp->b_data, i - 2);                          dep = fcdirentry(bp->b_data, i - 2);
                         if (dep->attr & FILECORE_ATTR_DIR)                          if (dep->attr & FILECORE_ATTR_DIR)
                                 de.d_type = DT_DIR;                                  de->d_type = DT_DIR;
                         else                          else
                                 de.d_type = DT_REG;                                  de->d_type = DT_REG;
                         if (filecore_fn2unix(dep->name, de.d_name,                          if (filecore_fn2unix(dep->name, de->d_name,
 /*###346 [cc] warning: passing arg 3 of `filecore_fn2unix' from incompatible pointer type%%%*/  /*###346 [cc] warning: passing arg 3 of `filecore_fn2unix' from incompatible pointer type%%%*/
                             &de.d_namlen)) {                              &de->d_namlen)) {
                                 *ap->a_eofflag = 1;                                  *ap->a_eofflag = 1;
                                 goto out;                                  goto out;
                         }                          }
                         break;                          break;
                 }                  }
                 de.d_reclen = _DIRENT_SIZE(&de);                  de->d_reclen = _DIRENT_SIZE(de);
                 if (uio->uio_resid < de.d_reclen)                  if (uio->uio_resid < de->d_reclen)
                         goto out;                          goto out;
                 error = uiomove(&de, de.d_reclen, uio);                  error = uiomove(de, de->d_reclen, uio);
                 if (error)                  if (error)
                         goto out;                          goto out;
                 uiooff += FILECORE_DIRENT_SIZE;                  uiooff += FILECORE_DIRENT_SIZE;
Line 381  out:
Line 381  out:
 #ifdef FILECORE_DEBUG_BR  #ifdef FILECORE_DEBUG_BR
         printf("brelse(%p) vn3\n", bp);          printf("brelse(%p) vn3\n", bp);
 #endif  #endif
         brelse (bp);          brelse (bp, 0);
   
           free(de, M_FILECORETMP);
   
         return (error);          return (error);
 }  }

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.21.6.2

CVSweb <webmaster@jp.NetBSD.org>