]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
link.c (ext2fs_link): When adding a new link to a directory,
authorTheodore Ts'o <tytso@mit.edu>
Mon, 29 Jul 2002 23:26:33 +0000 (19:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 29 Jul 2002 23:26:33 +0000 (19:26 -0400)
clear the HTREE bit.

lib/ext2fs/ChangeLog
lib/ext2fs/link.c

index c946de5db7ceed8de96d20a3f81c2f27071692d1..c8a00eb5bd5d9884fbe3c825990063607a006b99 100644 (file)
@@ -1,3 +1,8 @@
+2002-07-29  Theodore Ts'o  <tytso@mit.edu>
+
+       * link.c (ext2fs_link): When adding a new link to a directory,
+               clear the HTREE bit.
+
 2002-07-23  Theodore Ts'o  <tytso@mit.edu>
 
        * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4
index 04ac00c772b0077392a3a41910321d8f3c88f216..5e0f4f3c06a5fd458caa4fd108992621107dc68d 100644 (file)
@@ -97,8 +97,9 @@ static int link_proc(struct ext2_dir_entry *dirent,
 errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name, 
                      ext2_ino_t ino, int flags)
 {
-       errcode_t       retval;
-       struct link_struct ls;
+       errcode_t               retval;
+       struct link_struct      ls;
+       struct ext2_inode       inode;
 
        EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
 
@@ -117,5 +118,17 @@ errcode_t ext2fs_link(ext2_filsys fs, ext2_ino_t dir, const char *name,
        if (retval)
                return retval;
 
-       return (ls.done) ? 0 : EXT2_ET_DIR_NO_SPACE;
+       if (!ls.done)
+               return EXT2_ET_DIR_NO_SPACE;
+
+       if ((retval = ext2fs_read_inode(fs, dir, &inode)) != 0)
+               return retval;
+
+       if (inode.i_flags & EXT2_INDEX_FL) {
+               inode.i_flags &= ~EXT2_INDEX_FL;
+               if ((retval = ext2fs_write_inode(fs, dir, &inode)) != 0)
+                       return retval;
+       }
+
+       return 0;
 }