Diff for /src/sys/vfs/ntfs/ntfs_subr.c between versions 1.11 and 1.12

version 1.11, 2004/03/01 06:33:22 version 1.12, 2004/04/20 19:59:30
Line 83  static signed int ntfs_toupper_usecount; Line 83  static signed int ntfs_toupper_usecount;
  *    * 
  */   */
 int  int
ntfs_ntvattrrele(vap)ntfs_ntvattrrele(struct ntvattr *vap)
        struct ntvattr * vap; 
 {  {
         dprintf(("ntfs_ntvattrrele: ino: %d, type: 0x%x\n",          dprintf(("ntfs_ntvattrrele: ino: %d, type: 0x%x\n",
                  vap->va_ip->i_number, vap->va_type));                   vap->va_ip->i_number, vap->va_type));
Line 98  ntfs_ntvattrrele(vap) Line 97  ntfs_ntvattrrele(vap)
  * find the attribute in the ntnode   * find the attribute in the ntnode
  */   */
 static int  static int
ntfs_findvattr(ntmp, ip, lvapp, vapp, type, name, namelen, vcn)ntfs_findvattr(struct ntfsmount *ntmp, struct ntnode *ip,
        struct ntfsmount *ntmp;               struct ntvattr **lvapp, struct ntvattr **vapp, u_int32_t type,
        struct ntnode *ip;               const char *name, size_t namelen, cn_t vcn)
        struct ntvattr **lvapp, **vapp; 
        u_int32_t type; 
        const char *name; 
        size_t namelen; 
        cn_t vcn; 
 {  {
         int error;          int error;
         struct ntvattr *vap;          struct ntvattr *vap;
Line 150  ntfs_findvattr(ntmp, ip, lvapp, vapp, ty Line 144  ntfs_findvattr(ntmp, ip, lvapp, vapp, ty
  * ntnode should be locked   * ntnode should be locked
  */   */
 int  int
ntfs_ntvattrget(ntfs_ntvattrget(struct ntfsmount *ntmp, struct ntnode *ip, u_int32_t type,
                struct ntfsmount * ntmp,                const char *name, cn_t vcn, struct ntvattr **vapp)
                struct ntnode * ip, 
                u_int32_t type, 
                const char *name, 
                cn_t vcn, 
                struct ntvattr ** vapp) 
 {  {
         struct ntvattr *lvap = NULL;          struct ntvattr *lvap = NULL;
         struct attr_attrlist *aalp;          struct attr_attrlist *aalp;
Line 260  out: Line 249  out:
  * ntnode should be locked   * ntnode should be locked
  */   */
 int  int
ntfs_loadntnode(ntfs_loadntnode(struct ntfsmount *ntmp, struct ntnode *ip)
              struct ntfsmount * ntmp, 
              struct ntnode * ip) 
 {  {
         struct filerec  *mfrp;          struct filerec  *mfrp;
         daddr_t         bn;          daddr_t         bn;
Line 353  out: Line 340  out:
  * ntfs_ntput().   * ntfs_ntput().
  */   */
 int  int
ntfs_ntget(ip)ntfs_ntget(struct ntnode *ip)
        struct ntnode *ip; 
 {  {
         lwkt_tokref ilock;          lwkt_tokref ilock;
   
Line 376  ntfs_ntget(ip) Line 362  ntfs_ntget(ip)
  * ntnode returned locked   * ntnode returned locked
  */   */
 int  int
ntfs_ntlookup(ntfs_ntlookup(struct ntfsmount *ntmp, ino_t ino, struct ntnode **ipp)
           struct ntfsmount * ntmp, 
           ino_t ino, 
           struct ntnode ** ipp) 
 {  {
         struct ntnode  *ip;          struct ntnode  *ip;
   
Line 433  ntfs_ntlookup( Line 416  ntfs_ntlookup(
  * ntnode should be locked on entry, and unlocked on return.   * ntnode should be locked on entry, and unlocked on return.
  */   */
 void  void
ntfs_ntput(ip)ntfs_ntput(struct ntnode *ip)
        struct ntnode *ip; 
 {  {
         struct ntvattr *vap;          struct ntvattr *vap;
         lwkt_tokref ilock;          lwkt_tokref ilock;
Line 477  ntfs_ntput(ip) Line 459  ntfs_ntput(ip)
  * increment usecount of ntnode    * increment usecount of ntnode 
  */   */
 void  void
ntfs_ntref(ip)ntfs_ntref(struct ntnode *ip)
        struct ntnode *ip; 
 {  {
         ip->i_usecount++;          ip->i_usecount++;
   
Line 491  ntfs_ntref(ip) Line 472  ntfs_ntref(ip)
  * Decrement usecount of ntnode.   * Decrement usecount of ntnode.
  */   */
 void  void
ntfs_ntrele(ip)ntfs_ntrele(struct ntnode *ip)
        struct ntnode *ip; 
 {  {
         lwkt_tokref ilock;          lwkt_tokref ilock;
   
Line 513  ntfs_ntrele(ip) Line 493  ntfs_ntrele(ip)
  * Deallocate all memory allocated for ntvattr   * Deallocate all memory allocated for ntvattr
  */   */
 void  void
ntfs_freentvattr(vap)ntfs_freentvattr(struct ntvattr *vap)
        struct ntvattr * vap; 
 {  {
         if (vap->va_flag & NTFS_AF_INRUN) {          if (vap->va_flag & NTFS_AF_INRUN) {
                 if (vap->va_vruncn)                  if (vap->va_vruncn)
Line 533  ntfs_freentvattr(vap) Line 512  ntfs_freentvattr(vap)
  * runs are expanded also.   * runs are expanded also.
  */   */
 int  int
ntfs_attrtontvattr(ntfs_attrtontvattr(struct ntfsmount *ntmp, struct ntvattr **rvapp,
                   struct ntfsmount * ntmp,                   struct attr *rap)
                   struct ntvattr ** rvapp, 
                   struct attr * rap) 
 {  {
         int             error, i;          int             error, i;
         struct ntvattr *vap;          struct ntvattr *vap;
Line 603  ntfs_attrtontvattr( Line 580  ntfs_attrtontvattr(
  * Expand run into more utilizable and more memory eating format.   * Expand run into more utilizable and more memory eating format.
  */   */
 int  int
ntfs_runtovrun(ntfs_runtovrun(cn_t **rcnp, cn_t **rclp, u_long *rcntp, u_int8_t *run)
               cn_t ** rcnp, 
               cn_t ** rclp, 
               u_long * rcntp, 
               u_int8_t * run) 
 {  {
         u_int32_t       off;          u_int32_t       off;
         u_int32_t       sz, i;          u_int32_t       sz, i;
Line 665  ntfs_runtovrun( Line 638  ntfs_runtovrun(
  * Compare unicode and ascii string case insens.   * Compare unicode and ascii string case insens.
  */   */
 static int  static int
ntfs_uastricmp(ntmp, ustr, ustrlen, astr, astrlen)ntfs_uastricmp(struct ntfsmount *ntmp, const wchar *ustr, size_t ustrlen,
        struct ntfsmount *ntmp;               const char *astr, size_t astrlen)
        const wchar *ustr; 
        size_t ustrlen; 
        const char *astr; 
        size_t astrlen; 
 {  {
         size_t             i;          size_t             i;
         int             res;          int             res;
Line 692  ntfs_uastricmp(ntmp, ustr, ustrlen, astr Line 661  ntfs_uastricmp(ntmp, ustr, ustrlen, astr
  * Compare unicode and ascii string case sens.   * Compare unicode and ascii string case sens.
  */   */
 static int  static int
ntfs_uastrcmp(ntmp, ustr, ustrlen, astr, astrlen)ntfs_uastrcmp(struct ntfsmount *ntmp, const wchar *ustr, size_t ustrlen,
        struct ntfsmount *ntmp;              const char *astr, size_t astrlen)
        const wchar *ustr; 
        size_t ustrlen; 
        const char *astr; 
        size_t astrlen; 
 {  {
         size_t             i;          size_t             i;
         int             res;          int             res;
Line 716  ntfs_uastrcmp(ntmp, ustr, ustrlen, astr, Line 681  ntfs_uastrcmp(ntmp, ustr, ustrlen, astr,
  * ntnode should be locked on entry.   * ntnode should be locked on entry.
  */   */
 int  int
ntfs_fget(ntfs_fget(struct ntfsmount *ntmp, struct ntnode *ip, int attrtype,
        struct ntfsmount *ntmp,          char *attrname, struct fnode **fpp)
        struct ntnode *ip, 
        int attrtype, 
        char *attrname, 
        struct fnode **fpp) 
 {  {
         struct fnode *fp;          struct fnode *fp;
   
Line 772  ntfs_fget( Line 733  ntfs_fget(
  * ntnode should be locked.   * ntnode should be locked.
  */   */
 void  void
ntfs_frele(ntfs_frele(struct fnode *fp)
        struct fnode *fp) 
 {  {
         struct ntnode *ip = FTONT(fp);          struct ntnode *ip = FTONT(fp);
   
Line 795  ntfs_frele( Line 755  ntfs_frele(
  * If $ATTR_TYPE nott specifed, ATTR_A_DATA assumed.   * If $ATTR_TYPE nott specifed, ATTR_A_DATA assumed.
  */   */
 static int  static int
ntfs_ntlookupattr(ntfs_ntlookupattr(struct ntfsmount *ntmp, const char *name, int namelen,
                struct ntfsmount * ntmp,                  int *attrtype, char **attrname)
                const char * name, 
                int namelen, 
                int *attrtype, 
                char **attrname) 
 {  {
         const char *sys;          const char *sys;
         size_t syslen, i;          size_t syslen, i;
Line 849  ntfs_ntlookupattr( Line 805  ntfs_ntlookupattr(
  * return fnode filled.   * return fnode filled.
  */   */
 int  int
ntfs_ntlookupfile(ntfs_ntlookupfile(struct ntfsmount *ntmp, struct vnode *vp,
              struct ntfsmount * ntmp,                  struct componentname *cnp, struct vnode **vpp)
              struct vnode * vp, 
              struct componentname * cnp, 
              struct vnode ** vpp) 
 {  {
         struct fnode   *fp = VTOF(vp);          struct fnode   *fp = VTOF(vp);
         struct ntnode  *ip = FTONT(fp);          struct ntnode  *ip = FTONT(fp);
Line 1055  fail: Line 1008  fail:
  * Check if name type is permitted to show.   * Check if name type is permitted to show.
  */   */
 int  int
ntfs_isnamepermitted(ntfs_isnamepermitted(struct ntfsmount *ntmp, struct attr_indexentry *iep)
                     struct ntfsmount * ntmp, 
                     struct attr_indexentry * iep) 
 {  {
         if (ntmp->ntm_flag & NTFS_MFLAG_ALLNAMES)          if (ntmp->ntm_flag & NTFS_MFLAG_ALLNAMES)
                 return 1;                  return 1;
Line 1086  ntfs_isnamepermitted( Line 1037  ntfs_isnamepermitted(
  * how many records are there in $INDEX_ALLOCATION:$I30 block.   * how many records are there in $INDEX_ALLOCATION:$I30 block.
  */   */
 int  int
ntfs_ntreaddir(ntfs_ntreaddir(struct ntfsmount *ntmp, struct fnode *fp,
               struct ntfsmount * ntmp,               u_int32_t num, struct attr_indexentry **riepp)
               struct fnode * fp, 
               u_int32_t num, 
               struct attr_indexentry ** riepp) 
 {  {
         struct ntnode  *ip = FTONT(fp);          struct ntnode  *ip = FTONT(fp);
         struct ntvattr *vap = NULL;     /* IndexRoot attribute */          struct ntvattr *vap = NULL;     /* IndexRoot attribute */
Line 1250  fail: Line 1198  fail:
  * 1601 Jan 1 into unix times.   * 1601 Jan 1 into unix times.
  */   */
 struct timespec  struct timespec
ntfs_nttimetounix(ntfs_nttimetounix(u_int64_t nt)
                  u_int64_t nt) 
 {  {
         struct timespec t;          struct timespec t;
   
Line 1267  ntfs_nttimetounix( Line 1214  ntfs_nttimetounix(
  * Get file times from NTFS_A_NAME attribute.   * Get file times from NTFS_A_NAME attribute.
  */   */
 int  int
ntfs_times(ntfs_times(struct ntfsmount *ntmp, struct ntnode *ip, ntfs_times_t *tm)
           struct ntfsmount * ntmp, 
           struct ntnode * ip, 
           ntfs_times_t * tm) 
 {  {
         struct ntvattr *vap;          struct ntvattr *vap;
         int             error;          int             error;
Line 1299  ntfs_times( Line 1243  ntfs_times(
  * ntnode under fnode should be locked.   * ntnode under fnode should be locked.
  */   */
 int  int
ntfs_filesize(ntfs_filesize(struct ntfsmount *ntmp, struct fnode *fp, u_int64_t *size,
              struct ntfsmount * ntmp,              u_int64_t *bytes)
              struct fnode * fp, 
              u_int64_t * size, 
              u_int64_t * bytes) 
 {  {
         struct ntvattr *vap;          struct ntvattr *vap;
         struct ntnode *ip = FTONT(fp);          struct ntnode *ip = FTONT(fp);
Line 1337  ntfs_filesize( Line 1278  ntfs_filesize(
  * This is one of write routine.   * This is one of write routine.
  */   */
 int  int
ntfs_writeattr_plain(ntfs_writeattr_plain(struct ntfsmount *ntmp, struct ntnode *ip,
        struct ntfsmount * ntmp,                     u_int32_t attrnum, char *attrname, off_t roff,
        struct ntnode * ip,                     size_t rsize, void *rdata,    size_t *initp,
        u_int32_t attrnum,                           struct uio *uio)
        char *attrname, 
        off_t roff, 
        size_t rsize, 
        void *rdata, 
        size_t * initp, 
        struct uio *uio) 
 {  {
         size_t          init;          size_t          init;
         int             error = 0;          int             error = 0;
Line 1394  ntfs_writeattr_plain( Line 1329  ntfs_writeattr_plain(
  * ntnode should be locked.   * ntnode should be locked.
  */   */
 int  int
ntfs_writentvattr_plain(ntfs_writentvattr_plain(struct ntfsmount *ntmp,   struct ntnode *ip,
        struct ntfsmount * ntmp,                        struct ntvattr *vap, off_t roff, size_t rsize,
        struct ntnode * ip,                        void *rdata, size_t *initp, struct uio *uio)
        struct ntvattr * vap, 
        off_t roff, 
        size_t rsize, 
        void *rdata, 
        size_t * initp, 
        struct uio *uio) 
 {  {
         int             error = 0;          int             error = 0;
         int             off;          int             off;
Line 1504  ntfs_writentvattr_plain( Line 1433  ntfs_writentvattr_plain(
  * ntnode should be locked.   * ntnode should be locked.
  */   */
 int  int
ntfs_readntvattr_plain(ntfs_readntvattr_plain(struct ntfsmount *ntmp, struct ntnode *ip,
        struct ntfsmount * ntmp,                       struct ntvattr *vap, off_t roff, size_t rsize,
        struct ntnode * ip,                       void *rdata, size_t *initp, struct uio *uio)
        struct ntvattr * vap, 
        off_t roff, 
        size_t rsize, 
        void *rdata, 
        size_t * initp, 
        struct uio *uio) 
 {  {
         int             error = 0;          int             error = 0;
         int             off;          int             off;
Line 1635  ntfs_readntvattr_plain( Line 1558  ntfs_readntvattr_plain(
  * This is one of read routines.   * This is one of read routines.
  */   */
 int  int
ntfs_readattr_plain(ntfs_readattr_plain(struct ntfsmount *ntmp, struct ntnode *ip,
        struct ntfsmount * ntmp,                    u_int32_t attrnum, char *attrname, off_t roff,
        struct ntnode * ip,                    size_t rsize, void *rdata, size_t * initp,
        u_int32_t attrnum,                          struct uio *uio)
        char *attrname, 
        off_t roff, 
        size_t rsize, 
        void *rdata, 
        size_t * initp, 
        struct uio *uio) 
 {  {
         size_t          init;          size_t          init;
         int             error = 0;          int             error = 0;
Line 1690  ntfs_readattr_plain( Line 1607  ntfs_readattr_plain(
  * This is one of read routines.   * This is one of read routines.
  */   */
 int  int
ntfs_readattr(ntfs_readattr(struct ntfsmount *ntmp, struct ntnode *ip, u_int32_t attrnum,
        struct ntfsmount * ntmp,              char *attrname, off_t roff, size_t rsize, void *rdata,
        struct ntnode * ip,              struct uio *uio)
        u_int32_t attrnum, 
        char *attrname, 
        off_t roff, 
        size_t rsize, 
        void *rdata, 
        struct uio *uio) 
 {  {
         int             error = 0;          int             error = 0;
         struct ntvattr *vap;          struct ntvattr *vap;
Line 1785  ntfs_readattr( Line 1696  ntfs_readattr(
   
 #if UNUSED_CODE  #if UNUSED_CODE
 int  int
ntfs_parserun(ntfs_parserun(cn_t *cn, cn_t *cl, u_int8_t *run, u_long len, u_long *off)
              cn_t * cn, 
              cn_t * cl, 
              u_int8_t * run, 
              u_long len, 
              u_long *off) 
 {  {
         u_int8_t        sz;          u_int8_t        sz;
         int             i;          int             i;
Line 1832  ntfs_parserun( Line 1738  ntfs_parserun(
  * Process fixup routine on given buffer.   * Process fixup routine on given buffer.
  */   */
 int  int
ntfs_procfixups(ntfs_procfixups(struct ntfsmount *ntmp, u_int32_t magic, caddr_t buf,
                struct ntfsmount * ntmp, 
                u_int32_t magic, 
                caddr_t buf, 
                 size_t len)                  size_t len)
 {  {
         struct fixuphdr *fhp = (struct fixuphdr *) buf;          struct fixuphdr *fhp = (struct fixuphdr *) buf;
Line 1875  ntfs_procfixups( Line 1778  ntfs_procfixups(
   
 #if UNUSED_CODE  #if UNUSED_CODE
 int  int
ntfs_runtocn(ntfs_runtocn(cn_t *cn,        struct ntfsmount *ntmp, u_int8_t *run, u_long len,
             cn_t * cn,         
             struct ntfsmount * ntmp, 
             u_int8_t * run, 
             u_long len, 
              cn_t vcn)               cn_t vcn)
 {  {
         cn_t            ccn = 0;          cn_t            ccn = 0;
Line 1923  ntfs_runtocn( Line 1822  ntfs_runtocn(
  * later work   * later work
  */   */
 void  void
ntfs_toupper_init()ntfs_toupper_init(void)
 {  {
         ntfs_toupper_tab = (wchar *) NULL;          ntfs_toupper_tab = (wchar *) NULL;
         lockinit(&ntfs_toupper_lock, 0, "ntfs_toupper", 0, 0);          lockinit(&ntfs_toupper_lock, 0, "ntfs_toupper", 0, 0);
Line 1935  ntfs_toupper_init() Line 1834  ntfs_toupper_init()
  * otherwise read the data from the filesystem we are currently mounting   * otherwise read the data from the filesystem we are currently mounting
  */   */
 int  int
ntfs_toupper_use(mp, ntmp)ntfs_toupper_use(struct mount *mp, struct ntfsmount *ntmp)
        struct mount *mp; 
        struct ntfsmount *ntmp; 
 {  {
         int error = 0;          int error = 0;
         struct vnode *vp;          struct vnode *vp;
Line 1975  ntfs_toupper_use(mp, ntmp) Line 1872  ntfs_toupper_use(mp, ntmp)
  * tied by toupper table   * tied by toupper table
  */   */
 void  void
ntfs_toupper_unuse()ntfs_toupper_unuse(void)
 {  {
         /* get exclusive access */          /* get exclusive access */
         LOCKMGR(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL);          LOCKMGR(&ntfs_toupper_lock, LK_EXCLUSIVE, NULL);
Line 1997  ntfs_toupper_unuse() Line 1894  ntfs_toupper_unuse()
 }   } 
   
 int  int
ntfs_u28_init(ntfs_u28_init(struct ntfsmount *ntmp, wchar *u2w)
        struct ntfsmount *ntmp, 
        wchar *u2w) 
 {  {
         char ** u28;          char ** u28;
         int i, j, h, l;          int i, j, h, l;
Line 2045  ntfs_u28_uninit(struct ntfsmount *ntmp) Line 1940  ntfs_u28_uninit(struct ntfsmount *ntmp)
 }  }
   
 int  int
ntfs_82u_init(ntfs_82u_init(struct ntfsmount *ntmp, u_int16_t *u2w)
        struct ntfsmount *ntmp, 
        u_int16_t *u2w) 
 {  {
         wchar * _82u;          wchar * _82u;
         int i;          int i;
Line 2083  ntfs_82u_uninit(struct ntfsmount *ntmp) Line 1976  ntfs_82u_uninit(struct ntfsmount *ntmp)
  * something better has to be definitely though out   * something better has to be definitely though out
  */   */
 char  char
ntfs_u28(ntfs_u28(struct ntfsmount *ntmp, wchar wc)
        struct ntfsmount *ntmp,  
        wchar wc) 
 {  {
         char * p;          char * p;
   

Removed from v.1.11  
changed lines
  Added in v.1.12