svn commit: r261120 - head/sys/fs/ext2fs
Pedro F. Giffuni
pfg at FreeBSD.org
Fri Jan 24 13:51:39 UTC 2014
Author: pfg
Date: Fri Jan 24 13:51:38 2014
New Revision: 261120
URL: http://svnweb.freebsd.org/changeset/base/261120
Log:
ext2fs: fix a bug in dirindex and re-enable.
The IN_* flags should be set in i_flag instead of corrupting
i_flags [1].
Re-enable HTree dirindex as the last series of bug fixes
seems to have fixed the issues.
Reported by: bde [1]
Tested by: kevlo
MFC after: 1 week
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 Fri Jan 24 13:36:41 2014 (r261119)
+++ head/sys/fs/ext2fs/ext2_htree.c Fri Jan 24 13:51:38 2014 (r261120)
@@ -89,12 +89,10 @@ 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 & E4_INDEX)
return (1);
else
-#endif
return (0);
}
Modified: head/sys/fs/ext2fs/ext2_lookup.c
==============================================================================
--- head/sys/fs/ext2fs/ext2_lookup.c Fri Jan 24 13:36:41 2014 (r261119)
+++ head/sys/fs/ext2fs/ext2_lookup.c Fri Jan 24 13:51:38 2014 (r261120)
@@ -884,13 +884,11 @@ 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) {
- /* XXX: These are set in the wrong place. */
dp->i_flags &= ~E4_INDEX;
- dp->i_flags |= IN_CHANGE | IN_UPDATE;
+ dp->i_flag |= IN_CHANGE | IN_UPDATE;
}
return (error);
}
@@ -906,7 +904,6 @@ 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