Make necessary changes to readdir/getdirentries to support HAMMER. HAMMER
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 20 Nov 2007 21:03:51 +0000 (21:03 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 20 Nov 2007 21:03:51 +0000 (21:03 +0000)
needs to use 64 bit directory cookies.

Adjust libc's DIR structure and change readdir to acquire the directory
position via lseek() instead of using the basep argument to getdirentries().
The basep argument is a long, which is 32 bits on IA32, and it just isn't
wide enough.  The seek position is 64 bits and is wide enough.

Sizeof(DIR) has changed, but hopefully won't cause any major issues since
libc is responsible for allocating it.  The APIs remain the same.

Adjust the VOP_READIR() VFS interface routine to return 64 bit cookies.
All VFSs have been reworked, requiring only minor adjustments.

19 files changed:
include/dirent.h
sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c
sys/kern/vfs_vopops.c
sys/sys/dirent.h
sys/sys/vfsops.h
sys/vfs/fdesc/fdesc_vnops.c
sys/vfs/gnu/ext2fs/ext2_lookup.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/isofs/cd9660/cd9660_vnops.c
sys/vfs/msdosfs/msdosfs_vnops.c
sys/vfs/ntfs/ntfs_vnops.c
sys/vfs/nwfs/nwfs_vnops.c
sys/vfs/portal/portal_vnops.c
sys/vfs/procfs/procfs_vnops.c
sys/vfs/smbfs/smbfs_vnops.c
sys/vfs/udf/udf_vnops.c
sys/vfs/ufs/ufs_vnops.c
sys/vfs/union/union_vnops.c
sys/vfs/userfs/userfs_vnops.c

index aa2b245..8518b40 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)dirent.h    8.2 (Berkeley) 7/28/94
  * $FreeBSD: src/include/dirent.h,v 1.7 1999/12/29 05:01:20 peter Exp $
- * $DragonFly: src/include/dirent.h,v 1.6 2005/11/19 22:26:54 swildner Exp $
+ * $DragonFly: src/include/dirent.h,v 1.7 2007/11/20 21:03:43 dillon Exp $
  */
 
 #ifndef _DIRENT_H_
@@ -58,10 +58,11 @@ typedef struct _dirdesc {
        long    dd_size;        /* amount of data returned by getdirentries */
        char    *dd_buf;        /* data buffer */
        int     dd_len;         /* size of data buffer */
-       long    dd_seek;        /* magic cookie returned by getdirentries */
+       long    dd_unused01;    /* old magic cookie returned by getdirentries */
        long    dd_rewind;      /* magic cookie for rewinding */
        int     dd_flags;       /* flags for readdir */
        void    *dd_lock;       /* hack to avoid include <pthread.h> */
+       off_t   dd_seek;        /* new magic cookie returned by getdirentries */
 } DIR;
 
 #define        dirfd(dirp)     ((dirp)->dd_fd)
index 0c7bc0e..372e84c 100644 (file)
@@ -39,7 +39,7 @@
  *     @(#)procfs_vnops.c      8.18 (Berkeley) 5/21/95
  *
  * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vnops.c,v 1.3.2.5 2001/08/12 14:29:19 rwatson Exp $
- * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.41 2007/08/13 17:31:55 dillon Exp $
+ * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.42 2007/11/20 21:03:48 dillon Exp $
  */
 
 /*
@@ -774,7 +774,7 @@ linprocfs_validfile(struct proc *p)
  *
  * linprocfs_readdir(struct vnode *a_vp, struct uio *a_uio,
  *                  struct ucred *a_cred, int *a_eofflag,
- *                  int *a_ncookies, u_long **a_cookies)
+ *                  int *a_ncookies, off_t **a_cookies)
  */
 static int
 linprocfs_readdir(struct vop_readdir_args *ap)
index 80e658b..552b9fa 100644 (file)
@@ -32,7 +32,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.35 2007/08/13 17:43:55 dillon Exp $
+ * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.36 2007/11/20 21:03:50 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -562,7 +562,7 @@ vop_old_symlink(struct vop_ops *ops, struct vnode *dvp,
 
 int
 vop_readdir(struct vop_ops *ops, struct vnode *vp, struct uio *uio,
-       struct ucred *cred, int *eofflag, int *ncookies, u_long **cookies)
+       struct ucred *cred, int *eofflag, int *ncookies, off_t **cookies)
 {
        struct vop_readdir_args ap;
        int error;
index 4e85397..ba38ce1 100644 (file)
@@ -32,7 +32,7 @@
  *
  *     @(#)dirent.h    8.3 (Berkeley) 8/10/94
  * $FreeBSD: src/sys/sys/dirent.h,v 1.11 1999/12/29 04:24:39 peter Exp $
- * $DragonFly: src/sys/sys/dirent.h,v 1.6 2006/08/13 19:19:47 dillon Exp $
+ * $DragonFly: src/sys/sys/dirent.h,v 1.7 2007/11/20 21:03:46 dillon Exp $
  */
 
 #ifndef        _SYS_DIRENT_H_
@@ -97,6 +97,7 @@ struct dirent {
 #define        DT_LNK          10
 #define        DT_SOCK         12
 #define        DT_WHT          14
+#define DT_DBF         15      /* database record file */
 
 /*
  * The _DIRENT_DIRSIZ macro gives the minimum record length which will hold
index fc79dbe..e49f850 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $DragonFly: src/sys/sys/vfsops.h,v 1.29 2007/08/13 17:43:56 dillon Exp $
+ * $DragonFly: src/sys/sys/vfsops.h,v 1.30 2007/11/20 21:03:46 dillon Exp $
  */
 
 /*
@@ -264,7 +264,7 @@ struct vop_readdir_args {
        struct ucred *a_cred;
        int *a_eofflag;
        int *a_ncookies;
-       u_long **a_cookies;
+       off_t **a_cookies;
 };
 
 struct vop_readlink_args {
@@ -761,7 +761,7 @@ int vop_old_symlink(struct vop_ops *ops, struct vnode *dvp,
                struct vattr *vap, char *target);
 int vop_readdir(struct vop_ops *ops, struct vnode *vp, struct uio *uio,
                struct ucred *cred, int *eofflag, 
-               int *ncookies, u_long **cookies);
+               int *ncookies, off_t **cookies);
 int vop_readlink(struct vop_ops *ops, struct vnode *vp, struct uio *uio,
                struct ucred *cred);
 int vop_inactive(struct vop_ops *ops, struct vnode *vp);
index 6e50d94..bec43dd 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)fdesc_vnops.c       8.9 (Berkeley) 1/21/94
  *
  * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vnops.c,v 1.47.2.1 2001/10/22 22:49:26 chris Exp $
- * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.38 2007/08/08 00:12:51 swildner Exp $
+ * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.39 2007/11/20 21:03:50 dillon Exp $
  */
 
 /*
@@ -412,7 +412,7 @@ fdesc_setattr(struct vop_setattr_args *ap)
 
 /*
  * fdesc_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *              int *a_eofflag, u_long *a_cookies, int a_ncookies)
+ *              int *a_eofflag, off_t *a_cookies, int a_ncookies)
  */
 static int
 fdesc_readdir(struct vop_readdir_args *ap)
index 5bac053..7f3862d 100644 (file)
@@ -5,7 +5,7 @@
  *  University of Utah, Department of Computer Science
  *
  * $FreeBSD: src/sys/gnu/ext2fs/ext2_lookup.c,v 1.21.2.3 2002/11/17 02:02:42 bde Exp $
- * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.26 2006/12/23 00:41:29 swildner Exp $
+ * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.27 2007/11/20 21:03:50 dillon Exp $
  */
 /*
  * Copyright (c) 1989, 1993
@@ -218,18 +218,18 @@ ext2_readdir(struct vop_readdir_args *ap)
                uio->uio_offset = startoffset + (caddr_t)dp - dirbuf;
 
                if (!error && ap->a_ncookies != NULL) {
-                       u_long *cookiep, *cookies, *ecookies;
+                       off_t *cookiep, *cookies, *ecookies;
                        off_t off;
 
                        if (uio->uio_segflg != UIO_SYSSPACE || uio->uio_iovcnt != 1)
                                panic("ext2fs_readdir: unexpected uio from NFS server");
                        if (ncookies) {
-                               MALLOC(cookies, u_long *,
-                                      ncookies * sizeof(u_long),
+                               MALLOC(cookies, off_t *,
+                                      ncookies * sizeof(off_t),
                                       M_TEMP, M_WAITOK);
                        } else {
-                               MALLOC(cookies, u_long *,
-                                      sizeof(u_long), M_TEMP, M_WAITOK);
+                               MALLOC(cookies, off_t *,
+                                      sizeof(off_t), M_TEMP, M_WAITOK);
                        }
                        off = startoffset;
                        for (dp = (struct ext2_dir_entry_2 *)dirbuf,
@@ -237,7 +237,7 @@ ext2_readdir(struct vop_readdir_args *ap)
                             cookiep < ecookies;
                             dp = (struct ext2_dir_entry_2 *)((caddr_t) dp + dp->rec_len)) {
                                off += dp->rec_len;
-                               *cookiep++ = (u_long) off;
+                               *cookiep++ = off;
                        }
                        *ap->a_ncookies = ncookies;
                        *ap->a_cookies = cookies;
index 61ac50d..dcec4a9 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.2.2.2 2002/01/15 18:35:09 semenu Exp $
- * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.45 2007/08/28 01:04:33 dillon Exp $
+ * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.46 2007/11/20 21:03:50 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -807,7 +807,7 @@ hpfs_de_uiomove(int *error, struct hpfsmount *hpmp, struct hpfsdirent *dep,
 
 /*
  * hpfs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *             int *a_ncookies, u_int **cookies)
+ *             int *a_ncookies, off_t **cookies)
  */
 int
 hpfs_readdir(struct vop_readdir_args *ap)
@@ -983,26 +983,16 @@ readdone:
        uio->uio_offset = cnum;
        dprintf(("[readdone]\n"));
        if (!error && ap->a_ncookies != NULL) {
-#if defined(__DragonFly__)
-               u_long *cookies;
-               u_long *cookiep;
-#else /* defined(__NetBSD__) */
                off_t *cookies;
                off_t *cookiep;
-#endif
 
                dprintf(("%d cookies, ",ncookies));
                if (uio->uio_segflg != UIO_SYSSPACE || uio->uio_iovcnt != 1)
                        panic("hpfs_readdir: unexpected uio from NFS server");
-#if defined(__DragonFly__)
-               MALLOC(cookies, u_long *, ncookies * sizeof(u_long),
-                      M_TEMP, M_WAITOK);
-#else /* defined(__NetBSD__) */
                MALLOC(cookies, off_t *, ncookies * sizeof(off_t),
                       M_TEMP, M_WAITOK);
-#endif
                for (cookiep = cookies, i=0; i < ncookies; i++)
-                       *cookiep++ = (u_int)++num;
+                       *cookiep++ = ++num;
 
                *ap->a_ncookies = ncookies;
                *ap->a_cookies = cookies;
index da91cdb..bb7dbf6 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)cd9660_vnops.c      8.19 (Berkeley) 5/27/95
  * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.62 1999/12/15 23:01:51 eivind Exp $
- * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.38 2007/11/02 19:52:26 dillon Exp $
+ * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.39 2007/11/20 21:03:50 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -372,7 +372,7 @@ struct isoreaddir {
        struct uio *uio;
        off_t uio_off;
        int eofflag;
-       u_long *cookies;
+       off_t *cookies;
        int ncookies;
 };
 
@@ -456,7 +456,7 @@ assoc = (cl > 1) && (*cname == ASSOCCHAR);
  * Vnode op for readdir
  *
  * cd9660_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *               int *a_eofflag, int *a_ncookies, u_long *a_cookies)
+ *               int *a_eofflag, int *a_ncookies, off_t *a_cookies)
  */
 static int
 cd9660_readdir(struct vop_readdir_args *ap)
@@ -475,7 +475,7 @@ cd9660_readdir(struct vop_readdir_args *ap)
        int reclen;
        u_short namelen;
        int ncookies = 0;
-       u_long *cookies = NULL;
+       off_t *cookies = NULL;
 
        dp = VTOI(vdp);
        imp = dp->i_mnt;
@@ -505,7 +505,7 @@ cd9660_readdir(struct vop_readdir_args *ap)
                ncookies = uio->uio_resid / 16 + 1;
                if (ncookies > 1024)
                        ncookies = 1024;
-               MALLOC(cookies, u_long *, ncookies * sizeof(u_int),
+               MALLOC(cookies, off_t *, ncookies * sizeof(off_t),
                       M_TEMP, M_WAITOK);
                idp->cookies = cookies;
                idp->ncookies = ncookies;
index 3422ace..c5225f9 100644 (file)
@@ -1,5 +1,5 @@
 /* $FreeBSD: src/sys/msdosfs/msdosfs_vnops.c,v 1.95.2.4 2003/06/13 15:05:47 trhodes Exp $ */
-/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.53 2007/11/02 19:52:27 dillon Exp $ */
+/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.54 2007/11/20 21:03:50 dillon Exp $ */
 /*     $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $   */
 
 /*-
@@ -1543,7 +1543,7 @@ msdosfs_symlink(struct vop_old_symlink_args *ap)
 /*
  * msdosfs_readdir(struct vnode *a_vp, struct uio *a_uio,
  *                struct ucred *a_cred, int *a_eofflag, int *a_ncookies,
- *                u_long **a_cookies)
+ *                off_t **a_cookies)
  */
 static int
 msdosfs_readdir(struct vop_readdir_args *ap)
@@ -1562,7 +1562,7 @@ msdosfs_readdir(struct vop_readdir_args *ap)
        struct msdosfsmount *pmp;
        struct direntry *dentp;
        struct uio *uio = ap->a_uio;
-       u_long *cookies = NULL;
+       off_t *cookies = NULL;
        int ncookies = 0;
        off_t offset, off;
        int chksum = -1;
@@ -1610,7 +1610,7 @@ msdosfs_readdir(struct vop_readdir_args *ap)
                ncookies = uio->uio_resid / 16 + 1;
                if (ncookies > 1024)
                        ncookies = 1024;
-               MALLOC(cookies, u_long *, ncookies * sizeof(u_long), M_TEMP,
+               MALLOC(cookies, off_t *, ncookies * sizeof(off_t), M_TEMP,
                       M_WAITOK);
                *ap->a_cookies = cookies;
                *ap->a_ncookies = ncookies;
index 3c7a4f3..af1a2d1 100644 (file)
@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $
- * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.43 2007/08/28 01:04:33 dillon Exp $
+ * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.44 2007/11/20 21:03:50 dillon Exp $
  *
  */
 
@@ -529,7 +529,7 @@ ntfs_close(struct vop_close_args *ap)
 
 /*
  * ntfs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *             int *a_ncookies, u_int **cookies)
+ *             int *a_ncookies, off_t **cookies)
  */
 int
 ntfs_readdir(struct vop_readdir_args *ap)
@@ -646,24 +646,14 @@ readdone:
                (u_int32_t)uio->uio_offset,uio->uio_resid));
 
        if (!error && ap->a_ncookies != NULL) {
-#if defined(__DragonFly__)
-               u_long *cookies;
-               u_long *cookiep;
-#else /* defined(__NetBSD__) */
                off_t *cookies;
                off_t *cookiep;
-#endif
 
                ddprintf(("ntfs_readdir: %d cookies\n",ncookies));
                if (uio->uio_segflg != UIO_SYSSPACE || uio->uio_iovcnt != 1)
                        panic("ntfs_readdir: unexpected uio from NFS server");
-#if defined(__DragonFly__)
-               MALLOC(cookies, u_long *, ncookies * sizeof(u_long),
-                      M_TEMP, M_WAITOK);
-#else /* defined(__NetBSD__) */
                MALLOC(cookies, off_t *, ncookies * sizeof(off_t),
                       M_TEMP, M_WAITOK);
-#endif
                cookiep = cookies;
                while (off < num)
                        *cookiep++ = ++off;
index 35a4191..3fc5417 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/nwfs/nwfs_vnops.c,v 1.6.2.3 2001/03/14 11:26:59 bp Exp $
- * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.37 2007/08/13 17:31:56 dillon Exp $
+ * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.38 2007/11/20 21:03:50 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -660,7 +660,7 @@ nwfs_rmdir(struct vop_old_rmdir_args *ap)
  * nwfs_readdir call
  *
  * nwfs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *             int *a_eofflag, u_long *a_cookies, int a_ncookies)
+ *             int *a_eofflag, off_t *a_cookies, int a_ncookies)
  */
 static int
 nwfs_readdir(struct vop_readdir_args *ap)
index c48307d..e6cea3f 100644 (file)
@@ -36,7 +36,7 @@
  *     @(#)portal_vnops.c      8.14 (Berkeley) 5/21/95
  *
  * $FreeBSD: src/sys/miscfs/portal/portal_vnops.c,v 1.38 1999/12/21 06:29:00 chris Exp $
- * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.38 2007/08/08 00:12:52 swildner Exp $
+ * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.39 2007/11/20 21:03:50 dillon Exp $
  */
 
 /*
@@ -502,7 +502,7 @@ portal_setattr(struct vop_setattr_args *ap)
  *
  * portal_readdir(struct vnode *a_vp, struct uio *a_uio,
  *               struct ucred *a_cred, int *a_eofflag,
- *               u_long *a_cookies, int a_ncookies)
+ *               off_t *a_cookies, int a_ncookies)
  */
 static int
 portal_readdir(struct vop_readdir_args *ap)
index 90a70ce..6da9a4a 100644 (file)
@@ -37,7 +37,7 @@
  *     @(#)procfs_vnops.c      8.18 (Berkeley) 5/21/95
  *
  * $FreeBSD: src/sys/miscfs/procfs/procfs_vnops.c,v 1.76.2.7 2002/01/22 17:22:59 nectar Exp $
- * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.45 2007/08/13 17:31:56 dillon Exp $
+ * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.46 2007/11/20 21:03:50 dillon Exp $
  */
 
 /*
@@ -818,7 +818,7 @@ procfs_validfile(struct lwp *lp)
  * not pay off to buffer several entries locally to save uiomove calls.
  *
  * procfs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *               int *a_eofflag, int *a_ncookies, u_long **a_cookies)
+ *               int *a_eofflag, int *a_ncookies, off_t **a_cookies)
  */
 static int
 procfs_readdir(struct vop_readdir_args *ap)
index 8ba1b34..4138e8e 100644 (file)
@@ -30,7 +30,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/smbfs/smbfs_vnops.c,v 1.2.2.8 2003/04/04 08:57:23 tjr Exp $
- * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.40 2007/08/13 17:31:56 dillon Exp $
+ * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.41 2007/11/20 21:03:50 dillon Exp $
  */
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -707,7 +707,7 @@ smbfs_rmdir(struct vop_old_rmdir_args *ap)
  * smbfs_readdir call
  *
  * smbfs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *              int *a_eofflag, u_long *a_cookies, int a_ncookies)
+ *              int *a_eofflag, off_t *a_cookies, int a_ncookies)
  */
 static int
 smbfs_readdir(struct vop_readdir_args *ap)
index 186b392..8b92396 100644 (file)
@@ -24,7 +24,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.33 2003/12/07 05:04:49 scottl Exp $
- * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.31 2007/08/13 17:31:56 dillon Exp $
+ * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.32 2007/11/20 21:03:51 dillon Exp $
  */
 
 /* udf_vnops.c */
@@ -533,7 +533,7 @@ udf_cmpname(char *cs0string, char *cmpname, int cs0len, int cmplen, struct udf_m
 
 struct udf_uiodir {
        struct dirent *dirent;
-       u_long *cookies;
+       off_t *cookies;
        int ncookies;
        int acookies;
        int eofflag;
@@ -691,7 +691,7 @@ udf_readdir(struct vop_readdir_args *a)
        struct fileid_desc *fid;
        struct udf_uiodir uiodir;
        struct udf_dirstream *ds;
-       u_long *cookies = NULL;
+       off_t *cookies = NULL;
        int ncookies;
        int error = 0;
        char *name;
@@ -715,7 +715,7 @@ udf_readdir(struct vop_readdir_args *a)
                ncookies = uio->uio_resid / 8 + 1;
                if (ncookies > 1024)
                        ncookies = 1024;
-               cookies = kmalloc(sizeof(u_long) * ncookies, M_TEMP, M_WAITOK);
+               cookies = kmalloc(sizeof(off_t) * ncookies, M_TEMP, M_WAITOK);
                uiodir.ncookies = ncookies;
                uiodir.cookies = cookies;
                uiodir.acookies = 0;
index 9bf34d5..c68dc25 100644 (file)
@@ -37,7 +37,7 @@
  *
  *     @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95
  * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.131.2.8 2003/01/02 17:26:19 bde Exp $
- * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.62 2007/08/13 17:31:57 dillon Exp $
+ * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.63 2007/11/20 21:03:51 dillon Exp $
  */
 
 #include "opt_quota.h"
@@ -1640,7 +1640,7 @@ ufs_symlink(struct vop_old_symlink_args *ap)
  * Vnode op for reading directories.
  *
  * ufs_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *             int *a_eofflag, int *ncookies, u_long **a_cookies)
+ *             int *a_eofflag, int *ncookies, off_t **a_cookies)
  */
 static
 int
@@ -1657,7 +1657,7 @@ ufs_readdir(struct vop_readdir_args *ap)
        int pickup;     /* pickup point */
        int ncookies;
        int cookie_index;
-       u_long *cookies;
+       off_t *cookies;
 
        if (uio->uio_offset < 0)
                return (EINVAL);
@@ -1669,7 +1669,7 @@ ufs_readdir(struct vop_readdir_args *ap)
                ncookies = uio->uio_resid / 16 + 1;
                if (ncookies > 1024)
                        ncookies = 1024;
-               cookies = kmalloc(ncookies * sizeof(u_long), M_TEMP, M_WAITOK);
+               cookies = kmalloc(ncookies * sizeof(off_t), M_TEMP, M_WAITOK);
        } else {
                ncookies = -1;  /* force conditionals below */
                cookies = NULL;
@@ -1737,10 +1737,8 @@ ufs_readdir(struct vop_readdir_args *ap)
                        }
                        if (retval)
                                break;
-                       if (cookies) {
-                               cookies[cookie_index] =
-                                       (u_long)bp->b_loffset + offset;
-                       }
+                       if (cookies)
+                               cookies[cookie_index] = bp->b_loffset + offset;
                        ++cookie_index;
                        offset += dp->d_reclen;
                        if (cookie_index == ncookies)
index 1b32543..60c7962 100644 (file)
@@ -36,7 +36,7 @@
  *
  *     @(#)union_vnops.c       8.32 (Berkeley) 6/23/95
  * $FreeBSD: src/sys/miscfs/union/union_vnops.c,v 1.72 1999/12/15 23:02:14 eivind Exp $
- * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.38 2007/08/13 17:31:57 dillon Exp $
+ * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.39 2007/11/20 21:03:51 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -1573,7 +1573,7 @@ union_symlink(struct vop_old_symlink_args *ap)
  * eliminating duplicate names from the returned data stream.
  *
  * union_readdir(struct vnode *a_vp, struct uio *a_uio, struct ucred *a_cred,
- *              int *a_eofflag, u_long *a_cookies, int a_ncookies)
+ *              int *a_eofflag, off_t *a_cookies, int a_ncookies)
  */
 static int
 union_readdir(struct vop_readdir_args *ap)
index 8fe1c98..c898b10 100644 (file)
@@ -31,7 +31,7 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  * 
- * $DragonFly: src/sys/vfs/userfs/userfs_vnops.c,v 1.3 2007/09/07 21:42:59 dillon Exp $
+ * $DragonFly: src/sys/vfs/userfs/userfs_vnops.c,v 1.4 2007/11/20 21:03:51 dillon Exp $
  */
 
 #include <sys/param.h>
@@ -501,7 +501,7 @@ user_vop_print (struct vop_print_args *ap)
 
 /*
  * vop_readdir(struct vnode *vp, struct uio *uio, struct ucred *cred,
- *            int *eofflag, int *ncookies, u_long **a_cookies)
+ *            int *eofflag, int *ncookies, off_t **a_cookies)
  */
 static
 int