summaryrefslogtreecommitdiffstats
path: root/sys/fs/ext2fs/ext2_extern.h
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2016-01-21 14:50:28 +0000
committerpfg <pfg@FreeBSD.org>2016-01-21 14:50:28 +0000
commitd16eeed462db8fd9eb9e8bd7c2afe86e32c74f15 (patch)
tree9d88075af5bca4278c36143901c2bc345d2aecde /sys/fs/ext2fs/ext2_extern.h
parenta4d9665ca89d09a03ad6aa2a31c0a00de4fea157 (diff)
downloadFreeBSD-src-d16eeed462db8fd9eb9e8bd7c2afe86e32c74f15.zip
FreeBSD-src-d16eeed462db8fd9eb9e8bd7c2afe86e32c74f15.tar.gz
ext2fs: Bring back the htree dir_index implementation.
The htree dir_index is perhaps one of the most characteristic features of the linux ext3 implementation. It was removed in r281670, due to repeated bug reports. Damjan Jovanic detected and fixed three bugs and did some stress testing by building Apache OpenOffice on top of it so it is now in good shape to bring back. Differential Revision: https://reviews.freebsd.org/D5007 Submitted by: Damjan Jovanovic Reviewed by: pfg Tested by: pho Relnotes: Yes MFC after: 2 months (only 10.x)
Diffstat (limited to 'sys/fs/ext2fs/ext2_extern.h')
-rw-r--r--sys/fs/ext2fs/ext2_extern.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/fs/ext2fs/ext2_extern.h b/sys/fs/ext2fs/ext2_extern.h
index f7b7657..93bd3f7 100644
--- a/sys/fs/ext2fs/ext2_extern.h
+++ b/sys/fs/ext2fs/ext2_extern.h
@@ -40,12 +40,15 @@
#define _FS_EXT2FS_EXT2_EXTERN_H_
struct ext2fs_dinode;
+struct ext2fs_direct_2;
+struct ext2fs_searchslot;
struct indir;
struct inode;
struct mount;
struct vfsconf;
struct vnode;
+int ext2_add_entry(struct vnode *, struct ext2fs_direct_2 *);
int ext2_alloc(struct inode *, daddr_t, e4fs_daddr_t, int,
struct ucred *, e4fs_daddr_t *);
int ext2_balloc(struct inode *,
@@ -83,6 +86,18 @@ int ext2_dirempty(struct inode *, ino_t, struct ucred *);
int ext2_checkpath(struct inode *, struct inode *, struct ucred *);
int cg_has_sb(int i);
int ext2_inactive(struct vop_inactive_args *);
+int ext2_htree_add_entry(struct vnode *, struct ext2fs_direct_2 *,
+ struct componentname *);
+int ext2_htree_create_index(struct vnode *, struct componentname *,
+ struct ext2fs_direct_2 *);
+int ext2_htree_has_idx(struct inode *);
+int ext2_htree_hash(const char *, int, uint32_t *, int, uint32_t *,
+ uint32_t *);
+int ext2_htree_lookup(struct inode *, const char *, int, struct buf **,
+ int *, doff_t *, doff_t *, doff_t *, struct ext2fs_searchslot *);
+int ext2_search_dirblock(struct inode *, void *, int *, const char *, int,
+ int *, doff_t *, doff_t *, doff_t *, struct ext2fs_searchslot *);
+
/* Flags to low-level allocation routines.
* The low 16-bits are reserved for IO_ flags from vnode.h.
OpenPOWER on IntegriCloud