]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Add fs->now to override time(0) in libext2fs
authorTheodore Ts'o <tytso@mit.edu>
Sun, 25 Sep 2005 00:14:51 +0000 (20:14 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sun, 25 Sep 2005 00:14:51 +0000 (20:14 -0400)
If fs->now is non-zero, use that as the time instead of the system
time when setting various filesystem fields (last modified time, last
write time, etc.)

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/ext2fs/ChangeLog
lib/ext2fs/bb_inode.c
lib/ext2fs/closefs.c
lib/ext2fs/ext2fs.h
lib/ext2fs/initialize.c
lib/ext2fs/mkdir.c
lib/ext2fs/mkjournal.c
lib/ext2fs/res_gdt.c

index 910bfc2f019f296885932b4e4a1e2c12ac7865f4..5e2530ea1979ea15ac30c93d21ae6244b6d47f5c 100644 (file)
@@ -1,3 +1,11 @@
+2005-09-24  Theodore Ts'o  <tytso@mit.edu>
+
+       * ext2fs.h, bb_inode.c, closefs.c, initialize.c, mkdir.c,
+               mkjournal.c, res_gdt.c:  If fs->now is non-zero, use that
+               as the time instead of the system time when setting
+               various filesystem fields (last modified time, last write
+               time, etc.)
+
 2005-08-28  Matthias Andree <matthias.andree@gmx.de>
 
        * Fix compiler warnings about missing memcpy prototypes.
index dd8e7c31932b5f9e2c6891d10bddc774207e771e..97a56087f4537e83e508da9062d7965910e1b11f 100644 (file)
@@ -124,9 +124,9 @@ errcode_t ext2fs_update_bb_inode(ext2_filsys fs, ext2_badblocks_list bb_list)
        if (retval)
                goto cleanup;
        
-       inode.i_atime = inode.i_mtime = time(0);
+       inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(0);
        if (!inode.i_ctime)
-               inode.i_ctime = time(0);
+               inode.i_ctime = fs->now ? fs->now : time(0);
        inode.i_blocks = rec.bad_block_count * (fs->blocksize / 512);
        inode.i_size = rec.bad_block_count * fs->blocksize;
 
index 8539a1c25fa40692843ff1cab460a518bb131a3f..6a1519379406021fb55892172fad66137fe375df 100644 (file)
@@ -219,7 +219,7 @@ errcode_t ext2fs_flush(ext2_filsys fs)
 
        fs_state = fs->super->s_state;
 
-       fs->super->s_wtime = time(NULL);
+       fs->super->s_wtime = fs->now ? fs->now : time(NULL);
        fs->super->s_block_group_nr = 0;
 #ifdef EXT2FS_ENABLE_SWAPFS
        if (fs->flags & EXT2_FLAG_SWAP_BYTES) {
index 9c7eee28b64338862614e0fac709b7dc3a5d2d07..c573af39231c882f443cb286d51c743c21609e83 100644 (file)
@@ -228,10 +228,11 @@ struct struct_ext2_filsys {
        struct ext2_super_block *       orig_super;
        struct ext2_image_hdr *         image_header;
        __u32                           umask;
+       __u32                           now;
        /*
         * Reserved for future expansion
         */
-       __u32                           reserved[8];
+       __u32                           reserved[7];
 
        /*
         * Reserved for the use of the calling application.
index 82cd9f1da9eab5b9f8570bf6960be856ceefd85a..5a0d100cf13c79e1b3214b5ef80371f281c95ca4 100644 (file)
@@ -168,7 +168,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
        }
 
        set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
-       super->s_mkfs_time = super->s_lastcheck = time(NULL);
+       super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
 
        super->s_creator_os = CREATOR_OS;
 
index 81e7aea58c5db927e8e83ef717c85ca03185f564..45e68205ab84ce64ce7719ab251bdac026e288ee 100644 (file)
@@ -85,7 +85,7 @@ errcode_t ext2fs_mkdir(ext2_filsys fs, ext2_ino_t parent, ext2_ino_t inum,
        inode.i_blocks = fs->blocksize / 512;
        inode.i_block[0] = blk;
        inode.i_links_count = 2;
-       inode.i_ctime = inode.i_atime = inode.i_mtime = time(NULL);
+       inode.i_ctime = inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(NULL);
        inode.i_size = fs->blocksize;
 
        /*
index 76ed5cbbe842c67f15315cae2ff34b0a07abd9e5..eb3501378233d6e9f8700d68117bbf4aa662bd5a 100644 (file)
@@ -229,7 +229,7 @@ static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
 
        inode.i_size += fs->blocksize * size;
        inode.i_blocks += (fs->blocksize / 512) * es.newblocks;
-       inode.i_mtime = inode.i_ctime = time(0);
+       inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
        inode.i_links_count = 1;
        inode.i_mode = LINUX_S_IFREG | 0600;
 
index 8b4ddca6d7d61664d101bd839c54e2d8c5678f84..c03f1da07a31ac7c3a2d640dff4b498d2289d596 100644 (file)
@@ -116,7 +116,7 @@ errcode_t ext2fs_create_resize_inode(ext2_filsys fs)
                        sb->s_feature_ro_compat |=
                                EXT2_FEATURE_RO_COMPAT_LARGE_FILE;
                }
-               inode.i_ctime = time(0);
+               inode.i_ctime = fs->now ? fs->now : time(0);
        }
 
        for (rsv_off = 0, gdt_off = fs->desc_blocks,
@@ -208,7 +208,7 @@ out_inode:
               inode.i_size);
 #endif
        if (inode_dirty) {
-               inode.i_atime = inode.i_mtime = time(0);
+               inode.i_atime = inode.i_mtime = fs->now ? fs->now : time(0);
                retval2 = ext2fs_write_inode(fs, EXT2_RESIZE_INO, &inode);
                if (!retval)
                        retval = retval2;