From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepa Dinamani Subject: [PATCH 02/21] fs: ext4: Use current_fs_time() for inode timestamps Date: Wed, 8 Jun 2016 22:04:46 -0700 Message-ID: <1465448705-25055-3-git-send-email-deepa.kernel@gmail.com> References: <1465448705-25055-1-git-send-email-deepa.kernel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: Theodore Ts'o , Arnd Bergmann , y2038@lists.linaro.org, Andreas Dilger , Al Viro , Thomas Gleixner , linux-ext4@vger.kernel.org, Linus Torvalds To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1465448705-25055-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 Q1VSUkVOVF9USU1FX1NFQyBhbmQgQ1VSUkVOVF9USU1FIGFyZSBub3QgeTIwMzggc2FmZS4KY3Vy cmVudF9mc190aW1lKCkgd2lsbCBiZSB0cmFuc2l0aW9uZWQgdG8gYmUgeTIwMzggc2FmZQphbG9u ZyB3aXRoIHZmcy4KCmN1cnJlbnRfZnNfdGltZSgpIHJldHVybnMgdGltZXN0YW1wcyBhY2NvcmRp bmcgdG8gdGhlCmdyYW51bGFyaXRpZXMgc2V0IGluIHRoZSBzdXBlcl9ibG9jay4KVGhlIGdyYW51 bGFyaXR5IGNoZWNrIHRvIGNhbGwgY3VycmVudF9mc190aW1lKCkgb3IKQ1VSUkVOVF9USU1FX1NF QyBpcyBub3QgcmVxdWlyZWQuClVzZSBjdXJyZW50X2ZzX3RpbWUoKSB0byBvYnRhaW4gdGltZXN0 YW1wcwp1bmNvbmRpdGlvbmFsbHkuCgpRdW90YSBmaWxlcyBhcmUgYXNzdW1lZCB0byBiZSBvbiB0 aGUgc2FtZSBmaWxlc3lzdGVtLgpIZW5jZSwgdXNlIGN1cnJlbnRfZnNfdGltZSgpIGZvciB0aGVz ZSBmaWxlcyBhcyB3ZWxsLgoKU2lnbmVkLW9mZi1ieTogRGVlcGEgRGluYW1hbmkgPGRlZXBhLmtl cm5lbEBnbWFpbC5jb20+CkNjOiAiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CkNjOiBB bmRyZWFzIERpbGdlciA8YWRpbGdlci5rZXJuZWxAZGlsZ2VyLmNhPgpDYzogbGludXgtZXh0NEB2 Z2VyLmtlcm5lbC5vcmcKLS0tCiBmcy9leHQ0L2FjbC5jICAgICB8ICAyICstCiBmcy9leHQ0L2V4 dDQuaCAgICB8ICA2IC0tLS0tLQogZnMvZXh0NC9leHRlbnRzLmMgfCAxMCArKysrKy0tLS0tCiBm cy9leHQ0L2lhbGxvYy5jICB8ICAyICstCiBmcy9leHQ0L2lubGluZS5jICB8ICA0ICsrLS0KIGZz L2V4dDQvaW5vZGUuYyAgIHwgIDYgKysrLS0tCiBmcy9leHQ0L2lvY3RsLmMgICB8ICA4ICsrKyst LS0tCiBmcy9leHQ0L25hbWVpLmMgICB8IDI0ICsrKysrKysrKysrKystLS0tLS0tLS0tLQogZnMv ZXh0NC9zdXBlci5jICAgfCAgMiArLQogZnMvZXh0NC94YXR0ci5jICAgfCAgMiArLQogMTAgZmls ZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZnMvZXh0NC9hY2wuYyBiL2ZzL2V4dDQvYWNsLmMKaW5kZXggYzY2MDFhNC4uZjk0NjljYyAx MDA2NDQKLS0tIGEvZnMvZXh0NC9hY2wuYworKysgYi9mcy9leHQ0L2FjbC5jCkBAIC0xOTcsNyAr MTk3LDcgQEAgX19leHQ0X3NldF9hY2woaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICpp bm9kZSwgaW50IHR5cGUsCiAJCQlpZiAoZXJyb3IgPCAwKQogCQkJCXJldHVybiBlcnJvcjsKIAkJ CWVsc2UgewotCQkJCWlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOwor CQkJCWlub2RlLT5pX2N0aW1lID0gY3VycmVudF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAkJCQll eHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAJCQkJaWYgKGVycm9yID09IDAp CiAJCQkJCWFjbCA9IE5VTEw7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dDQuaCBiL2ZzL2V4dDQv ZXh0NC5oCmluZGV4IGI4NGFhMWMuLjE0ZTVjZjQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvZXh0NC5o CisrKyBiL2ZzL2V4dDQvZXh0NC5oCkBAIC0xNTIzLDEyICsxNTIzLDYgQEAgc3RhdGljIGlubGlu ZSBzdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvICpFWFQ0X0koc3RydWN0IGlub2RlICppbm9kZSkKIAly ZXR1cm4gY29udGFpbmVyX29mKGlub2RlLCBzdHJ1Y3QgZXh0NF9pbm9kZV9pbmZvLCB2ZnNfaW5v ZGUpOwogfQogCi1zdGF0aWMgaW5saW5lIHN0cnVjdCB0aW1lc3BlYyBleHQ0X2N1cnJlbnRfdGlt ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQotewotCXJldHVybiAoaW5vZGUtPmlfc2ItPnNfdGltZV9n cmFuIDwgTlNFQ19QRVJfU0VDKSA/Ci0JCWN1cnJlbnRfZnNfdGltZShpbm9kZS0+aV9zYikgOiBD VVJSRU5UX1RJTUVfU0VDOwotfQotCiBzdGF0aWMgaW5saW5lIGludCBleHQ0X3ZhbGlkX2ludW0o c3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBpbm8pCiB7CiAJcmV0dXJuIGlu byA9PSBFWFQ0X1JPT1RfSU5PIHx8CmRpZmYgLS1naXQgYS9mcy9leHQ0L2V4dGVudHMuYyBiL2Zz L2V4dDQvZXh0ZW50cy5jCmluZGV4IDJhMmVlZjkuLmFjMzAzYmUgMTAwNjQ0Ci0tLSBhL2ZzL2V4 dDQvZXh0ZW50cy5jCisrKyBiL2ZzL2V4dDQvZXh0ZW50cy5jCkBAIC00NzIyLDcgKzQ3MjIsNyBA QCByZXRyeToKIAkJbWFwLm1fbGJsayArPSByZXQ7CiAJCW1hcC5tX2xlbiA9IGxlbiA9IGxlbiAt IHJldDsKIAkJZXBvcyA9IChsb2ZmX3QpbWFwLm1fbGJsayA8PCBpbm9kZS0+aV9ibGtiaXRzOwot CQlpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwkJaW5vZGUtPmlf Y3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCQlpZiAobmV3X3NpemUpIHsK IAkJCWlmIChlcG9zID4gbmV3X3NpemUpCiAJCQkJZXBvcyA9IG5ld19zaXplOwpAQCAtNDg1MCw3 ICs0ODUwLDcgQEAgc3RhdGljIGxvbmcgZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxl LCBsb2ZmX3Qgb2Zmc2V0LAogCQl9CiAJCS8qIE5vdyByZWxlYXNlIHRoZSBwYWdlcyBhbmQgemVy byBibG9jayBhbGlnbmVkIHBhcnQgb2YgcGFnZXMgKi8KIAkJdHJ1bmNhdGVfcGFnZWNhY2hlX3Jh bmdlKGlub2RlLCBzdGFydCwgZW5kIC0gMSk7Ci0JCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlf Y3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJCWlub2RlLT5pX210aW1lID0gaW5v ZGUtPmlfY3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCiAJCXJldCA9IGV4 dDRfYWxsb2NfZmlsZV9ibG9ja3MoZmlsZSwgbGJsaywgbWF4X2Jsb2NrcywgbmV3X3NpemUsCiAJ CQkJCSAgICAgZmxhZ3MsIG1vZGUpOwpAQCAtNDg3NSw3ICs0ODc1LDcgQEAgc3RhdGljIGxvbmcg ZXh0NF96ZXJvX3JhbmdlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LAogCQlnb3Rv IG91dF9kaW87CiAJfQogCi0JaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGV4dDRf Y3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0g Y3VycmVudF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAlpZiAobmV3X3NpemUpIHsKIAkJZXh0NF91 cGRhdGVfaW5vZGVfc2l6ZShpbm9kZSwgbmV3X3NpemUpOwogCX0gZWxzZSB7CkBAIC01NTc0LDcg KzU1NzQsNyBAQCBpbnQgZXh0NF9jb2xsYXBzZV9yYW5nZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBs b2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQogCXVwX3dyaXRlKCZFWFQ0X0koaW5vZGUpLT5pX2Rh dGFfc2VtKTsKIAlpZiAoSVNfU1lOQyhpbm9kZSkpCiAJCWV4dDRfaGFuZGxlX3N5bmMoaGFuZGxl KTsKLQlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUo aW5vZGUpOworCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50X2ZzX3Rp bWUoaW5vZGUtPmlfc2IpOwogCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTsK IAogb3V0X3N0b3A6CkBAIC01Njg0LDcgKzU2ODQsNyBAQCBpbnQgZXh0NF9pbnNlcnRfcmFuZ2Uo c3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbikKIAkvKiBFeHBh bmQgZmlsZSB0byBhdm9pZCBkYXRhIGxvc3MgaWYgdGhlcmUgaXMgZXJyb3Igd2hpbGUgc2hpZnRp bmcgKi8KIAlpbm9kZS0+aV9zaXplICs9IGxlbjsKIAlFWFQ0X0koaW5vZGUpLT5pX2Rpc2tzaXpl ICs9IGxlbjsKLQlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50 X3RpbWUoaW5vZGUpOworCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50 X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCXJldCA9IGV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5k bGUsIGlub2RlKTsKIAlpZiAocmV0KQogCQlnb3RvIG91dF9zdG9wOwpkaWZmIC0tZ2l0IGEvZnMv ZXh0NC9pYWxsb2MuYyBiL2ZzL2V4dDQvaWFsbG9jLmMKaW5kZXggM2RhNGNmOC4uMTUyZWYzOCAx MDA2NDQKLS0tIGEvZnMvZXh0NC9pYWxsb2MuYworKysgYi9mcy9leHQ0L2lhbGxvYy5jCkBAIC0x MDM5LDcgKzEwMzksNyBAQCBnb3Q6CiAJLyogVGhpcyBpcyB0aGUgb3B0aW1hbCBJTyBzaXplIChm b3Igc3RhdCksIG5vdCB0aGUgZnMgYmxvY2sgc2l6ZSAqLwogCWlub2RlLT5pX2Jsb2NrcyA9IDA7 CiAJaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9hdGltZSA9IGlub2RlLT5pX2N0aW1lID0gZWkt PmlfY3J0aW1lID0KLQkJCQkJCSAgICAgICBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJCQkJ CQkgICAgICAgY3VycmVudF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAogCW1lbXNldChlaS0+aV9k YXRhLCAwLCBzaXplb2YoZWktPmlfZGF0YSkpOwogCWVpLT5pX2Rpcl9zdGFydF9sb29rdXAgPSAw OwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbmxpbmUuYyBiL2ZzL2V4dDQvaW5saW5lLmMKaW5kZXgg ZmY3NTM4Yy4uNjdiM2ZlOCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9pbmxpbmUuYworKysgYi9mcy9l eHQ0L2lubGluZS5jCkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBzdGF0aWMgaW50IGV4dDRfYWRkX2Rp cmVudF90b19pbmxpbmUoaGFuZGxlX3QgKmhhbmRsZSwKIAkgKiBoYXBwZW4gaXMgdGhhdCB0aGUg dGltZXMgYXJlIHNsaWdodGx5IG91dCBvZiBkYXRlCiAJICogYW5kL29yIGRpZmZlcmVudCBmcm9t IHRoZSBkaXJlY3RvcnkgY2hhbmdlIHRpbWUuCiAJICovCi0JZGlyLT5pX210aW1lID0gZGlyLT5p X2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoZGlyKTsKKwlkaXItPmlfbXRpbWUgPSBkaXItPmlf Y3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoZGlyLT5pX3NiKTsKIAlleHQ0X3VwZGF0ZV9keF9mbGFn KGRpcik7CiAJZGlyLT5pX3ZlcnNpb24rKzsKIAlleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxl LCBkaXIpOwpAQCAtMTk3MSw3ICsxOTcxLDcgQEAgb3V0OgogCWlmIChpbm9kZS0+aV9ubGluaykK IAkJZXh0NF9vcnBoYW5fZGVsKGhhbmRsZSwgaW5vZGUpOwogCi0JaW5vZGUtPmlfbXRpbWUgPSBp bm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9tdGlt ZSA9IGlub2RlLT5pX2N0aW1lID0gY3VycmVudF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAlleHQ0 X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAJaWYgKElTX1NZTkMoaW5vZGUpKQog CQlleHQ0X2hhbmRsZV9zeW5jKGhhbmRsZSk7CmRpZmYgLS1naXQgYS9mcy9leHQ0L2lub2RlLmMg Yi9mcy9leHQ0L2lub2RlLmMKaW5kZXggZjcxNDBjYS4uMTU0NmMwMiAxMDA2NDQKLS0tIGEvZnMv ZXh0NC9pbm9kZS5jCisrKyBiL2ZzL2V4dDQvaW5vZGUuYwpAQCAtMzk5MSw3ICszOTkxLDcgQEAg aW50IGV4dDRfcHVuY2hfaG9sZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBs b2ZmX3QgbGVuZ3RoKQogCWlmIChJU19TWU5DKGlub2RlKSkKIAkJZXh0NF9oYW5kbGVfc3luYyho YW5kbGUpOwogCi0JaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVu dF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gY3VycmVu dF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAlleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBp bm9kZSk7CiBvdXRfc3RvcDoKIAlleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpOwpAQCAtNDE0NSw3 ICs0MTQ1LDcgQEAgb3V0X3N0b3A6CiAJaWYgKGlub2RlLT5pX25saW5rKQogCQlleHQ0X29ycGhh bl9kZWwoaGFuZGxlLCBpbm9kZSk7CiAKLQlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1l ID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlf Y3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCWV4dDRfbWFya19pbm9kZV9k aXJ0eShoYW5kbGUsIGlub2RlKTsKIAlleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpOwogCkBAIC01 MTIwLDcgKzUxMjAsNyBAQCBpbnQgZXh0NF9zZXRhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg c3RydWN0IGlhdHRyICphdHRyKQogCQkJICogdXBkYXRlIGMvbXRpbWUgaW4gc2hyaW5rIGNhc2Ug YmVsb3cKIAkJCSAqLwogCQkJaWYgKCFzaHJpbmspIHsKLQkJCQlpbm9kZS0+aV9tdGltZSA9IGV4 dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwkJCQlpbm9kZS0+aV9tdGltZSA9IGN1cnJlbnRfZnNf dGltZShpbm9kZS0+aV9zYik7CiAJCQkJaW5vZGUtPmlfY3RpbWUgPSBpbm9kZS0+aV9tdGltZTsK IAkJCX0KIAkJCWRvd25fd3JpdGUoJkVYVDRfSShpbm9kZSktPmlfZGF0YV9zZW0pOwpkaWZmIC0t Z2l0IGEvZnMvZXh0NC9pb2N0bC5jIGIvZnMvZXh0NC9pb2N0bC5jCmluZGV4IDI4Y2M0MTIuLmZi NDI5YWMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW9jdGwuYworKysgYi9mcy9leHQ0L2lvY3RsLmMK QEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgbG9uZyBzd2FwX2lub2RlX2Jvb3RfbG9hZGVyKHN0 cnVjdCBzdXBlcl9ibG9jayAqc2IsCiAKIAlzd2FwX2lub2RlX2RhdGEoaW5vZGUsIGlub2RlX2Js KTsKIAotCWlub2RlLT5pX2N0aW1lID0gaW5vZGVfYmwtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRf dGltZShpbm9kZSk7CisJaW5vZGUtPmlfY3RpbWUgPSBpbm9kZV9ibC0+aV9jdGltZSA9IGN1cnJl bnRfZnNfdGltZShpbm9kZS0+aV9zYik7CiAKIAlzcGluX2xvY2soJnNiaS0+c19uZXh0X2dlbl9s b2NrKTsKIAlpbm9kZS0+aV9nZW5lcmF0aW9uID0gc2JpLT5zX25leHRfZ2VuZXJhdGlvbisrOwpA QCAtMjc0LDcgKzI3NCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9zZXRmbGFncyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLAogCX0KIAogCWV4dDRfc2V0X2lub2RlX2ZsYWdzKGlub2RlKTsKLQlpbm9k ZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9jdGltZSA9 IGN1cnJlbnRfZnNfdGltZShpbm9kZS0+aV9zYik7CiAKIAllcnIgPSBleHQ0X21hcmtfaWxvY19k aXJ0eShoYW5kbGUsIGlub2RlLCAmaWxvYyk7CiBmbGFnc19lcnI6CkBAIC0zNzMsNyArMzczLDcg QEAgc3RhdGljIGludCBleHQ0X2lvY3RsX3NldHByb2plY3Qoc3RydWN0IGZpbGUgKmZpbHAsIF9f dTMyIHByb2ppZCkKIAkJfQogCX0KIAlFWFQ0X0koaW5vZGUpLT5pX3Byb2ppZCA9IGtwcm9qaWQ7 Ci0JaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJaW5vZGUtPmlf Y3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogb3V0X2RpcnR5OgogCXJjID0g ZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgJmlsb2MpOwogCWlmICghZXJyKQpA QCAtNTA1LDcgKzUwNSw3IEBAIGxvbmcgZXh0NF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCX0KIAkJZXJyID0gZXh0NF9yZXNl cnZlX2lub2RlX3dyaXRlKGhhbmRsZSwgaW5vZGUsICZpbG9jKTsKIAkJaWYgKGVyciA9PSAwKSB7 Ci0JCQlpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwkJCWlub2Rl LT5pX2N0aW1lID0gY3VycmVudF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAkJCWlub2RlLT5pX2dl bmVyYXRpb24gPSBnZW5lcmF0aW9uOwogCQkJZXJyID0gZXh0NF9tYXJrX2lsb2NfZGlydHkoaGFu ZGxlLCBpbm9kZSwgJmlsb2MpOwogCQl9CmRpZmYgLS1naXQgYS9mcy9leHQ0L25hbWVpLmMgYi9m cy9leHQ0L25hbWVpLmMKaW5kZXggZWM0YzM5OS4uYzRjYzAxZCAxMDA2NDQKLS0tIGEvZnMvZXh0 NC9uYW1laS5jCisrKyBiL2ZzL2V4dDQvbmFtZWkuYwpAQCAtMTkzOSw3ICsxOTM5LDcgQEAgc3Rh dGljIGludCBhZGRfZGlyZW50X3RvX2J1ZihoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgZXh0NF9m aWxlbmFtZSAqZm5hbWUsCiAJICogaGFwcGVuIGlzIHRoYXQgdGhlIHRpbWVzIGFyZSBzbGlnaHRs eSBvdXQgb2YgZGF0ZQogCSAqIGFuZC9vciBkaWZmZXJlbnQgZnJvbSB0aGUgZGlyZWN0b3J5IGNo YW5nZSB0aW1lLgogCSAqLwotCWRpci0+aV9tdGltZSA9IGRpci0+aV9jdGltZSA9IGV4dDRfY3Vy cmVudF90aW1lKGRpcik7CisJZGlyLT5pX210aW1lID0gZGlyLT5pX2N0aW1lID0gY3VycmVudF9m c190aW1lKGRpci0+aV9zYik7CiAJZXh0NF91cGRhdGVfZHhfZmxhZyhkaXIpOwogCWRpci0+aV92 ZXJzaW9uKys7CiAJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgZGlyKTsKQEAgLTI5ODgs NyArMjk4OCw3IEBAIHN0YXRpYyBpbnQgZXh0NF9ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3Ry dWN0IGRlbnRyeSAqZGVudHJ5KQogCSAqIHJlY292ZXJ5LiAqLwogCWlub2RlLT5pX3NpemUgPSAw OwogCWV4dDRfb3JwaGFuX2FkZChoYW5kbGUsIGlub2RlKTsKLQlpbm9kZS0+aV9jdGltZSA9IGRp ci0+aV9jdGltZSA9IGRpci0+aV9tdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlp bm9kZS0+aV9jdGltZSA9IGRpci0+aV9jdGltZSA9IGRpci0+aV9tdGltZSA9IGN1cnJlbnRfZnNf dGltZShpbm9kZS0+aV9zYik7CiAJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUp OwogCWV4dDRfZGVjX2NvdW50KGhhbmRsZSwgZGlyKTsKIAlleHQ0X3VwZGF0ZV9keF9mbGFnKGRp cik7CkBAIC0zMDUxLDEzICszMDUxLDEzIEBAIHN0YXRpYyBpbnQgZXh0NF91bmxpbmsoc3RydWN0 IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKIAlyZXR2YWwgPSBleHQ0X2RlbGV0 ZV9lbnRyeShoYW5kbGUsIGRpciwgZGUsIGJoKTsKIAlpZiAocmV0dmFsKQogCQlnb3RvIGVuZF91 bmxpbms7Ci0JZGlyLT5pX2N0aW1lID0gZGlyLT5pX210aW1lID0gZXh0NF9jdXJyZW50X3RpbWUo ZGlyKTsKKwlkaXItPmlfY3RpbWUgPSBkaXItPmlfbXRpbWUgPSBjdXJyZW50X2ZzX3RpbWUoZGly LT5pX3NiKTsKIAlleHQ0X3VwZGF0ZV9keF9mbGFnKGRpcik7CiAJZXh0NF9tYXJrX2lub2RlX2Rp cnR5KGhhbmRsZSwgZGlyKTsKIAlkcm9wX25saW5rKGlub2RlKTsKIAlpZiAoIWlub2RlLT5pX25s aW5rKQogCQlleHQ0X29ycGhhbl9hZGQoaGFuZGxlLCBpbm9kZSk7Ci0JaW5vZGUtPmlfY3RpbWUg PSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50X2Zz X3RpbWUoaW5vZGUtPmlfc2IpOwogCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2Rl KTsKIAogZW5kX3VubGluazoKQEAgLTMyNTYsNyArMzI1Niw3IEBAIHJldHJ5OgogCWlmIChJU19E SVJTWU5DKGRpcikpCiAJCWV4dDRfaGFuZGxlX3N5bmMoaGFuZGxlKTsKIAotCWlub2RlLT5pX2N0 aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCWlub2RlLT5pX2N0aW1lID0gY3VycmVu dF9mc190aW1lKGlub2RlLT5pX3NiKTsKIAlleHQ0X2luY19jb3VudChoYW5kbGUsIGlub2RlKTsK IAlpaG9sZChpbm9kZSk7CiAKQEAgLTMzODMsNyArMzM4Myw3IEBAIHN0YXRpYyBpbnQgZXh0NF9z ZXRlbnQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGV4dDRfcmVuYW1lbnQgKmVudCwKIAkJZW50 LT5kZS0+ZmlsZV90eXBlID0gZmlsZV90eXBlOwogCWVudC0+ZGlyLT5pX3ZlcnNpb24rKzsKIAll bnQtPmRpci0+aV9jdGltZSA9IGVudC0+ZGlyLT5pX210aW1lID0KLQkJZXh0NF9jdXJyZW50X3Rp bWUoZW50LT5kaXIpOworCQljdXJyZW50X2ZzX3RpbWUoZW50LT5kaXItPmlfc2IpOwogCWV4dDRf bWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGVudC0+ZGlyKTsKIAlCVUZGRVJfVFJBQ0UoZW50LT5i aCwgImNhbGwgZXh0NF9oYW5kbGVfZGlydHlfbWV0YWRhdGEiKTsKIAlpZiAoIWVudC0+aW5saW5l ZCkgewpAQCAtMzY1NCw3ICszNjU0LDcgQEAgc3RhdGljIGludCBleHQ0X3JlbmFtZShzdHJ1Y3Qg aW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCiAJICogTGlrZSBtb3N0 IG90aGVyIFVuaXggc3lzdGVtcywgc2V0IHRoZSBjdGltZSBmb3IgaW5vZGVzIG9uIGEKIAkgKiBy ZW5hbWUuCiAJICovCi0Jb2xkLmlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUob2xk Lmlub2RlKTsKKwlvbGQuaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUob2xkLmlub2Rl LT5pX3NiKTsKIAlleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBvbGQuaW5vZGUpOwogCiAJ aWYgKCF3aGl0ZW91dCkgewpAQCAtMzY2Niw5ICszNjY2LDkgQEAgc3RhdGljIGludCBleHQ0X3Jl bmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCiAK IAlpZiAobmV3Lmlub2RlKSB7CiAJCWV4dDRfZGVjX2NvdW50KGhhbmRsZSwgbmV3Lmlub2RlKTsK LQkJbmV3Lmlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUobmV3Lmlub2RlKTsKKwkJ bmV3Lmlub2RlLT5pX2N0aW1lID0gY3VycmVudF9mc190aW1lKG5ldy5pbm9kZS0+aV9zYik7CiAJ fQotCW9sZC5kaXItPmlfY3RpbWUgPSBvbGQuZGlyLT5pX210aW1lID0gZXh0NF9jdXJyZW50X3Rp bWUob2xkLmRpcik7CisJb2xkLmRpci0+aV9jdGltZSA9IG9sZC5kaXItPmlfbXRpbWUgPSBjdXJy ZW50X2ZzX3RpbWUob2xkLmRpci0+aV9zYik7CiAJZXh0NF91cGRhdGVfZHhfZmxhZyhvbGQuZGly KTsKIAlpZiAob2xkLmRpcl9iaCkgewogCQlyZXR2YWwgPSBleHQ0X3JlbmFtZV9kaXJfZmluaXNo KGhhbmRsZSwgJm9sZCwgbmV3LmRpci0+aV9pbm8pOwpAQCAtMzcyNiw2ICszNzI2LDcgQEAgc3Rh dGljIGludCBleHQ0X2Nyb3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBk ZW50cnkgKm9sZF9kZW50cnksCiAJfTsKIAl1OCBuZXdfZmlsZV90eXBlOwogCWludCByZXR2YWw7 CisJc3RydWN0IHRpbWVzcGVjIGN0aW1lOwogCiAJaWYgKChleHQ0X2VuY3J5cHRlZF9pbm9kZShv bGRfZGlyKSB8fAogCSAgICAgZXh0NF9lbmNyeXB0ZWRfaW5vZGUobmV3X2RpcikpICYmCkBAIC0z ODI4LDggKzM4MjksOSBAQCBzdGF0aWMgaW50IGV4dDRfY3Jvc3NfcmVuYW1lKHN0cnVjdCBpbm9k ZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwKIAkgKiBMaWtlIG1vc3Qgb3Ro ZXIgVW5peCBzeXN0ZW1zLCBzZXQgdGhlIGN0aW1lIGZvciBpbm9kZXMgb24gYQogCSAqIHJlbmFt ZS4KIAkgKi8KLQlvbGQuaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShvbGQuaW5v ZGUpOwotCW5ldy5pbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKG5ldy5pbm9kZSk7 CisJY3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUob2xkLmlub2RlLT5pX3NiKTsKKwlvbGQuaW5vZGUt PmlfY3RpbWUgPSBjdGltZTsKKwluZXcuaW5vZGUtPmlfY3RpbWUgPSBjdGltZTsKIAlleHQ0X21h cmtfaW5vZGVfZGlydHkoaGFuZGxlLCBvbGQuaW5vZGUpOwogCWV4dDRfbWFya19pbm9kZV9kaXJ0 eShoYW5kbGUsIG5ldy5pbm9kZSk7CiAKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2Zz L2V4dDQvc3VwZXIuYwppbmRleCAzODIyYTVhLi5jMzljYjdjIDEwMDY0NAotLS0gYS9mcy9leHQ0 L3N1cGVyLmMKKysrIGIvZnMvZXh0NC9zdXBlci5jCkBAIC01MTY1LDcgKzUxNjUsNyBAQCBzdGF0 aWMgaW50IGV4dDRfcXVvdGFfb2ZmKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlKQog CWhhbmRsZSA9IGV4dDRfam91cm5hbF9zdGFydChpbm9kZSwgRVhUNF9IVF9RVU9UQSwgMSk7CiAJ aWYgKElTX0VSUihoYW5kbGUpKQogCQlnb3RvIG91dDsKLQlpbm9kZS0+aV9tdGltZSA9IGlub2Rl LT5pX2N0aW1lID0gQ1VSUkVOVF9USU1FOworCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfY3Rp bWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCWV4dDRfbWFya19pbm9kZV9kaXJ0 eShoYW5kbGUsIGlub2RlKTsKIAlleHQ0X2pvdXJuYWxfc3RvcChoYW5kbGUpOwogCmRpZmYgLS1n aXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggZTc5YmQzMi4uODA4 NjA5YyAxMDA2NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5jCisrKyBiL2ZzL2V4dDQveGF0dHIuYwpA QCAtMTI1Myw3ICsxMjUzLDcgQEAgZXh0NF94YXR0cl9zZXRfaGFuZGxlKGhhbmRsZV90ICpoYW5k bGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LAogCX0KIAlpZiAoIWVycm9y KSB7CiAJCWV4dDRfeGF0dHJfdXBkYXRlX3N1cGVyX2Jsb2NrKGhhbmRsZSwgaW5vZGUtPmlfc2Ip OwotCQlpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwkJaW5vZGUt PmlfY3RpbWUgPSBjdXJyZW50X2ZzX3RpbWUoaW5vZGUtPmlfc2IpOwogCQlpZiAoIXZhbHVlKQog CQkJZXh0NF9jbGVhcl9pbm9kZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9OT19FWFBBTkQpOwog CQllcnJvciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsICZpcy5pbG9jKTsK LS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpZMjAzOCBtYWlsaW5nIGxpc3QKWTIwMzhAbGlzdHMubGluYXJvLm9yZwpodHRwczovL2xpc3Rz LmxpbmFyby5vcmcvbWFpbG1hbi9saXN0aW5mby95MjAzOAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f196.google.com ([209.85.192.196]:36431 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754008AbcFIFFk (ORCPT ); Thu, 9 Jun 2016 01:05:40 -0400 From: Deepa Dinamani To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Thomas Gleixner , Al Viro , Linus Torvalds , y2038@lists.linaro.org, "Theodore Ts'o" , Andreas Dilger , linux-ext4@vger.kernel.org Subject: [PATCH 02/21] fs: ext4: Use current_fs_time() for inode timestamps Date: Wed, 8 Jun 2016 22:04:46 -0700 Message-Id: <1465448705-25055-3-git-send-email-deepa.kernel@gmail.com> In-Reply-To: <1465448705-25055-1-git-send-email-deepa.kernel@gmail.com> References: <1465448705-25055-1-git-send-email-deepa.kernel@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: CURRENT_TIME_SEC and CURRENT_TIME are not y2038 safe. current_fs_time() will be transitioned to be y2038 safe along with vfs. current_fs_time() returns timestamps according to the granularities set in the super_block. The granularity check to call current_fs_time() or CURRENT_TIME_SEC is not required. Use current_fs_time() to obtain timestamps unconditionally. Quota files are assumed to be on the same filesystem. Hence, use current_fs_time() for these files as well. Signed-off-by: Deepa Dinamani Cc: "Theodore Ts'o" Cc: Andreas Dilger Cc: linux-ext4@vger.kernel.org --- fs/ext4/acl.c | 2 +- fs/ext4/ext4.h | 6 ------ fs/ext4/extents.c | 10 +++++----- fs/ext4/ialloc.c | 2 +- fs/ext4/inline.c | 4 ++-- fs/ext4/inode.c | 6 +++--- fs/ext4/ioctl.c | 8 ++++---- fs/ext4/namei.c | 24 +++++++++++++----------- fs/ext4/super.c | 2 +- fs/ext4/xattr.c | 2 +- 10 files changed, 31 insertions(+), 35 deletions(-) diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c index c6601a4..f9469cc 100644 --- a/fs/ext4/acl.c +++ b/fs/ext4/acl.c @@ -197,7 +197,7 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type, if (error < 0) return error; else { - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); if (error == 0) acl = NULL; diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index b84aa1c..14e5cf4 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -1523,12 +1523,6 @@ static inline struct ext4_inode_info *EXT4_I(struct inode *inode) return container_of(inode, struct ext4_inode_info, vfs_inode); } -static inline struct timespec ext4_current_time(struct inode *inode) -{ - return (inode->i_sb->s_time_gran < NSEC_PER_SEC) ? - current_fs_time(inode->i_sb) : CURRENT_TIME_SEC; -} - static inline int ext4_valid_inum(struct super_block *sb, unsigned long ino) { return ino == EXT4_ROOT_INO || diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 2a2eef9..ac303be 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4722,7 +4722,7 @@ retry: map.m_lblk += ret; map.m_len = len = len - ret; epos = (loff_t)map.m_lblk << inode->i_blkbits; - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); if (new_size) { if (epos > new_size) epos = new_size; @@ -4850,7 +4850,7 @@ static long ext4_zero_range(struct file *file, loff_t offset, } /* Now release the pages and zero block aligned part of pages */ truncate_pagecache_range(inode, start, end - 1); - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, flags, mode); @@ -4875,7 +4875,7 @@ static long ext4_zero_range(struct file *file, loff_t offset, goto out_dio; } - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); if (new_size) { ext4_update_inode_size(inode, new_size); } else { @@ -5574,7 +5574,7 @@ int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) up_write(&EXT4_I(inode)->i_data_sem); if (IS_SYNC(inode)) ext4_handle_sync(handle); - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); out_stop: @@ -5684,7 +5684,7 @@ int ext4_insert_range(struct inode *inode, loff_t offset, loff_t len) /* Expand file to avoid data loss if there is error while shifting */ inode->i_size += len; EXT4_I(inode)->i_disksize += len; - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ret = ext4_mark_inode_dirty(handle, inode); if (ret) goto out_stop; diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 3da4cf8..152ef38 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -1039,7 +1039,7 @@ got: /* This is the optimal IO size (for stat), not the fs block size */ inode->i_blocks = 0; inode->i_mtime = inode->i_atime = inode->i_ctime = ei->i_crtime = - ext4_current_time(inode); + current_fs_time(inode->i_sb); memset(ei->i_data, 0, sizeof(ei->i_data)); ei->i_dir_start_lookup = 0; diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index ff7538c..67b3fe8 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c @@ -1028,7 +1028,7 @@ static int ext4_add_dirent_to_inline(handle_t *handle, * happen is that the times are slightly out of date * and/or different from the directory change time. */ - dir->i_mtime = dir->i_ctime = ext4_current_time(dir); + dir->i_mtime = dir->i_ctime = current_fs_time(dir->i_sb); ext4_update_dx_flag(dir); dir->i_version++; ext4_mark_inode_dirty(handle, dir); @@ -1971,7 +1971,7 @@ out: if (inode->i_nlink) ext4_orphan_del(handle, inode); - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); if (IS_SYNC(inode)) ext4_handle_sync(handle); diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index f7140ca..1546c02 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3991,7 +3991,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) if (IS_SYNC(inode)) ext4_handle_sync(handle); - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); out_stop: ext4_journal_stop(handle); @@ -4145,7 +4145,7 @@ out_stop: if (inode->i_nlink) ext4_orphan_del(handle, inode); - inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); ext4_journal_stop(handle); @@ -5120,7 +5120,7 @@ int ext4_setattr(struct dentry *dentry, struct iattr *attr) * update c/mtime in shrink case below */ if (!shrink) { - inode->i_mtime = ext4_current_time(inode); + inode->i_mtime = current_fs_time(inode->i_sb); inode->i_ctime = inode->i_mtime; } down_write(&EXT4_I(inode)->i_data_sem); diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 28cc412..fb429ac 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c @@ -155,7 +155,7 @@ static long swap_inode_boot_loader(struct super_block *sb, swap_inode_data(inode, inode_bl); - inode->i_ctime = inode_bl->i_ctime = ext4_current_time(inode); + inode->i_ctime = inode_bl->i_ctime = current_fs_time(inode->i_sb); spin_lock(&sbi->s_next_gen_lock); inode->i_generation = sbi->s_next_generation++; @@ -274,7 +274,7 @@ static int ext4_ioctl_setflags(struct inode *inode, } ext4_set_inode_flags(inode); - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); err = ext4_mark_iloc_dirty(handle, inode, &iloc); flags_err: @@ -373,7 +373,7 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid) } } EXT4_I(inode)->i_projid = kprojid; - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); out_dirty: rc = ext4_mark_iloc_dirty(handle, inode, &iloc); if (!err) @@ -505,7 +505,7 @@ long ext4_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) } err = ext4_reserve_inode_write(handle, inode, &iloc); if (err == 0) { - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); inode->i_generation = generation; err = ext4_mark_iloc_dirty(handle, inode, &iloc); } diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index ec4c399..c4cc01d 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -1939,7 +1939,7 @@ static int add_dirent_to_buf(handle_t *handle, struct ext4_filename *fname, * happen is that the times are slightly out of date * and/or different from the directory change time. */ - dir->i_mtime = dir->i_ctime = ext4_current_time(dir); + dir->i_mtime = dir->i_ctime = current_fs_time(dir->i_sb); ext4_update_dx_flag(dir); dir->i_version++; ext4_mark_inode_dirty(handle, dir); @@ -2988,7 +2988,7 @@ static int ext4_rmdir(struct inode *dir, struct dentry *dentry) * recovery. */ inode->i_size = 0; ext4_orphan_add(handle, inode); - inode->i_ctime = dir->i_ctime = dir->i_mtime = ext4_current_time(inode); + inode->i_ctime = dir->i_ctime = dir->i_mtime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); ext4_dec_count(handle, dir); ext4_update_dx_flag(dir); @@ -3051,13 +3051,13 @@ static int ext4_unlink(struct inode *dir, struct dentry *dentry) retval = ext4_delete_entry(handle, dir, de, bh); if (retval) goto end_unlink; - dir->i_ctime = dir->i_mtime = ext4_current_time(dir); + dir->i_ctime = dir->i_mtime = current_fs_time(dir->i_sb); ext4_update_dx_flag(dir); ext4_mark_inode_dirty(handle, dir); drop_nlink(inode); if (!inode->i_nlink) ext4_orphan_add(handle, inode); - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); end_unlink: @@ -3256,7 +3256,7 @@ retry: if (IS_DIRSYNC(dir)) ext4_handle_sync(handle); - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); ext4_inc_count(handle, inode); ihold(inode); @@ -3383,7 +3383,7 @@ static int ext4_setent(handle_t *handle, struct ext4_renament *ent, ent->de->file_type = file_type; ent->dir->i_version++; ent->dir->i_ctime = ent->dir->i_mtime = - ext4_current_time(ent->dir); + current_fs_time(ent->dir->i_sb); ext4_mark_inode_dirty(handle, ent->dir); BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata"); if (!ent->inlined) { @@ -3654,7 +3654,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, * Like most other Unix systems, set the ctime for inodes on a * rename. */ - old.inode->i_ctime = ext4_current_time(old.inode); + old.inode->i_ctime = current_fs_time(old.inode->i_sb); ext4_mark_inode_dirty(handle, old.inode); if (!whiteout) { @@ -3666,9 +3666,9 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, if (new.inode) { ext4_dec_count(handle, new.inode); - new.inode->i_ctime = ext4_current_time(new.inode); + new.inode->i_ctime = current_fs_time(new.inode->i_sb); } - old.dir->i_ctime = old.dir->i_mtime = ext4_current_time(old.dir); + old.dir->i_ctime = old.dir->i_mtime = current_fs_time(old.dir->i_sb); ext4_update_dx_flag(old.dir); if (old.dir_bh) { retval = ext4_rename_dir_finish(handle, &old, new.dir->i_ino); @@ -3726,6 +3726,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry, }; u8 new_file_type; int retval; + struct timespec ctime; if ((ext4_encrypted_inode(old_dir) || ext4_encrypted_inode(new_dir)) && @@ -3828,8 +3829,9 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry, * Like most other Unix systems, set the ctime for inodes on a * rename. */ - old.inode->i_ctime = ext4_current_time(old.inode); - new.inode->i_ctime = ext4_current_time(new.inode); + ctime = current_fs_time(old.inode->i_sb); + old.inode->i_ctime = ctime; + new.inode->i_ctime = ctime; ext4_mark_inode_dirty(handle, old.inode); ext4_mark_inode_dirty(handle, new.inode); diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 3822a5a..c39cb7c 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -5165,7 +5165,7 @@ static int ext4_quota_off(struct super_block *sb, int type) handle = ext4_journal_start(inode, EXT4_HT_QUOTA, 1); if (IS_ERR(handle)) goto out; - inode->i_mtime = inode->i_ctime = CURRENT_TIME; + inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); ext4_mark_inode_dirty(handle, inode); ext4_journal_stop(handle); diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index e79bd32..808609c 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1253,7 +1253,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, } if (!error) { ext4_xattr_update_super_block(handle, inode->i_sb); - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_fs_time(inode->i_sb); if (!value) ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND); error = ext4_mark_iloc_dirty(handle, inode, &is.iloc); -- 1.9.1