From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepa Dinamani Subject: [PATCH v4 1/5] vfs: Add file timestamp range support Date: Fri, 24 Feb 2017 17:40:59 -0800 Message-ID: <1487986863-6005-2-git-send-email-deepa.kernel@gmail.com> References: <1487986863-6005-1-git-send-email-deepa.kernel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org, linux-kernel@vger.kernel.org, arnd@arndb.de To: viro@zeniv.linux.org.uk, tytso@mit.edu, adilger.kernel@dilger.ca, linux-ext4@vger.kernel.org Return-path: In-Reply-To: <1487986863-6005-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 aW51eC9mcy5oCmluZGV4IGRlOGVkMGIuLmVmNTVkZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGlu dXgvZnMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmgKQEAgLTEzMzcsNiArMTMzNyw5IEBAIHN0 cnVjdCBzdXBlcl9ibG9jayB7CiAJLyogR3JhbnVsYXJpdHkgb2YgYy9tL2F0aW1lIGluIG5zLgog CSAgIENhbm5vdCBiZSB3b3JzZSB0aGFuIGEgc2Vjb25kICovCiAJdTMyCQkgICBzX3RpbWVfZ3Jh bjsKKwkvKiBUaW1lIGxpbWl0cyBmb3IgYy9tL2F0aW1lIGluIHNlY29uZHMuICovCisJdGltZTY0 X3QgICAgICAgICAgIHNfdGltZV9taW47CisJdGltZTY0X3QgICAgICAgICAgIHNfdGltZV9tYXg7 CiAKIAkvKgogCSAqIFRoZSBuZXh0IGZpZWxkIGlzIGZvciBWRlMgKm9ubHkqLiBObyBmaWxlc3lz dGVtcyBoYXZlIGFueSBidXNpbmVzcwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1lNjQu aCBiL2luY2x1ZGUvbGludXgvdGltZTY0LmgKaW5kZXggOTgwYzcxYi4uMjU0MzNiMTggMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvbGludXgvdGltZTY0LmgKKysrIGIvaW5jbHVkZS9saW51eC90aW1lNjQu aApAQCAtMzgsNiArMzgsOCBAQCBzdHJ1Y3QgaXRpbWVyc3BlYzY0IHsKIAogLyogTG9jYXRlZCBo ZXJlIGZvciB0aW1lc3BlY1s2NF1fdmFsaWRfc3RyaWN0ICovCiAjZGVmaW5lIFRJTUU2NF9NQVgJ CQkoKHM2NCl+KCh1NjQpMSA8PCA2MykpCisjZGVmaW5lIFRJTUU2NF9NSU4JCQkoLVRJTUU2NF9N QVggLSAxKQorCiAjZGVmaW5lIEtUSU1FX01BWAkJCSgoczY0KX4oKHU2NCkxIDw8IDYzKSkKICNk ZWZpbmUgS1RJTUVfU0VDX01BWAkJCShLVElNRV9NQVggLyBOU0VDX1BFUl9TRUMpCiAKLS0gCjIu Ny40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpZMjAz OCBtYWlsaW5nIGxpc3QKWTIwMzhAbGlzdHMubGluYXJvLm9yZwpodHRwczovL2xpc3RzLmxpbmFy by5vcmcvbWFpbG1hbi9saXN0aW5mby95MjAzOAo= 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: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, arnd@arndb.de, y2038@lists.linaro.org Subject: [PATCH v4 1/5] vfs: Add file timestamp range support Date: Fri, 24 Feb 2017 17:40:59 -0800 Message-Id: <1487986863-6005-2-git-send-email-deepa.kernel@gmail.com> In-Reply-To: <1487986863-6005-1-git-send-email-deepa.kernel@gmail.com> References: <1487986863-6005-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 de8ed0b..ef55dfb 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