FreeBSD: Update argument types for VOP_READDIR
A recent commit to FreeBSD changed the type of
vop_readdir_args.a_cookies to a uint64_t**. There is no functional
impact to ZFS because ZFS only uses 32-bit cookies, which will be
zero-extended to 64-bits by the existing code.
b214fcceac
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Alan Somers <asomers@gmail.com>
Closes #12874
This commit is contained in:
parent
786abf5321
commit
4b2bac5fe9
|
@ -113,6 +113,12 @@ VFS_SMR_DECLARE;
|
||||||
#define VNCHECKREF(vp)
|
#define VNCHECKREF(vp)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if __FreeBSD_version >= 1400045
|
||||||
|
typedef uint64_t cookie_t;
|
||||||
|
#else
|
||||||
|
typedef ulong_t cookie_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Programming rules.
|
* Programming rules.
|
||||||
*
|
*
|
||||||
|
@ -1679,7 +1685,7 @@ zfs_rmdir(znode_t *dzp, const char *name, znode_t *cwd, cred_t *cr, int flags)
|
||||||
/* ARGSUSED */
|
/* ARGSUSED */
|
||||||
static int
|
static int
|
||||||
zfs_readdir(vnode_t *vp, zfs_uio_t *uio, cred_t *cr, int *eofp,
|
zfs_readdir(vnode_t *vp, zfs_uio_t *uio, cred_t *cr, int *eofp,
|
||||||
int *ncookies, ulong_t **cookies)
|
int *ncookies, cookie_t **cookies)
|
||||||
{
|
{
|
||||||
znode_t *zp = VTOZ(vp);
|
znode_t *zp = VTOZ(vp);
|
||||||
iovec_t *iovp;
|
iovec_t *iovp;
|
||||||
|
@ -1701,7 +1707,7 @@ zfs_readdir(vnode_t *vp, zfs_uio_t *uio, cred_t *cr, int *eofp,
|
||||||
boolean_t check_sysattrs;
|
boolean_t check_sysattrs;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
int ncooks;
|
int ncooks;
|
||||||
ulong_t *cooks = NULL;
|
cookie_t *cooks = NULL;
|
||||||
int flags = 0;
|
int flags = 0;
|
||||||
|
|
||||||
ZFS_ENTER(zfsvfs);
|
ZFS_ENTER(zfsvfs);
|
||||||
|
@ -1778,7 +1784,7 @@ zfs_readdir(vnode_t *vp, zfs_uio_t *uio, cred_t *cr, int *eofp,
|
||||||
*/
|
*/
|
||||||
ncooks = zfs_uio_resid(uio) / (sizeof (struct dirent) -
|
ncooks = zfs_uio_resid(uio) / (sizeof (struct dirent) -
|
||||||
sizeof (((struct dirent *)NULL)->d_name) + 1);
|
sizeof (((struct dirent *)NULL)->d_name) + 1);
|
||||||
cooks = malloc(ncooks * sizeof (ulong_t), M_TEMP, M_WAITOK);
|
cooks = malloc(ncooks * sizeof (*cooks), M_TEMP, M_WAITOK);
|
||||||
*cookies = cooks;
|
*cookies = cooks;
|
||||||
*ncookies = ncooks;
|
*ncookies = ncooks;
|
||||||
}
|
}
|
||||||
|
@ -4732,7 +4738,7 @@ struct vop_readdir_args {
|
||||||
struct ucred *a_cred;
|
struct ucred *a_cred;
|
||||||
int *a_eofflag;
|
int *a_eofflag;
|
||||||
int *a_ncookies;
|
int *a_ncookies;
|
||||||
ulong_t **a_cookies;
|
cookie_t **a_cookies;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue