#ifndef _SYS_FS_HSFS_IMPL_H
#define _SYS_FS_HSFS_IMPL_H
#include <sys/vfs_opreg.h>
#ifdef __cplusplus
extern "C" {
#endif
extern int hsfs_putapage(vnode_t *, page_t *, u_offset_t *, size_t *, int,
cred_t *);
extern int hs_readsector(struct vnode *vp, uint_t secno, uchar_t *ptr);
extern struct vnode *hs_makenode(struct hs_direntry *dp,
uint_t lbn, uint_t off, struct vfs *vfsp);
extern int hs_remakenode(uint_t lbn, uint_t off, struct vfs *vfsp,
struct vnode **vpp);
extern int hs_dirlook(struct vnode *dvp, char *name, int namlen,
struct vnode **vpp, struct cred *cred);
extern struct vnode *hs_findhash(ino64_t nodeid, uint_t lbn, uint_t off,
struct vfs *vfsp);
extern void hs_freenode(vnode_t *vp, struct hsfs *fsp, int nopage);
extern int hs_parsedir(struct hsfs *fsp, uchar_t *dirp,
struct hs_direntry *hdp, char *dnp, int *dnlen, int last_offset);
extern int hs_namecopy(char *from, char *to, int size, ulong_t flags);
extern int hs_jnamecopy(char *from, char *to, int size, int maxsize,
ulong_t flags);
extern int hs_joliet_cp(char *from, char *to, int size);
extern void hs_filldirent(struct vnode *vp, struct hs_direntry *hdp);
extern int hs_access(struct vnode *vp, mode_t m, struct cred *cred);
extern int hs_synchash(struct vfs *vfsp);
extern void hs_parse_dirdate(uchar_t *dp, struct timeval *tvp);
extern void hs_parse_longdate(uchar_t *dp, struct timeval *tvp);
extern int hs_uppercase_copy(char *from, char *to, int size);
extern void hs_log_bogus_disk_warning(struct hsfs *fsp, int errtype,
uint_t data);
extern int hsfs_valid_dir(struct hs_direntry *hd);
extern void hs_init_hsnode_cache(void);
extern void hs_fini_hsnode_cache(void);
extern const struct fs_operation_def hsfs_vnodeops_template[];
extern struct vnodeops *hsfs_vnodeops;
extern kmutex_t hs_mounttab_lock;
extern struct hsfs *hs_mounttab;
#ifdef __cplusplus
}
#endif
#endif