[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <1479948470-2397-5-git-send-email-deepa.kernel@gmail.com>
Date: Wed, 23 Nov 2016 16:47:48 -0800
From: Deepa Dinamani <deepa.kernel@...il.com>
To: linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: arnd@...db.de, tglx@...utronix.de, gregkh@...uxfoundation.org,
akpm@...ux-foundation.org, tytso@....edu, viro@...iv.linux.org.uk,
y2038@...ts.linaro.org, Andreas Dilger <adilger.kernel@...ger.ca>,
linux-ext4@...r.kernel.org
Subject: [RFC 4/6] ext4: Initialize timestamps limits
ext4 has different overflow limits for max filesystem
timestamps based on the extra bytes available.
Signed-off-by: Deepa Dinamani <deepa.kernel@...il.com>
Cc: "Theodore Ts'o" <tytso@....edu>
Cc: Andreas Dilger <adilger.kernel@...ger.ca>
Cc: linux-ext4@...r.kernel.org
---
fs/ext4/ext4.h | 4 ++++
fs/ext4/super.c | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index aff204f..e15c081 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1636,6 +1636,10 @@ static inline void ext4_clear_state_flags(struct ext4_inode_info *ei)
#define EXT4_GOOD_OLD_INODE_SIZE 128
+#define EXT4_EXTRA_TIMESTAMP_MAX (((s64)1 << 34) - 1 + S32_MIN)
+#define EXT4_NON_EXTRA_TIMESTAMP_MAX Y2038_EXPIRY_TIMESTAMP
+#define EXT4_TIMESTAMP_MIN S32_MIN
+
/*
* Feature set definitions
*/
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 72b459d..0519c52 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3672,8 +3672,13 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
sbi->s_inode_size);
goto failed_mount;
}
- if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE)
+ if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
sb->s_time_gran = 1 << (EXT4_EPOCH_BITS - 2);
+ sb->s_time_max = EXT4_EXTRA_TIMESTAMP_MAX;
+ } else
+ sb->s_time_max = EXT4_NON_EXTRA_TIMESTAMP_MAX;
+
+ sb->s_time_min = EXT4_TIMESTAMP_MIN;
}
sbi->s_desc_size = le16_to_cpu(es->s_desc_size);
--
2.7.4
Powered by blists - more mailing lists