Whamcloud - gitweb
mkjournal.c (ext2fs_add_journal_inode): Move close of file
authorTheodore Ts'o <tytso@mit.edu>
Sat, 23 Jun 2001 01:52:14 +0000 (21:52 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 23 Jun 2001 01:52:14 +0000 (21:52 -0400)
descriptor so that adding a journal to a mounted
filesystem doesn't die.  (Fixes a bug accidentally
introduced in e2fsprogs 1.21.)

lib/ext2fs/ChangeLog
lib/ext2fs/mkjournal.c

index 959a4be..98e6b90 100644 (file)
@@ -1,5 +1,10 @@
 2001-06-22  Theodore Tso  <tytso@valinux.com>
 
+       * mkjournal.c (ext2fs_add_journal_inode): Move close of file
+               descriptor so that adding a journal to a mounted
+               filesystem doesn't die.  (Fixes a bug accidentally
+               introduced in e2fsprogs 1.21.)
+
        * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if
                HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has
                fchflags without defining UF_NODUMP.  (Addresses Debian
index adf6ea5..8c722e6 100644 (file)
@@ -321,14 +321,13 @@ errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
                /* Create the journal file */
                if ((fd = open(jfile, O_CREAT|O_WRONLY, 0600)) < 0)
                        return errno;
-               close(fd);
 
                if ((retval = write_journal_file(fs, jfile, size, flags)))
-                       return retval;
-
+                       goto errout;
+               
                /* Get inode number of the journal file */
                if (fstat(fd, &st) < 0)
-                       return errno;
+                       goto errout;
 
 #if defined(HAVE_CHFLAGS) && defined(UF_NODUMP)
                retval = fchflags (fd, UF_NODUMP|UF_IMMUTABLE);
@@ -339,8 +338,9 @@ errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
 #endif
 #endif
                if (retval)
-                       return retval;
-
+                       goto errout;
+               
+               close(fd);
                journal_ino = st.st_ino;
        } else {
                journal_ino = EXT2_JOURNAL_INO;
@@ -357,6 +357,9 @@ errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
 
        ext2fs_mark_super_dirty(fs);
        return 0;
+errout:
+       close(fd);
+       return retval;
 }
 
 #ifdef DEBUG