+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.
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;
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) {
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.
}
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;
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;
/*
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;
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,
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;