svn commit: r255338 - head/sys/fs/ext2fs

Pedro F. Giffuni pfg at FreeBSD.org
Sat Sep 7 02:45:52 UTC 2013


Author: pfg
Date: Sat Sep  7 02:45:51 2013
New Revision: 255338
URL: http://svnweb.freebsd.org/changeset/base/255338

Log:
  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

Modified:
  head/sys/fs/ext2fs/ext2_htree.c
  head/sys/fs/ext2fs/ext2_lookup.c

Modified: head/sys/fs/ext2fs/ext2_htree.c
==============================================================================
--- head/sys/fs/ext2fs/ext2_htree.c	Sat Sep  7 00:45:24 2013	(r255337)
+++ head/sys/fs/ext2fs/ext2_htree.c	Sat Sep  7 02:45:51 2013	(r255338)
@@ -89,10 +89,12 @@ static int	ext2_htree_writebuf(struct ex
 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);
 }
 

Modified: head/sys/fs/ext2fs/ext2_lookup.c
==============================================================================
--- head/sys/fs/ext2fs/ext2_lookup.c	Sat Sep  7 00:45:24 2013	(r255337)
+++ head/sys/fs/ext2fs/ext2_lookup.c	Sat Sep  7 02:45:51 2013	(r255338)
@@ -884,6 +884,7 @@ ext2_direnter(struct inode *ip, struct v
 	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 v
 			return ext2_htree_create_index(dvp, cnp, &newdir);
 		}
 	}
+#endif	/* EXT2FS_HTREE */
 
 	if (dp->i_count == 0) {
 		/*


More information about the svn-src-all mailing list