summaryrefslogtreecommitdiffstats
path: root/sys/fs
diff options
context:
space:
mode:
authorpfg <pfg@FreeBSD.org>2013-09-07 02:45:51 +0000
committerpfg <pfg@FreeBSD.org>2013-09-07 02:45:51 +0000
commit807f696b94dabbceb97f8d695288591adefaedb5 (patch)
tree3cd7fb2943381405bd390972131945a2a1ed6a24 /sys/fs
parentaa05f03aae06784dfb1fa88378812cfaea2d3ebb (diff)
downloadFreeBSD-src-807f696b94dabbceb97f8d695288591adefaedb5.zip
FreeBSD-src-807f696b94dabbceb97f8d695288591adefaedb5.tar.gz
ext2fs: temporarily disable htree directory index.
Our code does not consider yet the case of hash collisions. This is a rather annoying situation where two or more files that happen to have the same hash value will not appear accessible. The situation is not difficult to work-around but given that things will just work without enabling htree we will save possible embarrassments for the next release. Reported by: Kevin Lo
Diffstat (limited to 'sys/fs')
-rw-r--r--sys/fs/ext2fs/ext2_htree.c2
-rw-r--r--sys/fs/ext2fs/ext2_lookup.c2
2 files changed, 4 insertions, 0 deletions
diff --git a/sys/fs/ext2fs/ext2_htree.c b/sys/fs/ext2fs/ext2_htree.c
index 0b5d920..ff1e1a5 100644
--- a/sys/fs/ext2fs/ext2_htree.c
+++ b/sys/fs/ext2fs/ext2_htree.c
@@ -89,10 +89,12 @@ static int ext2_htree_writebuf(struct ext2fs_htree_lookup_info *info);
int
ext2_htree_has_idx(struct inode *ip)
{
+#ifdef EXT2FS_HTREE
if (EXT2_HAS_COMPAT_FEATURE(ip->i_e2fs, EXT2F_COMPAT_DIRHASHINDEX) &&
ip->i_flags & EXT4_INDEX)
return (1);
else
+#endif
return (0);
}
diff --git a/sys/fs/ext2fs/ext2_lookup.c b/sys/fs/ext2fs/ext2_lookup.c
index 990ed33..d607554 100644
--- a/sys/fs/ext2fs/ext2_lookup.c
+++ b/sys/fs/ext2fs/ext2_lookup.c
@@ -884,6 +884,7 @@ ext2_direnter(struct inode *ip, struct vnode *dvp, struct componentname *cnp)
bcopy(cnp->cn_nameptr, newdir.e2d_name, (unsigned)cnp->cn_namelen + 1);
newentrysize = EXT2_DIR_REC_LEN(newdir.e2d_namlen);
+#ifdef EXT2FS_HTREE
if (ext2_htree_has_idx(dp)) {
error = ext2_htree_add_entry(dvp, &newdir, cnp);
if (error) {
@@ -904,6 +905,7 @@ ext2_direnter(struct inode *ip, struct vnode *dvp, struct componentname *cnp)
return ext2_htree_create_index(dvp, cnp, &newdir);
}
}
+#endif /* EXT2FS_HTREE */
if (dp->i_count == 0) {
/*
OpenPOWER on IntegriCloud