From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepa Dinamani Subject: [PATCH v2 06/24] fs: ext4: Use current_time() for inode timestamps Date: Sun, 19 Jun 2016 17:27:05 -0700 Message-ID: <1466382443-11063-7-git-send-email-deepa.kernel@gmail.com> References: <1466382443-11063-1-git-send-email-deepa.kernel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: tytso@mit.edu, arnd@arndb.de, y2038@lists.linaro.org, Andreas Dilger , viro@zeniv.linux.org.uk, tglx@linutronix.de, linux-ext4@vger.kernel.org, torvalds@linux-foundation.org To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Return-path: In-Reply-To: <1466382443-11063-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 cmVudF90aW1lKCkgd2lsbCBiZSB0cmFuc2l0aW9uZWQgdG8gYmUgeTIwMzggc2FmZQphbG9uZyB3 aXRoIHZmcy4KCmN1cnJlbnRfdGltZSgpIHJldHVybnMgdGltZXN0YW1wcyBhY2NvcmRpbmcgdG8g dGhlCmdyYW51bGFyaXRpZXMgc2V0IGluIHRoZSBzdXBlcl9ibG9jay4KVGhlIGdyYW51bGFyaXR5 IGNoZWNrIGluIGV4dDRfY3VycmVudF90aW1lKCkgdG8gY2FsbApjdXJyZW50X3RpbWUoKSBvciBD VVJSRU5UX1RJTUVfU0VDIGlzIG5vdCByZXF1aXJlZC4KVXNlIGN1cnJlbnRfdGltZSgpIGRpcmVj dGx5IHRvIG9idGFpbiB0aW1lc3RhbXBzCnVuY29uZGl0aW9uYWxseSwgYW5kIHJlbW92ZSBleHQ0 X2N1cnJlbnRfdGltZSgpLgoKUXVvdGEgZmlsZXMgYXJlIGFzc3VtZWQgdG8gYmUgb24gdGhlIHNh bWUgZmlsZXN5c3RlbS4KSGVuY2UsIHVzZSBjdXJyZW50X3RpbWUoKSBmb3IgdGhlc2UgZmlsZXMg YXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6IERlZXBhIERpbmFtYW5pIDxkZWVwYS5rZXJuZWxAZ21h aWwuY29tPgpDYzogIlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgpDYzogQW5kcmVhcyBE aWxnZXIgPGFkaWxnZXIua2VybmVsQGRpbGdlci5jYT4KQ2M6IGxpbnV4LWV4dDRAdmdlci5rZXJu ZWwub3JnCi0tLQogZnMvZXh0NC9hY2wuYyAgICAgfCAgMiArLQogZnMvZXh0NC9leHQ0LmggICAg fCAgNiAtLS0tLS0KIGZzL2V4dDQvZXh0ZW50cy5jIHwgMTAgKysrKystLS0tLQogZnMvZXh0NC9p YWxsb2MuYyAgfCAgMiArLQogZnMvZXh0NC9pbmxpbmUuYyAgfCAgNCArKy0tCiBmcy9leHQ0L2lu b2RlLmMgICB8ICA2ICsrKy0tLQogZnMvZXh0NC9pb2N0bC5jICAgfCAgOCArKysrLS0tLQogZnMv ZXh0NC9uYW1laS5jICAgfCAyNCArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGZzL2V4dDQveGF0 dHIuYyAgIHwgIDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMzQgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9hY2wuYyBiL2ZzL2V4dDQvYWNsLmMKaW5k ZXggYzY2MDFhNC4uNzMzZTJmMjQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvYWNsLmMKKysrIGIvZnMv ZXh0NC9hY2wuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIF9fZXh0NF9zZXRfYWNsKGhhbmRsZV90ICpo YW5kbGUsIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlLAogCQkJaWYgKGVycm9yIDwgMCkK IAkJCQlyZXR1cm4gZXJyb3I7CiAJCQllbHNlIHsKLQkJCQlpbm9kZS0+aV9jdGltZSA9IGV4dDRf Y3VycmVudF90aW1lKGlub2RlKTsKKwkJCQlpbm9kZS0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShp bm9kZSk7CiAJCQkJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwogCQkJCWlm IChlcnJvciA9PSAwKQogCQkJCQlhY2wgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHQ0 LmggYi9mcy9leHQ0L2V4dDQuaAppbmRleCBiODRhYTFjLi4xNGU1Y2Y0IDEwMDY0NAotLS0gYS9m cy9leHQ0L2V4dDQuaAorKysgYi9mcy9leHQ0L2V4dDQuaApAQCAtMTUyMywxMiArMTUyMyw2IEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IGV4dDRfaW5vZGVfaW5mbyAqRVhUNF9JKHN0cnVjdCBpbm9k ZSAqaW5vZGUpCiAJcmV0dXJuIGNvbnRhaW5lcl9vZihpbm9kZSwgc3RydWN0IGV4dDRfaW5vZGVf aW5mbywgdmZzX2lub2RlKTsKIH0KIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgdGltZXNwZWMgZXh0 NF9jdXJyZW50X3RpbWUoc3RydWN0IGlub2RlICppbm9kZSkKLXsKLQlyZXR1cm4gKGlub2RlLT5p X3NiLT5zX3RpbWVfZ3JhbiA8IE5TRUNfUEVSX1NFQykgPwotCQljdXJyZW50X2ZzX3RpbWUoaW5v ZGUtPmlfc2IpIDogQ1VSUkVOVF9USU1FX1NFQzsKLX0KLQogc3RhdGljIGlubGluZSBpbnQgZXh0 NF92YWxpZF9pbnVtKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKQog ewogCXJldHVybiBpbm8gPT0gRVhUNF9ST09UX0lOTyB8fApkaWZmIC0tZ2l0IGEvZnMvZXh0NC9l eHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuYwppbmRleCAyYTJlZWY5Li4yNTg0MzE3IDEwMDY0 NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYworKysgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtNDcy Miw3ICs0NzIyLDcgQEAgcmV0cnk6CiAJCW1hcC5tX2xibGsgKz0gcmV0OwogCQltYXAubV9sZW4g PSBsZW4gPSBsZW4gLSByZXQ7CiAJCWVwb3MgPSAobG9mZl90KW1hcC5tX2xibGsgPDwgaW5vZGUt PmlfYmxrYml0czsKLQkJaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7 CisJCWlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAkJaWYgKG5ld19zaXpl KSB7CiAJCQlpZiAoZXBvcyA+IG5ld19zaXplKQogCQkJCWVwb3MgPSBuZXdfc2l6ZTsKQEAgLTQ4 NTAsNyArNDg1MCw3IEBAIHN0YXRpYyBsb25nIGV4dDRfemVyb19yYW5nZShzdHJ1Y3QgZmlsZSAq ZmlsZSwgbG9mZl90IG9mZnNldCwKIAkJfQogCQkvKiBOb3cgcmVsZWFzZSB0aGUgcGFnZXMgYW5k IHplcm8gYmxvY2sgYWxpZ25lZCBwYXJ0IG9mIHBhZ2VzICovCiAJCXRydW5jYXRlX3BhZ2VjYWNo ZV9yYW5nZShpbm9kZSwgc3RhcnQsIGVuZCAtIDEpOwotCQlpbm9kZS0+aV9tdGltZSA9IGlub2Rl LT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCQlpbm9kZS0+aV9tdGltZSA9 IGlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAogCQlyZXQgPSBleHQ0X2Fs bG9jX2ZpbGVfYmxvY2tzKGZpbGUsIGxibGssIG1heF9ibG9ja3MsIG5ld19zaXplLAogCQkJCQkg ICAgIGZsYWdzLCBtb2RlKTsKQEAgLTQ4NzUsNyArNDg3NSw3IEBAIHN0YXRpYyBsb25nIGV4dDRf emVyb19yYW5nZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNldCwKIAkJZ290byBvdXRf ZGlvOwogCX0KIAotCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJl bnRfdGltZShpbm9kZSk7CisJaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGN1cnJl bnRfdGltZShpbm9kZSk7CiAJaWYgKG5ld19zaXplKSB7CiAJCWV4dDRfdXBkYXRlX2lub2RlX3Np emUoaW5vZGUsIG5ld19zaXplKTsKIAl9IGVsc2UgewpAQCAtNTU3NCw3ICs1NTc0LDcgQEAgaW50 IGV4dDRfY29sbGFwc2VfcmFuZ2Uoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwg bG9mZl90IGxlbikKIAl1cF93cml0ZSgmRVhUNF9JKGlub2RlKS0+aV9kYXRhX3NlbSk7CiAJaWYg KElTX1NZTkMoaW5vZGUpKQogCQlleHQ0X2hhbmRsZV9zeW5jKGhhbmRsZSk7Ci0JaW5vZGUtPmlf bXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9k ZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAlleHQ0 X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAKIG91dF9zdG9wOgpAQCAtNTY4NCw3 ICs1Njg0LDcgQEAgaW50IGV4dDRfaW5zZXJ0X3JhbmdlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxv ZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pCiAJLyogRXhwYW5kIGZpbGUgdG8gYXZvaWQgZGF0YSBs b3NzIGlmIHRoZXJlIGlzIGVycm9yIHdoaWxlIHNoaWZ0aW5nICovCiAJaW5vZGUtPmlfc2l6ZSAr PSBsZW47CiAJRVhUNF9JKGlub2RlKS0+aV9kaXNrc2l6ZSArPSBsZW47Ci0JaW5vZGUtPmlfbXRp bWUgPSBpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+ aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAlyZXQgPSBl eHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7CiAJaWYgKHJldCkKIAkJZ290byBv dXRfc3RvcDsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaWFsbG9jLmMgYi9mcy9leHQ0L2lhbGxvYy5j CmluZGV4IDFlNGIwYjcuLjhiM2Q1OGYgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaWFsbG9jLmMKKysr IGIvZnMvZXh0NC9pYWxsb2MuYwpAQCAtMTAzOSw3ICsxMDM5LDcgQEAgZ290OgogCS8qIFRoaXMg aXMgdGhlIG9wdGltYWwgSU8gc2l6ZSAoZm9yIHN0YXQpLCBub3QgdGhlIGZzIGJsb2NrIHNpemUg Ki8KIAlpbm9kZS0+aV9ibG9ja3MgPSAwOwogCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfYXRp bWUgPSBpbm9kZS0+aV9jdGltZSA9IGVpLT5pX2NydGltZSA9Ci0JCQkJCQkgICAgICAgZXh0NF9j dXJyZW50X3RpbWUoaW5vZGUpOworCQkJCQkJICAgICAgIGN1cnJlbnRfdGltZShpbm9kZSk7CiAK IAltZW1zZXQoZWktPmlfZGF0YSwgMCwgc2l6ZW9mKGVpLT5pX2RhdGEpKTsKIAllaS0+aV9kaXJf c3RhcnRfbG9va3VwID0gMDsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW5saW5lLmMgYi9mcy9leHQ0 L2lubGluZS5jCmluZGV4IGZmNzUzOGMuLjgyZmQ1MjQgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5s aW5lLmMKKysrIGIvZnMvZXh0NC9pbmxpbmUuYwpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgc3RhdGlj IGludCBleHQ0X2FkZF9kaXJlbnRfdG9faW5saW5lKGhhbmRsZV90ICpoYW5kbGUsCiAJICogaGFw cGVuIGlzIHRoYXQgdGhlIHRpbWVzIGFyZSBzbGlnaHRseSBvdXQgb2YgZGF0ZQogCSAqIGFuZC9v ciBkaWZmZXJlbnQgZnJvbSB0aGUgZGlyZWN0b3J5IGNoYW5nZSB0aW1lLgogCSAqLwotCWRpci0+ aV9tdGltZSA9IGRpci0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGRpcik7CisJZGlyLT5p X210aW1lID0gZGlyLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGRpcik7CiAJZXh0NF91cGRhdGVf ZHhfZmxhZyhkaXIpOwogCWRpci0+aV92ZXJzaW9uKys7CiAJZXh0NF9tYXJrX2lub2RlX2RpcnR5 KGhhbmRsZSwgZGlyKTsKQEAgLTE5NzEsNyArMTk3MSw3IEBAIG91dDoKIAlpZiAoaW5vZGUtPmlf bmxpbmspCiAJCWV4dDRfb3JwaGFuX2RlbChoYW5kbGUsIGlub2RlKTsKIAotCWlub2RlLT5pX210 aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJaW5vZGUt PmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShpbm9kZSk7CiAJZXh0NF9t YXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwogCWlmIChJU19TWU5DKGlub2RlKSkKIAkJ ZXh0NF9oYW5kbGVfc3luYyhoYW5kbGUpOwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIv ZnMvZXh0NC9pbm9kZS5jCmluZGV4IGFlNDQ5MTYuLmRjMjcyZmYgMTAwNjQ0Ci0tLSBhL2ZzL2V4 dDQvaW5vZGUuYworKysgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTM5OTEsNyArMzk5MSw3IEBAIGlu dCBleHQ0X3B1bmNoX2hvbGUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9m Zl90IGxlbmd0aCkKIAlpZiAoSVNfU1lOQyhpbm9kZSkpCiAJCWV4dDRfaGFuZGxlX3N5bmMoaGFu ZGxlKTsKIAotCWlub2RlLT5pX210aW1lID0gaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRf dGltZShpbm9kZSk7CisJaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGN1cnJlbnRf dGltZShpbm9kZSk7CiAJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgaW5vZGUpOwogb3V0 X3N0b3A6CiAJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKQEAgLTQxNDUsNyArNDE0NSw3IEBA IG91dF9zdG9wOgogCWlmIChpbm9kZS0+aV9ubGluaykKIAkJZXh0NF9vcnBoYW5fZGVsKGhhbmRs ZSwgaW5vZGUpOwogCi0JaW5vZGUtPmlfbXRpbWUgPSBpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3Vy cmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9tdGltZSA9IGlub2RlLT5pX2N0aW1lID0gY3Vy cmVudF90aW1lKGlub2RlKTsKIAlleHQ0X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBpbm9kZSk7 CiAJZXh0NF9qb3VybmFsX3N0b3AoaGFuZGxlKTsKIApAQCAtNTEyMCw3ICs1MTIwLDcgQEAgaW50 IGV4dDRfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpYXR0ciAqYXR0cikK IAkJCSAqIHVwZGF0ZSBjL210aW1lIGluIHNocmluayBjYXNlIGJlbG93CiAJCQkgKi8KIAkJCWlm ICghc2hyaW5rKSB7Ci0JCQkJaW5vZGUtPmlfbXRpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9k ZSk7CisJCQkJaW5vZGUtPmlfbXRpbWUgPSBjdXJyZW50X3RpbWUoaW5vZGUpOwogCQkJCWlub2Rl LT5pX2N0aW1lID0gaW5vZGUtPmlfbXRpbWU7CiAJCQl9CiAJCQlkb3duX3dyaXRlKCZFWFQ0X0ko aW5vZGUpLT5pX2RhdGFfc2VtKTsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvaW9jdGwuYyBiL2ZzL2V4 dDQvaW9jdGwuYwppbmRleCAyOGNjNDEyLi5iYjJkM2RjIDEwMDY0NAotLS0gYS9mcy9leHQ0L2lv Y3RsLmMKKysrIGIvZnMvZXh0NC9pb2N0bC5jCkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIGxv bmcgc3dhcF9pbm9kZV9ib290X2xvYWRlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLAogCiAJc3dh cF9pbm9kZV9kYXRhKGlub2RlLCBpbm9kZV9ibCk7CiAKLQlpbm9kZS0+aV9jdGltZSA9IGlub2Rl X2JsLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCWlub2RlLT5pX2N0aW1l ID0gaW5vZGVfYmwtPmlfY3RpbWUgPSBjdXJyZW50X3RpbWUoaW5vZGUpOwogCiAJc3Bpbl9sb2Nr KCZzYmktPnNfbmV4dF9nZW5fbG9jayk7CiAJaW5vZGUtPmlfZ2VuZXJhdGlvbiA9IHNiaS0+c19u ZXh0X2dlbmVyYXRpb24rKzsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW50IGV4dDRfaW9j dGxfc2V0ZmxhZ3Moc3RydWN0IGlub2RlICppbm9kZSwKIAl9CiAKIAlleHQ0X3NldF9pbm9kZV9m bGFncyhpbm9kZSk7Ci0JaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7 CisJaW5vZGUtPmlfY3RpbWUgPSBjdXJyZW50X3RpbWUoaW5vZGUpOwogCiAJZXJyID0gZXh0NF9t YXJrX2lsb2NfZGlydHkoaGFuZGxlLCBpbm9kZSwgJmlsb2MpOwogZmxhZ3NfZXJyOgpAQCAtMzcz LDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgZXh0NF9pb2N0bF9zZXRwcm9qZWN0KHN0cnVjdCBmaWxl ICpmaWxwLCBfX3UzMiBwcm9qaWQpCiAJCX0KIAl9CiAJRVhUNF9JKGlub2RlKS0+aV9wcm9qaWQg PSBrcHJvamlkOwotCWlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOwor CWlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIG91dF9kaXJ0eToKIAlyYyA9 IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsICZpbG9jKTsKIAlpZiAoIWVycikK QEAgLTUwNSw3ICs1MDUsNyBAQCBsb25nIGV4dDRfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVu c2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQl9CiAJCWVyciA9IGV4dDRfcmVz ZXJ2ZV9pbm9kZV93cml0ZShoYW5kbGUsIGlub2RlLCAmaWxvYyk7CiAJCWlmIChlcnIgPT0gMCkg ewotCQkJaW5vZGUtPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJCQlpbm9k ZS0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShpbm9kZSk7CiAJCQlpbm9kZS0+aV9nZW5lcmF0aW9u ID0gZ2VuZXJhdGlvbjsKIAkJCWVyciA9IGV4dDRfbWFya19pbG9jX2RpcnR5KGhhbmRsZSwgaW5v ZGUsICZpbG9jKTsKIAkJfQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9uYW1laS5jIGIvZnMvZXh0NC9u YW1laS5jCmluZGV4IDY1NjljNmIuLjA5YzgyOGUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvbmFtZWku YworKysgYi9mcy9leHQ0L25hbWVpLmMKQEAgLTE5NDAsNyArMTk0MCw3IEBAIHN0YXRpYyBpbnQg YWRkX2RpcmVudF90b19idWYoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGV4dDRfZmlsZW5hbWUg KmZuYW1lLAogCSAqIGhhcHBlbiBpcyB0aGF0IHRoZSB0aW1lcyBhcmUgc2xpZ2h0bHkgb3V0IG9m IGRhdGUKIAkgKiBhbmQvb3IgZGlmZmVyZW50IGZyb20gdGhlIGRpcmVjdG9yeSBjaGFuZ2UgdGlt ZS4KIAkgKi8KLQlkaXItPmlfbXRpbWUgPSBkaXItPmlfY3RpbWUgPSBleHQ0X2N1cnJlbnRfdGlt ZShkaXIpOworCWRpci0+aV9tdGltZSA9IGRpci0+aV9jdGltZSA9IGN1cnJlbnRfdGltZShkaXIp OwogCWV4dDRfdXBkYXRlX2R4X2ZsYWcoZGlyKTsKIAlkaXItPmlfdmVyc2lvbisrOwogCWV4dDRf bWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7CkBAIC0yOTg5LDcgKzI5ODksNyBAQCBzdGF0 aWMgaW50IGV4dDRfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSkKIAkgKiByZWNvdmVyeS4gKi8KIAlpbm9kZS0+aV9zaXplID0gMDsKIAlleHQ0X29ycGhhbl9h ZGQoaGFuZGxlLCBpbm9kZSk7Ci0JaW5vZGUtPmlfY3RpbWUgPSBkaXItPmlfY3RpbWUgPSBkaXIt PmlfbXRpbWUgPSBleHQ0X2N1cnJlbnRfdGltZShpbm9kZSk7CisJaW5vZGUtPmlfY3RpbWUgPSBk aXItPmlfY3RpbWUgPSBkaXItPmlfbXRpbWUgPSBjdXJyZW50X3RpbWUoaW5vZGUpOwogCWV4dDRf bWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGlub2RlKTsKIAlleHQ0X2RlY19jb3VudChoYW5kbGUs IGRpcik7CiAJZXh0NF91cGRhdGVfZHhfZmxhZyhkaXIpOwpAQCAtMzA1MiwxMyArMzA1MiwxMyBA QCBzdGF0aWMgaW50IGV4dDRfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5 ICpkZW50cnkpCiAJcmV0dmFsID0gZXh0NF9kZWxldGVfZW50cnkoaGFuZGxlLCBkaXIsIGRlLCBi aCk7CiAJaWYgKHJldHZhbCkKIAkJZ290byBlbmRfdW5saW5rOwotCWRpci0+aV9jdGltZSA9IGRp ci0+aV9tdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGRpcik7CisJZGlyLT5pX2N0aW1lID0gZGly LT5pX210aW1lID0gY3VycmVudF90aW1lKGRpcik7CiAJZXh0NF91cGRhdGVfZHhfZmxhZyhkaXIp OwogCWV4dDRfbWFya19pbm9kZV9kaXJ0eShoYW5kbGUsIGRpcik7CiAJZHJvcF9ubGluayhpbm9k ZSk7CiAJaWYgKCFpbm9kZS0+aV9ubGluaykKIAkJZXh0NF9vcnBoYW5fYWRkKGhhbmRsZSwgaW5v ZGUpOwotCWlub2RlLT5pX2N0aW1lID0gZXh0NF9jdXJyZW50X3RpbWUoaW5vZGUpOworCWlub2Rl LT5pX2N0aW1lID0gY3VycmVudF90aW1lKGlub2RlKTsKIAlleHQ0X21hcmtfaW5vZGVfZGlydHko aGFuZGxlLCBpbm9kZSk7CiAKIGVuZF91bmxpbms6CkBAIC0zMjU3LDcgKzMyNTcsNyBAQCByZXRy eToKIAlpZiAoSVNfRElSU1lOQyhkaXIpKQogCQlleHQ0X2hhbmRsZV9zeW5jKGhhbmRsZSk7CiAK LQlpbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwlpbm9kZS0+aV9j dGltZSA9IGN1cnJlbnRfdGltZShpbm9kZSk7CiAJZXh0NF9pbmNfY291bnQoaGFuZGxlLCBpbm9k ZSk7CiAJaWhvbGQoaW5vZGUpOwogCkBAIC0zMzg0LDcgKzMzODQsNyBAQCBzdGF0aWMgaW50IGV4 dDRfc2V0ZW50KGhhbmRsZV90ICpoYW5kbGUsIHN0cnVjdCBleHQ0X3JlbmFtZW50ICplbnQsCiAJ CWVudC0+ZGUtPmZpbGVfdHlwZSA9IGZpbGVfdHlwZTsKIAllbnQtPmRpci0+aV92ZXJzaW9uKys7 CiAJZW50LT5kaXItPmlfY3RpbWUgPSBlbnQtPmRpci0+aV9tdGltZSA9Ci0JCWV4dDRfY3VycmVu dF90aW1lKGVudC0+ZGlyKTsKKwkJY3VycmVudF90aW1lKGVudC0+ZGlyKTsKIAlleHQ0X21hcmtf aW5vZGVfZGlydHkoaGFuZGxlLCBlbnQtPmRpcik7CiAJQlVGRkVSX1RSQUNFKGVudC0+YmgsICJj YWxsIGV4dDRfaGFuZGxlX2RpcnR5X21ldGFkYXRhIik7CiAJaWYgKCFlbnQtPmlubGluZWQpIHsK QEAgLTM2NTUsNyArMzY1NSw3IEBAIHN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IGlub2Rl ICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAogCSAqIExpa2UgbW9zdCBvdGhl ciBVbml4IHN5c3RlbXMsIHNldCB0aGUgY3RpbWUgZm9yIGlub2RlcyBvbiBhCiAJICogcmVuYW1l LgogCSAqLwotCW9sZC5pbm9kZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKG9sZC5pbm9k ZSk7CisJb2xkLmlub2RlLT5pX2N0aW1lID0gY3VycmVudF90aW1lKG9sZC5pbm9kZSk7CiAJZXh0 NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgb2xkLmlub2RlKTsKIAogCWlmICghd2hpdGVvdXQp IHsKQEAgLTM2NjcsOSArMzY2Nyw5IEBAIHN0YXRpYyBpbnQgZXh0NF9yZW5hbWUoc3RydWN0IGlu b2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAogCiAJaWYgKG5ldy5pbm9k ZSkgewogCQlleHQ0X2RlY19jb3VudChoYW5kbGUsIG5ldy5pbm9kZSk7Ci0JCW5ldy5pbm9kZS0+ aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKG5ldy5pbm9kZSk7CisJCW5ldy5pbm9kZS0+aV9j dGltZSA9IGN1cnJlbnRfdGltZShuZXcuaW5vZGUpOwogCX0KLQlvbGQuZGlyLT5pX2N0aW1lID0g b2xkLmRpci0+aV9tdGltZSA9IGV4dDRfY3VycmVudF90aW1lKG9sZC5kaXIpOworCW9sZC5kaXIt PmlfY3RpbWUgPSBvbGQuZGlyLT5pX210aW1lID0gY3VycmVudF90aW1lKG9sZC5kaXIpOwogCWV4 dDRfdXBkYXRlX2R4X2ZsYWcob2xkLmRpcik7CiAJaWYgKG9sZC5kaXJfYmgpIHsKIAkJcmV0dmFs ID0gZXh0NF9yZW5hbWVfZGlyX2ZpbmlzaChoYW5kbGUsICZvbGQsIG5ldy5kaXItPmlfaW5vKTsK QEAgLTM3MjcsNiArMzcyNyw3IEBAIHN0YXRpYyBpbnQgZXh0NF9jcm9zc19yZW5hbWUoc3RydWN0 IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LAogCX07CiAJdTggbmV3 X2ZpbGVfdHlwZTsKIAlpbnQgcmV0dmFsOworCXN0cnVjdCB0aW1lc3BlYyBjdGltZTsKIAogCWlm ICgoZXh0NF9lbmNyeXB0ZWRfaW5vZGUob2xkX2RpcikgfHwKIAkgICAgIGV4dDRfZW5jcnlwdGVk X2lub2RlKG5ld19kaXIpKSAmJgpAQCAtMzgyOSw4ICszODMwLDkgQEAgc3RhdGljIGludCBleHQ0 X2Nyb3NzX3JlbmFtZShzdHJ1Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9k ZW50cnksCiAJICogTGlrZSBtb3N0IG90aGVyIFVuaXggc3lzdGVtcywgc2V0IHRoZSBjdGltZSBm b3IgaW5vZGVzIG9uIGEKIAkgKiByZW5hbWUuCiAJICovCi0Jb2xkLmlub2RlLT5pX2N0aW1lID0g ZXh0NF9jdXJyZW50X3RpbWUob2xkLmlub2RlKTsKLQluZXcuaW5vZGUtPmlfY3RpbWUgPSBleHQ0 X2N1cnJlbnRfdGltZShuZXcuaW5vZGUpOworCWN0aW1lID0gY3VycmVudF90aW1lKG9sZC5pbm9k ZSk7CisJb2xkLmlub2RlLT5pX2N0aW1lID0gY3RpbWU7CisJbmV3Lmlub2RlLT5pX2N0aW1lID0g Y3RpbWU7CiAJZXh0NF9tYXJrX2lub2RlX2RpcnR5KGhhbmRsZSwgb2xkLmlub2RlKTsKIAlleHQ0 X21hcmtfaW5vZGVfZGlydHkoaGFuZGxlLCBuZXcuaW5vZGUpOwogCmRpZmYgLS1naXQgYS9mcy9l eHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggZTc5YmQzMi4uYTQzMzVjNSAxMDA2 NDQKLS0tIGEvZnMvZXh0NC94YXR0ci5jCisrKyBiL2ZzL2V4dDQveGF0dHIuYwpAQCAtMTI1Myw3 ICsxMjUzLDcgQEAgZXh0NF94YXR0cl9zZXRfaGFuZGxlKGhhbmRsZV90ICpoYW5kbGUsIHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCBuYW1lX2luZGV4LAogCX0KIAlpZiAoIWVycm9yKSB7CiAJCWV4 dDRfeGF0dHJfdXBkYXRlX3N1cGVyX2Jsb2NrKGhhbmRsZSwgaW5vZGUtPmlfc2IpOwotCQlpbm9k ZS0+aV9jdGltZSA9IGV4dDRfY3VycmVudF90aW1lKGlub2RlKTsKKwkJaW5vZGUtPmlfY3RpbWUg PSBjdXJyZW50X3RpbWUoaW5vZGUpOwogCQlpZiAoIXZhbHVlKQogCQkJZXh0NF9jbGVhcl9pbm9k ZV9zdGF0ZShpbm9kZSwgRVhUNF9TVEFURV9OT19FWFBBTkQpOwogCQllcnJvciA9IGV4dDRfbWFy a19pbG9jX2RpcnR5KGhhbmRsZSwgaW5vZGUsICZpcy5pbG9jKTsKLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpZMjAzOCBtYWlsaW5nIGxp c3QKWTIwMzhAbGlzdHMubGluYXJvLm9yZwpodHRwczovL2xpc3RzLmxpbmFyby5vcmcvbWFpbG1h bi9saXN0aW5mby95MjAzOAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf0-f194.google.com ([209.85.192.194]:34978 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751969AbcFTA2P (ORCPT ); Sun, 19 Jun 2016 20:28:15 -0400 From: Deepa Dinamani To: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Cc: arnd@arndb.de, tglx@linutronix.de, torvalds@linux-foundation.org, tytso@mit.edu, viro@zeniv.linux.org.uk, y2038@lists.linaro.org, Andreas Dilger , linux-ext4@vger.kernel.org Subject: [PATCH v2 06/24] fs: ext4: Use current_time() for inode timestamps Date: Sun, 19 Jun 2016 17:27:05 -0700 Message-Id: <1466382443-11063-7-git-send-email-deepa.kernel@gmail.com> In-Reply-To: <1466382443-11063-1-git-send-email-deepa.kernel@gmail.com> References: <1466382443-11063-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_time() will be transitioned to be y2038 safe along with vfs. current_time() returns timestamps according to the granularities set in the super_block. The granularity check in ext4_current_time() to call current_time() or CURRENT_TIME_SEC is not required. Use current_time() directly to obtain timestamps unconditionally, and remove ext4_current_time(). Quota files are assumed to be on the same filesystem. Hence, use current_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/xattr.c | 2 +- 9 files changed, 30 insertions(+), 34 deletions(-) diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c index c6601a4..733e2f24 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_time(inode); 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..2584317 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_time(inode); 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_time(inode); 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_time(inode); 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_time(inode); 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_time(inode); 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 1e4b0b7..8b3d58f 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_time(inode); 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..82fd524 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_time(dir); 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_time(inode); 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 ae44916..dc272ff 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_time(inode); 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_time(inode); 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_time(inode); 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..bb2d3dc 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_time(inode); 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_time(inode); 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_time(inode); 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_time(inode); 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 6569c6b..09c828e 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -1940,7 +1940,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_time(dir); ext4_update_dx_flag(dir); dir->i_version++; ext4_mark_inode_dirty(handle, dir); @@ -2989,7 +2989,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_time(inode); ext4_mark_inode_dirty(handle, inode); ext4_dec_count(handle, dir); ext4_update_dx_flag(dir); @@ -3052,13 +3052,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_time(dir); 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_time(inode); ext4_mark_inode_dirty(handle, inode); end_unlink: @@ -3257,7 +3257,7 @@ retry: if (IS_DIRSYNC(dir)) ext4_handle_sync(handle); - inode->i_ctime = ext4_current_time(inode); + inode->i_ctime = current_time(inode); ext4_inc_count(handle, inode); ihold(inode); @@ -3384,7 +3384,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_time(ent->dir); ext4_mark_inode_dirty(handle, ent->dir); BUFFER_TRACE(ent->bh, "call ext4_handle_dirty_metadata"); if (!ent->inlined) { @@ -3655,7 +3655,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_time(old.inode); ext4_mark_inode_dirty(handle, old.inode); if (!whiteout) { @@ -3667,9 +3667,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_time(new.inode); } - old.dir->i_ctime = old.dir->i_mtime = ext4_current_time(old.dir); + old.dir->i_ctime = old.dir->i_mtime = current_time(old.dir); ext4_update_dx_flag(old.dir); if (old.dir_bh) { retval = ext4_rename_dir_finish(handle, &old, new.dir->i_ino); @@ -3727,6 +3727,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)) && @@ -3829,8 +3830,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_time(old.inode); + 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/xattr.c b/fs/ext4/xattr.c index e79bd32..a4335c5 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_time(inode); if (!value) ext4_clear_inode_state(inode, EXT4_STATE_NO_EXPAND); error = ext4_mark_iloc_dirty(handle, inode, &is.iloc); -- 1.9.1