From patchwork Wed Jul 5 18:58:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13302668 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3D93C001B0 for ; Wed, 5 Jul 2023 18:58:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7CFB98D0003; Wed, 5 Jul 2023 14:58:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 77FD48D0001; Wed, 5 Jul 2023 14:58:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 566DD8D0003; Wed, 5 Jul 2023 14:58:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 4461F8D0001 for ; Wed, 5 Jul 2023 14:58:54 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 167DE40454 for ; Wed, 5 Jul 2023 18:58:54 +0000 (UTC) X-FDA: 80978470188.08.3E722BE Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf28.hostedemail.com (Postfix) with ESMTP id 32D04C0012 for ; Wed, 5 Jul 2023 18:58:51 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aMKB7Eaj; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688583532; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=LlpChOzqdGMpOWppsGoACq3Og+Rj4uzOB0D2aUi9/78=; b=1ESmdv0O1ZNhuehjS0sYR48ab+U4ZCGXwd0+j6TBd27i5XQzDIcMbvesIsFRTtEdmoMHAr XdDle67mor3jOJ1mQe3LymwC/gtgmxpemHl0kIQMo6nQOznhYPD/k3i26lDElYa9ZVk7pK r+8oxn2NPsm+vtg3JME0mWZmkwisENk= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aMKB7Eaj; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688583532; a=rsa-sha256; cv=none; b=Ky2PArura8K5AN7QoZAwZgqXjS3atup0rLm2yOJkpKvQGAThtlVnycqfs+y4J41rBaWe8n /8b1/d1QGmyGmXiiW52Kn4O+0IIjW+FjF+Z/+wG/noqdN6qVGAdWWQjw5fiMhaaBs7UYc7 Oi+2vrqafn1Wh5WHn1wPUnKOmXHqSjM= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3605D616DD; Wed, 5 Jul 2023 18:58:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 048E0C433BB; Wed, 5 Jul 2023 18:58:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1688583530; bh=rS7mHrqZmoO2H68n3RxhES3IzDPLPysS3UyH3PinCQ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aMKB7Eajzv0HN0RjiqoVKTtlq5KN/eWgB5BWIXdR4yS+qXLo9oJ2A8CvARGhR38SH AGVvIkEZAbD+2gqh1hM5AgL3ExspR2noywBNBHZ/Zbz6Jipv98b24C+FbaNuj7Id30 /vjMmqLNAVgc3TMo2RGbDruAikPadReZuK3KcfWQJbROt+tSH7hONNDFEXZgGO8FCp rZUVAJaTqC0bKLSAziTq7i3tC8AVeG/+sFMf01eIn4wnADMCMY5hp3fCv+if/Zhei+ dNlf5J971crJund4f35sQB+fqWVZ1Rv/WEt2CJNhYXge8soEVT4A/D9IhrSNkZ2pHG dVcbUJJd2L7+A== From: Jeff Layton To: jk@ozlabs.org, arnd@arndb.de, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, gregkh@linuxfoundation.org, arve@android.com, tkjos@android.com, maco@android.com, joel@joelfernandes.org, brauner@kernel.org, cmllamas@google.com, surenb@google.com, dennis.dalessandro@cornelisnetworks.com, jgg@ziepe.ca, leon@kernel.org, bwarrum@linux.ibm.com, rituagar@linux.ibm.com, ericvh@kernel.org, lucho@ionkov.net, asmadeus@codewreck.org, linux_oss@crudebyte.com, dsterba@suse.com, dhowells@redhat.com, marc.dionne@auristor.com, viro@zeniv.linux.org.uk, raven@themaw.net, luisbg@kernel.org, salah.triki@gmail.com, aivazian.tigran@gmail.com, ebiederm@xmission.com, keescook@chromium.org, clm@fb.com, josef@toxicpanda.com, xiubli@redhat.com, idryomov@gmail.com, jlayton@kernel.org, jaharkes@cs.cmu.edu, coda@cs.cmu.edu, jlbec@evilplan.org, hch@lst.de, nico@fluxnic.net, rafael@kernel.org, code@tyhicks.com, ardb@kernel.org, xiang@kernel.org, chao@kernel.org, huyue2@coolpad.com, jefflexu@linux.alibaba.com, linkinjeon@kernel.org, sj1557.seo@samsung.com, jack@suse.com, tytso@mit.edu, adilger.kernel@dilger.ca, jaegeuk@kernel.org, hirofumi@mail.parknet.co.jp, miklos@szeredi.hu, rpeterso@redhat.com, agruenba@redhat.com, richard@nod.at, anton.ivanov@cambridgegreys.com, johannes@sipsolutions.net, mikulas@artax.karlin.mff.cuni.cz, mike.kravetz@oracle.com, muchun.song@linux.dev, dwmw2@infradead.org, shaggy@kernel.org, tj@kernel.org, trond.myklebust@hammerspace.com, anna@kernel.org, chuck.lever@oracle.com, neilb@suse.de, kolga@netapp.com, Dai.Ngo@oracle.com, tom@talpey.com, konishi.ryusuke@gmail.com, anton@tuxera.com, almaz.alexandrovich@paragon-software.com, mark@fasheh.com, joseph.qi@linux.alibaba.com, me@bobcopeland.com, hubcap@omnibond.com, martin@omnibond.com, amir73il@gmail.com, mcgrof@kernel.org, yzaikin@google.com, tony.luck@intel.com, gpiccoli@igalia.com, al@alarsen.net, sfrench@samba.org, pc@manguebit.com, lsahlber@redhat.com, sprasad@microsoft.com, senozhatsky@chromium.org, phillip@squashfs.org.uk, rostedt@goodmis.org, mhiramat@kernel.org, dushistov@mail.ru, hdegoede@redhat.com, djwong@kernel.org, dlemoal@kernel.org, naohiro.aota@wdc.com, jth@kernel.org, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, sdf@google.com, haoluo@google.com, jolsa@kernel.org, hughd@google.com, akpm@linux-foundation.org, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, john.johansen@canonical.com, paul@paul-moore.com, jmorris@namei.org, serge@hallyn.com, stephen.smalley.work@gmail.com, eparis@parisplace.org, jgross@suse.com, stern@rowland.harvard.edu, lrh2000@pku.edu.cn, sebastian.reichel@collabora.com, wsa+renesas@sang-engineering.com, quic_ugoswami@quicinc.com, quic_linyyuan@quicinc.com, john@keeping.me.uk, error27@gmail.com, quic_uaggarwa@quicinc.com, hayama@lineo.co.jp, jomajm@gmail.com, axboe@kernel.dk, dhavale@google.com, dchinner@redhat.com, hannes@cmpxchg.org, zhangpeng362@huawei.com, slava@dubeyko.com, gargaditya08@live.com, penguin-kernel@I-love.SAKURA.ne.jp, yifeliu@cs.stonybrook.edu, madkar@cs.stonybrook.edu, ezk@cs.stonybrook.edu, yuzhe@nfschina.com, willy@infradead.org, okanatov@gmail.com, jeffxu@chromium.org, linux@treblig.org, mirimmad17@gmail.com, yijiangshan@kylinos.cn, yang.yang29@zte.com.cn, xu.xin16@zte.com.cn, chengzhihao1@huawei.com, shr@devkernel.io, Liam.Howlett@Oracle.com, adobriyan@gmail.com, chi.minghao@zte.com.cn, roberto.sassu@huawei.com, linuszeng@tencent.com, bvanassche@acm.org, zohar@linux.ibm.com, yi.zhang@huawei.com, trix@redhat.com, fmdefrancesco@gmail.com, ebiggers@google.com, princekumarmaurya06@gmail.com, chenzhongjin@huawei.com, riel@surriel.com, shaozhengchao@huawei.com, jingyuwang_vip@163.com, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org, linux-rdma@vger.kernel.org, linux-usb@vger.kernel.org, v9fs@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-afs@lists.infradead.org, autofs@vger.kernel.org, linux-mm@kvack.org, linux-btrfs@vger.kernel.org, ceph-devel@vger.kernel.org, codalist@coda.cs.cmu.edu, ecryptfs@vger.kernel.org, linux-efi@vger.kernel.org, linux-erofs@lists.ozlabs.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, cluster-devel@redhat.com, linux-um@lists.infradead.org, linux-mtd@lists.infradead.org, jfs-discussion@lists.sourceforge.net, linux-nfs@vger.kernel.org, linux-nilfs@vger.kernel.org, linux-ntfs-dev@lists.sourceforge.net, ntfs3@lists.linux.dev, ocfs2-devel@lists.linux.dev, linux-karma-devel@lists.sourceforge.net, devel@lists.orangefs.org, linux-unionfs@vger.kernel.org, linux-hardening@vger.kernel.org, reiserfs-devel@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-trace-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, bpf@vger.kernel.org, netdev@vger.kernel.org, apparmor@lists.ubuntu.com, linux-security-module@vger.kernel.org, selinux@vger.kernel.org Cc: Jan Kara Subject: [PATCH v2 07/92] fs: add ctime accessors infrastructure Date: Wed, 5 Jul 2023 14:58:10 -0400 Message-ID: <20230705185812.579118-2-jlayton@kernel.org> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230705185812.579118-1-jlayton@kernel.org> References: <20230705185812.579118-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 32D04C0012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: 8ucgrpmwsbzkgfhrrdnq5xezpa15zo39 X-HE-Tag: 1688583531-265600 X-HE-Meta: U2FsdGVkX19/siDmNig+PMKAk7Wqj7yHsJ7ppldaA3tf55PrTCPfxqODDuE7jSRywqXb5LNHVBPRhiCnUrWe6IdBYzVN0z8go/JP3WsDVXIw4dxd9MDOi0Iby0u7vZKSf5ocZsS7MXACTA9gijv7pq31ZFNuKIm/U/wfYbK83AB+eQnlADgjH416S3xNp4ImQwxBcgyHQMojAzRTXViLTblaFiNjqxjo1LOKP/E2Dlvd531zjdprc82BlhoUI3K3Fq8sbXibryBXlMJCYm4U1Vv+x+k+VEOmzja07g9/OLleOTpXKcF5u4iO5+MSEWqs8V/T9oix6UIotcUp4vRR59Cjy+l8w9hlMk5ZwTOl3nJyitc204wvVEUlEywW/Ni1chqpepV1RcBqMSIQCdVfXg64Qh2hsTHeCjdFc1DN7YLcaLrIoMZWKd8ubPMBIUSETkGDEEdcmw9WCeVoJjWKQhdQ0MEu2P/Qz5+x0PII4jIkHbHKaNJr/P5DeXOYRUdUmE/M806mZQQDeg3/rhTEF728Hpw7xMD34ZFJjxtJxe1yyXz3dlyTiGeU+qzv7/xy2fdkricqW19OvrqQUFGEy8bvJVyiPqJvoRQ7o9bUHR9oDzpJBo35vvV5ktJQdvQTg95bOH3/WxV3UNtS4mqAZc3/gOWC1hxi/k/cNnQoUqB2kHs/+OwxB+hBoX6HtiFMoU6FDAuwLU0I/0duSXoWn8JJEC+PWOvVUhjybkoFrWaENrzWBmZA62uKDf/cvVH0VFWvum6eifGdnlic2hVI33MiCKnUFcMvyYb6/ZnOhbibUnz13JmJDXiOCmSUqdJx+zQiEIKfJhKglAbmMuj7fngtolffleU8Mbb66Ugr4m8HT6HONzlxRn9bP4sc0PUG/epKRKj9l7keCQWCJlN5xFHIBtevxjdNtIrQC+OcKOP3b7NEenHn3Z4+vFEHAqL7Mp1wtFp8ZaGZGan1DU4 GGK6ymN/ s/lz78tugF5Js4CqyRc846orXHSjAIXiLc+3KvJ3xI+ODZF3Xj1mTn9bX4/P+AgdkHX0/60Ghhwp1BUd3fLssHFyKlpabP0ASiIdnGRlb5/zINP0QF2AiM24dyvj039wP8lgoPI9uRP5KpcwQA3UJbSEjdJe63fo/SZI32Sp1XVxLbZg20kCPB7RGORcc7h0oSehcEXFcUgNscujvQ2lP2V8ni4WDwikazclKDhdvZ6f1txAEAipFs/jaxiPXDIa3THhpf3oBO3Oo+wxvOb3XZ8Mp+lN9xGqB7myGQKYOe49RpVLPaBltFaRNvgwmf26SUAulkqBLwyulpZ7Ph8OfbpuvOF4VdytpNXQJuJ20GzjRjPhQScMxG+6pZNnGAWB7h1grjZoOVdli/fSK08NSRgpwTmNN23CWqkfoSJdQUIeJwARFRhLr5pwKOIr+mi05pyCir9mtchLD359BPhMn6zWXaJNUwH3OhCd8erMA8rp38nM8LIRc4KXTUXEgA/ky4RhwvtxqLro8OSTTi08W6+h/IxDM+a6v6ECPMMG6BxQpn7yTMJJWbDVzBUO5MJOZeIb0tRqf/XjylEM2RZTsinSuKDR7trpwrXv1czHaa6Yw+xhuOSBoMpClnDgfkDTxoXt2UXx9N1UzRkR6csle6+YfPf9sFAXP+pezToNtl2LN2dveNJWrTdZLoSqvzCEl+wcVQcT5PzjaXQXEeUuN7W7+7wY5T8h7hO5l/2cFvLoDyIujNFt71778GFLVnN1ajT3WTn+s+rPE63lufr+Fc0HeOmtrbYpT4JCgQNVS8GV4LdgCMgoypZhHLQ3EVfP8dodYoQT1/pu15/zUnqfnJ28TsRAB+f/vfR5o1a44462Y6BLqb/AlpBX9MW2IZfrE3dw234jQgqcS5coq6H9VzB1J4iv6ui6cXlZU8WB6kq6LQ7XY60nHN69RyJPiB4iP4IY1xgqMVB9VT84OM822lw4f3rHP z3UYhdsX Ac0yuHDLbVM3W6vUmY9XEEUgoG09e2368HR8XnVFmw4x7jxyuJrgXZrB4Nq4ZrN6ytbLPmMRK8AKkzMo2du/mz2d3NKFQ7N9rMihPwymF/p6np1SrCEsTeC1aZTe5cEToD+AcIt7Mr8u7idOWpzukIg2cEVR15Gcb1+Ke6eoykkYs6J+YVlc2gopMurtYdugZzIefcUZpIN5nIbRdkixbzQvqlIWA9qBu52VERkIKhGU0mukpPWKt6gmkGjWgOu66dy+mO62DjuvmPm8dIjO+MSFXEjaw+yBUT6Cu9vKwSokpb24o3lSrgYDD1rALod/lUilUqjITkYrNOl7rBZarFeZFLGRQ1xT5we3FXkTK+Di2FmFw0Ook+cPFuTDy2KtKg9r1mZGCZSiNuMqat+yKUuBDK95Tk5KgQZzjVRiRW+W7PGgpM9AA7vLtLZ9gpUNsRVw41Ytt79EzPHt5sy0xaaRUVPm9WOxHI621Zc4ZOIOOJrumfa/UFxpncvP337B4CCmEYRtfJTJEy6uwVEDwNutBTCHsdTuXiIQx+E4SemXBQodVaNBuqhAhJ6TTAw5n0vTidC9K0bK7DHCcOcaN6iui4RGjKb84kmfrb7XBjffixUw2fp4IF2o5RGnbcquIoY1tA+2/tykfQ9nkU6UJ5vCdBxLcOOB8su3urWiwnvbZq/XywPFUugfPCZXqCgeZe9cbUtHs4e68OLnddY5jf2tXe2J60vKjoNWPs/gPyCe52vaJg4/RLWye/xOzP+rL3WYhhAhsEEzUnJlXIGICfUzjpMKvxqBT+1Z8CnDOFwP5shSexXuxjTwmwE4oL3HptHVftojnxF3oCsyCN7D92cOltvB6HTFzTMr9wD58OfXLloI/qVkoaIsZmjr+wrck97qVXljbkA5Y3GXc86P3+SpuP3DhHrZo7+QlHUug16jxpaEXGKL7OH3DIRsAinn6mMAbvjkuAkr3E5hoFOffx5y2on36 aWc2iiit RK3vr2SDtGhRrhU4dn5zkJQziKB2n/vw4tpfVHeaGRitqZKnFRWlXUE+Os3FZ63QzrxZZ01uAEeRbgyPATQnk7nLxNuo7aguC56syIF12j4ZSqDY3vXXpwBgInTVpnQ1kXOlY3WJHVs2rBkasg00HLjhhbkcnAwWLJt0zedaDiQscbfbdFz1izdJFFc/niqIkW6IPr+aMSgqtGuB9UoW70qyEyTfRJVW6mA3ebDFVth1oMBY0gMVYA3n46JieFeEpsuv4IlYSSNGqcOK4An/itUuoipdHQw7kcp/CKGQ8s54/F+e/5Y6a98qPUgIg794ggCl39UeKBnhbcOBW97PptmrrXB8oPHK/kPdwdgTylL0fuyEMFua+NFCcz8QKKMD4G3JhDh/g2+6KAMpUA3hy7rXBOvq5qPk0VNW7PS7k9ZXlnGUHO5l75PlUn3gGFivz8bwe08lQukaxIBxFwSOycAjox4XfD73xBBazQeYwVMlXV+iO/pGy1ntljQ7f5CIDyEbVziKrZ/n2+LTF4PW/FU1lMLwQEzVrqTvetdAex5lL8nQJ06CRQQyhdhjnOC6Yasg/8+yiXwUqEt0ONJuR3hIR1VxD4C/LDx3UaO7EgN07BYoxqOjMqonvUIwd8NPfdR2wpR8PA9larXjs6p610/qvw2EuxbH5xhhrIda4aaBV2Tr6DxRON/BjMLjMfeAhNWZCdrzZJ+d7NEw1U0fAvFJmEwUPb2pXxWwYtuqxzrg7mtnAtyd3q/zz3XocSKGyGJCpTa0uz0yTXEpbFhpbPMt6ZBrnX+c8i7HIkTVwyDU8NPhKHwFimchbhruig88w4FXvI6sNjjSS9H1bBrZdA+z44OBvIkoWrpnGUPOK8rfrPD2cbwhEYrgKyU/kwQZhXNofb/wBXLCbyICkG01675yLXkFg4oHOsMxWFqB2T2k6AGAhFKGHEBIxfVo/+IlZ1B32C2xRqoyljCV9N8v6P9VnNB72 b1vdbpYW TXtac8zmZhBwN15xl5MqKURPZ+oDymQEieSyZH9PXcMtvHjdbQ184//rJIgb0kJBvu6I4A7FLcKbWflvy9qtPNZ40icR++jOtDXbdCOXABwIYS9PdBQLFLhARIK3xj3+aG+gkS3KaPqnJqBRasaDrieuq3OUdS24l3n5vV7il2wKWMa/HDf1GjWJE1CYm7DjzQ9Ivu839BkimvxILOKaKsrCKG4Un1KWTZGsmR73wKFDUArRLLzLuvaTM95WpIF1WS9zEuvo7dDnjFWJNIT5fWUkPwQ3P7RIVw/c4u0JmIIIMollZ+02mi3Sya0YM0iYjsq1mw5C7NCwY7VXE5pRh02vRTk1MZpLwdOz+1UV7XRADVPX6j8qJ555pP8Mx2c9YHQA1Ids6uaxRVUHx466ytDbpOZ455MHcNBzGTLz3QwfGsuW8BAUbmKwXwbUCRRRE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000033, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: struct timespec64 has unused bits in the tv_nsec field that can be used for other purposes. In future patches, we're going to change how the inode->i_ctime is accessed in certain inodes in order to make use of them. In order to do that safely though, we'll need to eradicate raw accesses of the inode->i_ctime field from the kernel. Add new accessor functions for the ctime that we use to replace them. Reviewed-by: Jan Kara Reviewed-by: Luis Chamberlain Signed-off-by: Jeff Layton Reviewed-by: Damien Le Moal --- fs/inode.c | 16 ++++++++++++++++ include/linux/fs.h | 45 ++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/fs/inode.c b/fs/inode.c index d37fad91c8da..21b026d95b51 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -2499,6 +2499,22 @@ struct timespec64 current_time(struct inode *inode) } EXPORT_SYMBOL(current_time); +/** + * inode_set_ctime_current - set the ctime to current_time + * @inode: inode + * + * Set the inode->i_ctime to the current value for the inode. Returns + * the current value that was assigned to i_ctime. + */ +struct timespec64 inode_set_ctime_current(struct inode *inode) +{ + struct timespec64 now = current_time(inode); + + inode_set_ctime(inode, now.tv_sec, now.tv_nsec); + return now; +} +EXPORT_SYMBOL(inode_set_ctime_current); + /** * in_group_or_capable - check whether caller is CAP_FSETID privileged * @idmap: idmap of the mount @inode was found from diff --git a/include/linux/fs.h b/include/linux/fs.h index 824accb89a91..bdfbd11a5811 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1474,7 +1474,50 @@ static inline bool fsuidgid_has_mapping(struct super_block *sb, kgid_has_mapping(fs_userns, kgid); } -extern struct timespec64 current_time(struct inode *inode); +struct timespec64 current_time(struct inode *inode); +struct timespec64 inode_set_ctime_current(struct inode *inode); + +/** + * inode_get_ctime - fetch the current ctime from the inode + * @inode: inode from which to fetch ctime + * + * Grab the current ctime from the inode and return it. + */ +static inline struct timespec64 inode_get_ctime(const struct inode *inode) +{ + return inode->i_ctime; +} + +/** + * inode_set_ctime_to_ts - set the ctime in the inode + * @inode: inode in which to set the ctime + * @ts: value to set in the ctime field + * + * Set the ctime in @inode to @ts + */ +static inline struct timespec64 inode_set_ctime_to_ts(struct inode *inode, + struct timespec64 ts) +{ + inode->i_ctime = ts; + return ts; +} + +/** + * inode_set_ctime - set the ctime in the inode + * @inode: inode in which to set the ctime + * @sec: tv_sec value to set + * @nsec: tv_nsec value to set + * + * Set the ctime in @inode to { @sec, @nsec } + */ +static inline struct timespec64 inode_set_ctime(struct inode *inode, + time64_t sec, long nsec) +{ + struct timespec64 ts = { .tv_sec = sec, + .tv_nsec = nsec }; + + return inode_set_ctime_to_ts(inode, ts); +} /* * Snapshotting support.