diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nilfs2/gcinode.c | 1 | ||||
-rw-r--r-- | fs/nilfs2/inode.c | 13 | ||||
-rw-r--r-- | fs/nilfs2/nilfs.h | 1 | ||||
-rw-r--r-- | fs/nilfs2/super.c | 1 |
4 files changed, 7 insertions, 9 deletions
diff --git a/fs/nilfs2/gcinode.c b/fs/nilfs2/gcinode.c index 77615aabc7e2..19d2102b6a69 100644 --- a/fs/nilfs2/gcinode.c +++ b/fs/nilfs2/gcinode.c | |||
@@ -226,7 +226,6 @@ static struct inode *alloc_gcinode(struct the_nilfs *nilfs, ino_t ino, | |||
226 | ii->i_flags = 0; | 226 | ii->i_flags = 0; |
227 | ii->i_state = 1 << NILFS_I_GCINODE; | 227 | ii->i_state = 1 << NILFS_I_GCINODE; |
228 | ii->i_bh = NULL; | 228 | ii->i_bh = NULL; |
229 | ii->i_dtime = 0; | ||
230 | nilfs_bmap_init_gc(ii->i_bmap); | 229 | nilfs_bmap_init_gc(ii->i_bmap); |
231 | 230 | ||
232 | return inode; | 231 | return inode; |
diff --git a/fs/nilfs2/inode.c b/fs/nilfs2/inode.c index a1922b17662c..49ab4a49bb4f 100644 --- a/fs/nilfs2/inode.c +++ b/fs/nilfs2/inode.c | |||
@@ -306,7 +306,6 @@ struct inode *nilfs_new_inode(struct inode *dir, int mode) | |||
306 | 306 | ||
307 | /* ii->i_file_acl = 0; */ | 307 | /* ii->i_file_acl = 0; */ |
308 | /* ii->i_dir_acl = 0; */ | 308 | /* ii->i_dir_acl = 0; */ |
309 | ii->i_dtime = 0; | ||
310 | ii->i_dir_start_lookup = 0; | 309 | ii->i_dir_start_lookup = 0; |
311 | #ifdef CONFIG_NILFS_FS_POSIX_ACL | 310 | #ifdef CONFIG_NILFS_FS_POSIX_ACL |
312 | ii->i_acl = NULL; | 311 | ii->i_acl = NULL; |
@@ -390,11 +389,10 @@ int nilfs_read_inode_common(struct inode *inode, | |||
390 | inode->i_atime.tv_sec = le64_to_cpu(raw_inode->i_mtime); | 389 | inode->i_atime.tv_sec = le64_to_cpu(raw_inode->i_mtime); |
391 | inode->i_ctime.tv_sec = le64_to_cpu(raw_inode->i_ctime); | 390 | inode->i_ctime.tv_sec = le64_to_cpu(raw_inode->i_ctime); |
392 | inode->i_mtime.tv_sec = le64_to_cpu(raw_inode->i_mtime); | 391 | inode->i_mtime.tv_sec = le64_to_cpu(raw_inode->i_mtime); |
393 | inode->i_atime.tv_nsec = 0; | 392 | inode->i_atime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec); |
394 | inode->i_ctime.tv_nsec = 0; | 393 | inode->i_ctime.tv_nsec = le32_to_cpu(raw_inode->i_ctime_nsec); |
395 | inode->i_mtime.tv_nsec = 0; | 394 | inode->i_mtime.tv_nsec = le32_to_cpu(raw_inode->i_mtime_nsec); |
396 | ii->i_dtime = le64_to_cpu(raw_inode->i_dtime); | 395 | if (inode->i_nlink == 0 && inode->i_mode == 0) |
397 | if (inode->i_nlink == 0 && (inode->i_mode == 0 || ii->i_dtime)) | ||
398 | return -EINVAL; /* this inode is deleted */ | 396 | return -EINVAL; /* this inode is deleted */ |
399 | 397 | ||
400 | inode->i_blocks = le64_to_cpu(raw_inode->i_blocks); | 398 | inode->i_blocks = le64_to_cpu(raw_inode->i_blocks); |
@@ -505,9 +503,10 @@ void nilfs_write_inode_common(struct inode *inode, | |||
505 | raw_inode->i_size = cpu_to_le64(inode->i_size); | 503 | raw_inode->i_size = cpu_to_le64(inode->i_size); |
506 | raw_inode->i_ctime = cpu_to_le64(inode->i_ctime.tv_sec); | 504 | raw_inode->i_ctime = cpu_to_le64(inode->i_ctime.tv_sec); |
507 | raw_inode->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec); | 505 | raw_inode->i_mtime = cpu_to_le64(inode->i_mtime.tv_sec); |
506 | raw_inode->i_ctime_nsec = cpu_to_le32(inode->i_ctime.tv_nsec); | ||
507 | raw_inode->i_mtime_nsec = cpu_to_le32(inode->i_mtime.tv_nsec); | ||
508 | raw_inode->i_blocks = cpu_to_le64(inode->i_blocks); | 508 | raw_inode->i_blocks = cpu_to_le64(inode->i_blocks); |
509 | 509 | ||
510 | raw_inode->i_dtime = cpu_to_le64(ii->i_dtime); | ||
511 | raw_inode->i_flags = cpu_to_le32(ii->i_flags); | 510 | raw_inode->i_flags = cpu_to_le32(ii->i_flags); |
512 | raw_inode->i_generation = cpu_to_le32(inode->i_generation); | 511 | raw_inode->i_generation = cpu_to_le32(inode->i_generation); |
513 | 512 | ||
diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h index 19af5ab86275..7558c977db02 100644 --- a/fs/nilfs2/nilfs.h +++ b/fs/nilfs2/nilfs.h | |||
@@ -48,7 +48,6 @@ struct nilfs_inode_info { | |||
48 | struct nilfs_bmap *i_bmap; | 48 | struct nilfs_bmap *i_bmap; |
49 | union nilfs_bmap_union i_bmap_union; | 49 | union nilfs_bmap_union i_bmap_union; |
50 | __u64 i_xattr; /* sector_t ??? */ | 50 | __u64 i_xattr; /* sector_t ??? */ |
51 | __u32 i_dtime; | ||
52 | __u32 i_dir_start_lookup; | 51 | __u32 i_dir_start_lookup; |
53 | __u64 i_cno; /* check point number for GC inode */ | 52 | __u64 i_cno; /* check point number for GC inode */ |
54 | struct address_space i_btnode_cache; | 53 | struct address_space i_btnode_cache; |
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c index e2ced824c624..e117e1ea9bff 100644 --- a/fs/nilfs2/super.c +++ b/fs/nilfs2/super.c | |||
@@ -792,6 +792,7 @@ nilfs_fill_super(struct super_block *sb, void *data, int silent, | |||
792 | sb->s_op = &nilfs_sops; | 792 | sb->s_op = &nilfs_sops; |
793 | sb->s_export_op = &nilfs_export_ops; | 793 | sb->s_export_op = &nilfs_export_ops; |
794 | sb->s_root = NULL; | 794 | sb->s_root = NULL; |
795 | sb->s_time_gran = 1; | ||
795 | 796 | ||
796 | if (!nilfs_loaded(nilfs)) { | 797 | if (!nilfs_loaded(nilfs)) { |
797 | err = load_nilfs(nilfs, sbi); | 798 | err = load_nilfs(nilfs, sbi); |