summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/fs/ctfs/ctfs_tdir.c
diff options
context:
space:
mode:
authorck153898 <none@none>2007-12-10 12:25:48 -0800
committerck153898 <none@none>2007-12-10 12:25:48 -0800
commitb38f097029665f4ece801ca129913d36f757b49c (patch)
tree5ed7f4d7fb0fdae99be722118762b9249191a3d4 /usr/src/uts/common/fs/ctfs/ctfs_tdir.c
parent423908e1eda59d79f1f867966cafecd54cfaa635 (diff)
downloadillumos-gate-b38f097029665f4ece801ca129913d36f757b49c.tar.gz
6627223 gfs needs to support extended dirent flags
Diffstat (limited to 'usr/src/uts/common/fs/ctfs/ctfs_tdir.c')
-rw-r--r--usr/src/uts/common/fs/ctfs/ctfs_tdir.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/usr/src/uts/common/fs/ctfs/ctfs_tdir.c b/usr/src/uts/common/fs/ctfs/ctfs_tdir.c
index fd3c229c0f..ce83fa5097 100644
--- a/usr/src/uts/common/fs/ctfs/ctfs_tdir.c
+++ b/usr/src/uts/common/fs/ctfs/ctfs_tdir.c
@@ -56,8 +56,8 @@ static gfs_dirent_t ctfs_tdir_dirents[] = {
};
#define CTFS_NSPECIALS ((sizeof ctfs_tdir_dirents / sizeof (gfs_dirent_t)) - 1)
-static int ctfs_tdir_do_readdir(vnode_t *, struct dirent64 *, int *, offset_t *,
- offset_t *, void *);
+static int ctfs_tdir_do_readdir(vnode_t *, void *, int *, offset_t *,
+ offset_t *, void *, int);
static int ctfs_tdir_do_lookup(vnode_t *, const char *, vnode_t **, ino64_t *,
cred_t *);
static ino64_t ctfs_tdir_do_inode(vnode_t *, int);
@@ -107,12 +107,17 @@ ctfs_tdir_do_inode(vnode_t *vp, int index)
/* ARGSUSED */
static int
-ctfs_tdir_do_readdir(vnode_t *vp, struct dirent64 *dp, int *eofp,
- offset_t *offp, offset_t *nextp, void *data)
+ctfs_tdir_do_readdir(vnode_t *vp, void *dp, int *eofp,
+ offset_t *offp, offset_t *nextp, void *data, int flags)
{
uint64_t zuniqid;
ctid_t next;
ct_type_t *ty = ct_types[gfs_file_index(vp)];
+ struct dirent64 *odp = dp;
+
+ /* ctfs does not support V_RDDIR_ENTFLAGS */
+ if (flags & V_RDDIR_ENTFLAGS)
+ return (ENOTSUP);
zuniqid = VTOZONE(vp)->zone_uniqid;
next = contract_type_lookup(ty, zuniqid, *offp);
@@ -122,8 +127,8 @@ ctfs_tdir_do_readdir(vnode_t *vp, struct dirent64 *dp, int *eofp,
return (0);
}
- dp->d_ino = CTFS_INO_CT_DIR(next);
- numtos(next, dp->d_name);
+ odp->d_ino = CTFS_INO_CT_DIR(next);
+ numtos(next, odp->d_name);
*offp = next;
*nextp = next + 1;