ChangeLog, mkdir.c:
mkdir.c (ext2fs_mkdir): Only update the parent's inode link counts if
the link was successful. Patch suggested by jeremy@goop.org.
diff --git a/lib/ext2fs/ChangeLog b/lib/ext2fs/ChangeLog
index d669693..e282a0a 100644
--- a/lib/ext2fs/ChangeLog
+++ b/lib/ext2fs/ChangeLog
@@ -1,5 +1,9 @@
1999-11-19 <tytso@valinux.com>
+ * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
+ counts if the link was successful. Patch suggested by
+ jeremy@goop.org.
+
* Makefile.in (distclean): Remove TAGS and Makefile.in.old from
the source directory.
diff --git a/lib/ext2fs/mkdir.c b/lib/ext2fs/mkdir.c
index 06fd903..eca9a1d 100644
--- a/lib/ext2fs/mkdir.c
+++ b/lib/ext2fs/mkdir.c
@@ -95,19 +95,6 @@
goto cleanup;
/*
- * Update parent inode's counts
- */
- if (parent != ino) {
- retval = ext2fs_read_inode(fs, parent, &inode);
- if (retval)
- goto cleanup;
- inode.i_links_count++;
- retval = ext2fs_write_inode(fs, parent, &inode);
- if (retval)
- goto cleanup;
- }
-
- /*
* Link the directory into the filesystem hierarchy
*/
if (name) {
@@ -126,6 +113,19 @@
}
/*
+ * Update parent inode's counts
+ */
+ if (parent != ino) {
+ retval = ext2fs_read_inode(fs, parent, &inode);
+ if (retval)
+ goto cleanup;
+ inode.i_links_count++;
+ retval = ext2fs_write_inode(fs, parent, &inode);
+ if (retval)
+ goto cleanup;
+ }
+
+ /*
* Update accounting....
*/
ext2fs_mark_block_bitmap(fs->block_map, blk);