From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepa Dinamani Subject: [PATCH v5 1/5] vfs: Add file timestamp range support Date: Sat, 8 Apr 2017 12:37:43 -0700 Message-ID: <1491680267-11171-2-git-send-email-deepa.kernel@gmail.com> References: <1491680267-11171-1-git-send-email-deepa.kernel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: arnd@arndb.de, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, tglx@linutronix.de, torvalds@linux-foundation.org To: viro@zeniv.linux.org.uk, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org Return-path: In-Reply-To: <1491680267-11171-1-git-send-email-deepa.kernel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: y2038-bounces@lists.linaro.org Sender: "Y2038" List-Id: linux-ext4.vger.kernel.org QWRkIGZpZWxkcyB0byB0aGUgc3VwZXJibG9jayB0byB0cmFjayB0aGUgbWluIGFuZCBtYXgKdGlt ZXN0YW1wcyBzdXBwb3J0ZWQgYnkgZmlsZXN5c3RlbXMuCgpJbml0aWFsbHksIHdoZW4gYSBzdXBl cmJsb2NrIGlzIGFsbG9jYXRlZCwgaW5pdGlhbGl6ZQppdCB0byB0aGUgbWF4IGFuZCBtaW4gdmFs dWVzIHRoZSBmaWVsZHMgY2FuIGhvbGQuCkluZGl2aWR1YWwgZmlsZXN5c3RlbXMgb3ZlcnJpZGUg dGhlc2UgdG8gbWF0Y2ggdGhlaXIKYWN0dWFsIGxpbWl0cy4KClBzZXVkbyBmaWxlc3lzdGVtcyBh cmUgYXNzdW1lZCB0byBhbHdheXMgc3VwcG9ydCB0aGUKbWluIGFuZCBtYXggYWxsb3dhYmxlIHZh bHVlcyBmb3IgdGhlIGZpZWxkcy4KCk5vdGUgdGhhdCB0aGUgdGltZSByYW5nZXMgYXJlIHNhdmVk IGluIHR5cGUgdGltZTY0X3QKcmF0aGVyIHRoYW4gdGltZV90LgpUaGlzIGlzIHJlcXVpcmVkIGJl Y2F1c2UgaWYgd2Ugc2F2ZSByYW5nZXMgaW4gdGltZV90CnRoZW4gd2Ugd291bGQgbm90IGJlIGFi bGUgdG8gc2F2ZSB0aW1lc3RhbXAgcmFuZ2VzCmZvciBmaWxlcyB0aGF0IHN1cHBvcnQgdGltZXN0 YW1wcyBiZXlvbmQgeTIwMzguCgpTaWduZWQtb2ZmLWJ5OiBEZWVwYSBEaW5hbWFuaSA8ZGVlcGEu a2VybmVsQGdtYWlsLmNvbT4KLS0tCiBmcy9zdXBlci5jICAgICAgICAgICAgIHwgMiArKwogaW5j bHVkZS9saW51eC9mcy5oICAgICB8IDMgKysrCiBpbmNsdWRlL2xpbnV4L3RpbWU2NC5oIHwgMiAr KwogMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9mcy9zdXBl ci5jIGIvZnMvc3VwZXIuYwppbmRleCBiOGI2YTA4Li5mOWMyMjQxIDEwMDY0NAotLS0gYS9mcy9z dXBlci5jCisrKyBiL2ZzL3N1cGVyLmMKQEAgLTI0Nyw2ICsyNDcsOCBAQCBzdGF0aWMgc3RydWN0 IHN1cGVyX2Jsb2NrICphbGxvY19zdXBlcihzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSAqdHlwZSwg aW50IGZsYWdzLAogCXMtPnNfbWF4Ynl0ZXMgPSBNQVhfTk9OX0xGUzsKIAlzLT5zX29wID0gJmRl ZmF1bHRfb3A7CiAJcy0+c190aW1lX2dyYW4gPSAxMDAwMDAwMDAwOworCXMtPnNfdGltZV9taW4g PSBUSU1FNjRfTUlOOworCXMtPnNfdGltZV9tYXggPSBUSU1FNjRfTUFYOwogCXMtPmNsZWFuY2Fj aGVfcG9vbGlkID0gQ0xFQU5DQUNIRV9OT19QT09MOwogCiAJcy0+c19zaHJpbmsuc2Vla3MgPSBE RUZBVUxUX1NFRUtTOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mcy5oIGIvaW5jbHVkZS9s aW51eC9mcy5oCmluZGV4IDNjMThmYTYuLjYzZjgzNDQwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9mcy5oCkBAIC0xMzM3LDYgKzEzMzcsOSBAQCBz dHJ1Y3Qgc3VwZXJfYmxvY2sgewogCS8qIEdyYW51bGFyaXR5IG9mIGMvbS9hdGltZSBpbiBucy4K IAkgICBDYW5ub3QgYmUgd29yc2UgdGhhbiBhIHNlY29uZCAqLwogCXUzMgkJICAgc190aW1lX2dy YW47CisJLyogVGltZSBsaW1pdHMgZm9yIGMvbS9hdGltZSBpbiBzZWNvbmRzLiAqLworCXRpbWU2 NF90ICAgICAgICAgICBzX3RpbWVfbWluOworCXRpbWU2NF90ICAgICAgICAgICBzX3RpbWVfbWF4 OwogCiAJLyoKIAkgKiBUaGUgbmV4dCBmaWVsZCBpcyBmb3IgVkZTICpvbmx5Ki4gTm8gZmlsZXN5 c3RlbXMgaGF2ZSBhbnkgYnVzaW5lc3MKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdGltZTY0 LmggYi9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oCmluZGV4IDk4MGM3MWIuLjI1NDMzYjE4IDEwMDY0 NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RpbWU2NC5oCisrKyBiL2luY2x1ZGUvbGludXgvdGltZTY0 LmgKQEAgLTM4LDYgKzM4LDggQEAgc3RydWN0IGl0aW1lcnNwZWM2NCB7CiAKIC8qIExvY2F0ZWQg aGVyZSBmb3IgdGltZXNwZWNbNjRdX3ZhbGlkX3N0cmljdCAqLwogI2RlZmluZSBUSU1FNjRfTUFY CQkJKChzNjQpfigodTY0KTEgPDwgNjMpKQorI2RlZmluZSBUSU1FNjRfTUlOCQkJKC1USU1FNjRf TUFYIC0gMSkKKwogI2RlZmluZSBLVElNRV9NQVgJCQkoKHM2NCl+KCh1NjQpMSA8PCA2MykpCiAj ZGVmaW5lIEtUSU1FX1NFQ19NQVgJCQkoS1RJTUVfTUFYIC8gTlNFQ19QRVJfU0VDKQogCi0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWTIw MzggbWFpbGluZyBsaXN0ClkyMDM4QGxpc3RzLmxpbmFyby5vcmcKaHR0cHM6Ly9saXN0cy5saW5h cm8ub3JnL21haWxtYW4vbGlzdGluZm8veTIwMzgK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Deepa Dinamani To: viro@zeniv.linux.org.uk, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org Cc: torvalds@linux-foundation.org, tglx@linutronix.de, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, arnd@arndb.de, y2038@lists.linaro.org Subject: [PATCH v5 1/5] vfs: Add file timestamp range support Date: Sat, 8 Apr 2017 12:37:43 -0700 Message-Id: <1491680267-11171-2-git-send-email-deepa.kernel@gmail.com> In-Reply-To: <1491680267-11171-1-git-send-email-deepa.kernel@gmail.com> References: <1491680267-11171-1-git-send-email-deepa.kernel@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: Add fields to the superblock to track the min and max timestamps supported by filesystems. Initially, when a superblock is allocated, initialize it to the max and min values the fields can hold. Individual filesystems override these to match their actual limits. Pseudo filesystems are assumed to always support the min and max allowable values for the fields. Note that the time ranges are saved in type time64_t rather than time_t. This is required because if we save ranges in time_t then we would not be able to save timestamp ranges for files that support timestamps beyond y2038. Signed-off-by: Deepa Dinamani --- fs/super.c | 2 ++ include/linux/fs.h | 3 +++ include/linux/time64.h | 2 ++ 3 files changed, 7 insertions(+) diff --git a/fs/super.c b/fs/super.c index b8b6a08..f9c2241 100644 --- a/fs/super.c +++ b/fs/super.c @@ -247,6 +247,8 @@ static struct super_block *alloc_super(struct file_system_type *type, int flags, s->s_maxbytes = MAX_NON_LFS; s->s_op = &default_op; s->s_time_gran = 1000000000; + s->s_time_min = TIME64_MIN; + s->s_time_max = TIME64_MAX; s->cleancache_poolid = CLEANCACHE_NO_POOL; s->s_shrink.seeks = DEFAULT_SEEKS; diff --git a/include/linux/fs.h b/include/linux/fs.h index 3c18fa6..63f83440 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1337,6 +1337,9 @@ struct super_block { /* Granularity of c/m/atime in ns. Cannot be worse than a second */ u32 s_time_gran; + /* Time limits for c/m/atime in seconds. */ + time64_t s_time_min; + time64_t s_time_max; /* * The next field is for VFS *only*. No filesystems have any business diff --git a/include/linux/time64.h b/include/linux/time64.h index 980c71b..25433b18 100644 --- a/include/linux/time64.h +++ b/include/linux/time64.h @@ -38,6 +38,8 @@ struct itimerspec64 { /* Located here for timespec[64]_valid_strict */ #define TIME64_MAX ((s64)~((u64)1 << 63)) +#define TIME64_MIN (-TIME64_MAX - 1) + #define KTIME_MAX ((s64)~((u64)1 << 63)) #define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) -- 2.7.4