From patchwork Wed Jul 5 18:58:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13302669 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 1E8B5EB64DD for ; Wed, 5 Jul 2023 18:59:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 585118D0003; Wed, 5 Jul 2023 14:59:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 50EA08D0001; Wed, 5 Jul 2023 14:59:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2EBFC8D0003; Wed, 5 Jul 2023 14:59:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 1EF138D0001 for ; Wed, 5 Jul 2023 14:59:13 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E4B211A0497 for ; Wed, 5 Jul 2023 18:59:12 +0000 (UTC) X-FDA: 80978470944.16.53CCE3A Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf12.hostedemail.com (Postfix) with ESMTP id 075B640009 for ; Wed, 5 Jul 2023 18:59:10 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="SV/pROPi"; spf=pass (imf12.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688583551; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ReqA6iULWNP01vdMNQO/9GaGuHnlFE8K/R95B3vy3dg=; b=zIgEsuBtv3dNe93gkuFZ3ouXVZPjLtzQB/Yee3FmKeDc3zBLB/m7BAI3kQn++8Zx405/vm kKWEJ21fo2zeuiC1nzfUgWcWfwARjg5doWuDRq/BMnyRC2uC3AVacsErINOsNqsNhA988r pYanBLa3x2zFwYMAMVRl47LYxMab+rU= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688583551; a=rsa-sha256; cv=none; b=NZH/BpnkAE2kUa15vluGu5RgNM/lgDU5ewAaD+K59rg1e0e+DTYOoLkgFKXBy0oDac+GR7 DZVgvuwuPywGULP8GPQ3K+94cx/ivFkyrYTnuA7XZSdg7uleLcWV6M1Zco8ub5X3TUPuYN ATuqWkPEm6qeA537cHhbSy/jpGmpUYo= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="SV/pROPi"; spf=pass (imf12.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org 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 8E12A616E0; Wed, 5 Jul 2023 18:59:09 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EEEF1C4167D; Wed, 5 Jul 2023 18:58:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1688583549; bh=96h56beXLMAvkoYPxw1Hf+1T9dWrr7543/fVCrKiiH8=; h=From:To:Subject:Date:In-Reply-To:References:From; b=SV/pROPiikvWgbuJG9o5j/mdUiyRGcRaEJl1K0hVl0eCHK9Ob+YmgZ0cOVDNwxcd0 s3XXK3FiPaVML6VBfbeTny5HiSuKA0KEKAjFDlBtEkXvpck7V4KUAdjnzKCg5fiugt aiOuDDRaoB7EF/ycBMYU5USexpq/ceGXPIb8HpDBW4vIvyY547qmZyivJt5T6PXA4H rtd7d3FTcpVX0DGPx74bauINVbOI0AHI9Zym6FoqdyCXdEJPTgmmD/blFQIJoOkcln fC0uEV1EXwoGgwuuPieKxDXph4tQwZUYbTrLEd3zCpi9KdekgoBzBb9kt9un4ZFr7M 0DXS4Kyxlm/3g== 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 Subject: [PATCH v2 08/92] fs: new helper: simple_rename_timestamp Date: Wed, 5 Jul 2023 14:58:11 -0400 Message-ID: <20230705185812.579118-3-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: 075B640009 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: gbt9ea4amqsghpwy5jbti8hdc1c6dfw7 X-HE-Tag: 1688583550-799822 X-HE-Meta: U2FsdGVkX190m3YpefOXE9RdkWegw5VicLrQ2fg1LHBY+XkLS+Y/ljot2huLb7AaoYB5b3l/hSeqE1XGKRCE1l3AFGk5wfWiGLqG7KkqLLjqP825xdkNjj3Wv0nlVg7FtedzlH0K4USUFdaWe3Ekz+IBtJY1jxARZrvMy1Okp8ZCS/XnoAWpAdzLnKM5teqrLBZIvdT9+nrCairY3OVmsmmJQMgmyfoWXepJ9YHqy0TmWmFhMamCvNbgnjDiS8Jtd6ZVqZJr5G0udbdks5GpYw2JaSPNA3CgcJID/CRphRwhzJBCOTOUdXBbiQvqJS/plMevPVFXixZ9uixlL5JyCLblQwIFkFzZfiX6XbZR5evecPoGtAnIMbqyNfdus0FBzDxQbNIDTOzcAnhewavrXTwema1AdKB372u3YkYaIQqMAxR693wwFQENHBGkV/PLej5fAoYoXcQoB1sL6OCmKa4Ms98OlxCXUKkSd+m+FptlgFSGfuiqG5e2SL1E/M0Ltr3KahmDPiJyOe6excJWm0KEEXU9Gbu9IMBBoGZoD3DlrezTBxV+L7RrJuXc7WCKVCheX02SzAQxWf6wxieCE4DFgXsVLr1LmA8n2CwyGLxhnKAcPW3avcHlwmWY5Xcf2jDWdnZYFLL9xHFmj1mhtbeCnJptHTlxBQ1nl9xIq+gVeYOtN+Qezb4FlqefZlIPGmSUdIa3ZF4DYQenhK0jhBS3tBuafXv51AmwoeaRrBKyKaKeFbeAQTVAU4n42uSB9ciJ3W4OKfoVfPCu8xaFjqQxy4ai4dl/BmyqjWhfSaauJ8U30sBTQ9CHRy3bMTHsKk5zzbThlYmvwPpRylN3atXvHPl2WYgP/i7pHZ4xsK/stNdGsOt2ZpSHM+GZgOMHtLh91B0DienqWpvzeD+vEqThXIHGSIuSGNHdKyVw6HXgvKtIC+7w65YsVRCIwMPxB5qcOVQ0mnbVskhdno4 qEFufTkI Ap1CVBQrP5aPJvu+n9MkcpcWTwMz4Kr9W+yyFlsALYAW2unzJO/WnSfFSF+ytvrvf38CpMqGDQjKm9Iwoe373uhrDl4L6Ve3T21C8fyB+DOpMuNqtdeS75PznG44HkkRNUZgY0QmMJStgAqUt7DP1h39DwMyS4HSek+VKriJvoM4LZzsEySKSRepYpgr9+Uia+0jlTJgMrW9DzL3NoLJ3c/l2XFCvD1oshG3kgCunI1ihUP1ujFW35w0Y1VMprUO3OXxY7lhjldHAgNfgTguWAzlO903l0AyqjqXzC3GAo08iPZRGQHCX7itogWF51Y7H88DkyB8jg2keulNI7xce8++p1M8x4IKM8AlvFvHzhsrbE2+QBUFIkENfQB/y0rY2rUo7nFan2IrFjxRd8VMMJHbvlEBrssY9UJAe85XZ/LMb/W5a6jVHqVNZLzhTqiM/zQ5Y4XbqghSaalm+0UdtuCz4lJNuDQK2A8UlnqTKIsoaBxz2t2/x2FQn2INI/QCF73EUbziNjleWmaSww+mIPQ2fLhJ8yiQavQ0TMomzGgPtQ+2/iRj/XLlQ1Aib93Iv7F9ZjmqdJh5Lopk4T37m02OU/pY+4wrTk8L7JCOPTE0NBT8IzprZgVivHa+WJt22ERtRySaHngI44Yjwt1j/7EG1sWjhFt5q5UdMi9T5kOWMKbLuM+sEQigCWeWr0Pv3ODsj7drcvoYHCISLeWq5vsGr+Q7XAskQqWPd7BVnSWPhu9dW1nnE73OLSyMLYo34gKizGnHm+2Sgnv0LZ3/eby/DOLGKGtvEOn5H0WEVvoPlIBwY1Bl6XKe5KV0Hlo84IUvazTmvtd5UxWvk8a2Ohs513LHLVdinNsxY7XbalqG14PkBut1sW33FlLPyBOmuUVM9f4Io5/hXCblsdurRDb1YBlyyTZLsgH37f1LOBOaOeHOarv8mddkwTQUyvnNmMOZ8A3odKcBoc5KIT7K/APKEkkNI vXcrYa7L fWZpmibWFd4W8wu4OTc1GmJwKkWeuxAD2F2ckwPHJ7vitkc9XAp5gpSg9wWDiozc2Iav2h1t6nu85JIVy6b7RBYAbdATDmos9IYRwsCVuSHYRX9sxSNX1OhZx2mbYyr5Eg/XBD++jBdns8GoUuu9BKVEVUtH4ATaL8SuQ9gPLtwSS4gvAKU7DfyvDEExcrKBjXwpJ2arvPAMTImqRXETIOEUkpeuzAkdynMhQb/gglr6Dg5/OTxv6SidMPbGDv9gjDtc2roRh3y1OGJWfl/S2V49uMhXNhYsVtBZXQN6dFeT6XXMMLMABZfDujVKk7FijeUBPsbc/F0JL9zeR5bVk/mOjgwcEtCK1r8AmaHmZSjB1ULw+iacw9r3QChdBsUIVrxjHkIBsQKw360s2sfwMzKHa6ZVXY0JHikVxxpujWC8nkOQOSE5sR5CfvLtVYl1On+Uu7/HUUwEQA0+cq229EkgLrQC0Wj0nsU7lTrjEBfuo9Anel751HEqeXILTLqE0MzmadBXqB0+WMYHEjxPhzySLY3DD98RB+GymnuEeFjHg9PEpexuwGlGYh6Oy3scPTNTS95C2MTbtdvstjWCC7ZBzkaO65kYdswutHTPaPOECbVzx59SE+7mroYZngu1xsrKeVPKJx8RLkmtF6urGn3juWH8oBDyxwxhRJhTRtShZvMozTCsNajt4c+86g6PJmSZzWqcafjNgJ8qQzmzQpGtQ38fL3bTkkIEmaNukQOoWiO624ZOVc/P7yQywTYSt3lmlLeppOJKpwVKXkgqQk2Qjouj6WW04V9uUrh49j7iL2dlDh9lFuxiueuGzIbbrl5A+L3dqnBNHo7VI7I+80kiFJ1nm18LQIhiy8Z/OTlEY4YAj15luG9Zm6dYNbz8rTa9IN7c7UGbtSvyppJCa4FO9dKotvhNfMcgVT+9DL8dEcpRh+EJhJewgMe5ZrKvnfcIZIExZwMNRk0u37+DZQkuFWHII CRqvZGx1 5V/qjQKDodkW8gEJ//VC2K36hIulfY/REH2n/VodnOuJqz7PgFASmoS0pn/lJ8bj2s6UY60yxUxRgvy+bpN84vKcwNym9rzocJTdAxbmfHbLOJm4N6H5dq9ciNUt0mlYg0GtFhLfSWfQpAFGwbyEi7uExq1d1MjAZJZ1uL8vptgGZMjL7JSKX8tbgEpYyIsepXqQdrD6NX9o6zDdXmFVAtaQAbldpelHy3tZe+uwZXFOhOlNXRJov4tZmSP8JvIS2c6FSbQZwHjFIZuQxzC013uPYMaPHWAnTMsVfhdKE/FeBAK1/V9U4E55c5XYUUz2YZ6ET/4eOEhVssP/TMgzGxyGZHsLMqc9SiBafx9S1xgr5bIk0JRtWuUOb9whAtHgyZvf/4O89DrXV8z8jbdBfyyvUz+RMrkPqRamhWdtZVjAt08+y2Yql9fAWSgS0YCd368qZHZwLpuWmDuDvWujFnHySc52lSnn+1HbUO39JjCTsD6rlj71rH42qT+uUNLMZ8HyMg0wGdgE8CSwfBp0V88vNWKjt9umOBBb/uf0VQVOCTaJzDrfSKEMFarvU5mtRiUD0UkHDYwZDBxLMhfwgGJzRCP/Ijyz/Ofc3fv2d1C8FCYlC540vbq2F+W7jDyNPedQlxu1M3VOKlG9I8e9A6S9JBP7j3twCT2HqIZ7ZyB15z9Quc/JPqMlOkTRLyqiixOx0nUh/mE5pTjRIJLwwBqg3sd94DfVPOGl8JHySZNQaxUwaItJeAF4EvoWxvO+1X8Mu31VgoKMGTy+bap+vP1xrB3RfK/PRb59yaOVt35E5C72iERqQbpLMRtJRy1WLUrrLn+7DclhT9cG99seKgJtfyqq8fvcPaOIw1Xi7gK0wgxJloiwLLG/bC+qWA1c7+StBoL0gdQvQFRP6TKyGcZGNS/QslPjx2flb6raujGLp8nCcQ/9QWw8FDJ76tJMtIh0ab1Gv0LLICUk19AZv3rSvzuzs XSJEgl1L MxpwlVx6zya9YG6yrolvToKWLNimMFCDv9C9tDg3dYDQyeiUbsasO+Nk8LwMypSE/dlWD1qlkj707lFXFTe5b9EEHAGl2NOIA7uhBA2D5KjDnqjnN3LceoY8Xbtwmjaid+qCS+TsJywBswd11nGuFQ0RbIShupwDUf+n+Sqzlj2/IgDSE7z6HVBoicq2EO7MFsWrrlSsN/UlWqSXlRCPFYdDRP4nFOzZa3YxGt8CcrY7rJar9Ukdb4Sj5c+7IVWcWpSe+VyCVVmldYwYk0494Qg/jxm7eNRAXZXuiF4iUYfJAbOqSup5BKYzwaOoqJSYQojGJkJuAenOOdD1NGGliDmyd1ToWqtUq52QV6kQqdYawJod3jFLv28MYWZaE+ycpGsxlqEZN4PG+IyTHHzk3IC7bz9wi3wqVWSvZDgPc8GfeeqkdtpYJpebZ78I1IhHkyq8UXehwZurbfVM9LPdh1y+f/R70eJHXCl9SXLwha5g== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000233, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: A rename potentially involves updating 4 different inode timestamps. Add a function that handles the details sanely, and convert the libfs.c callers to use it. Signed-off-by: Jeff Layton Reviewed-by: Jan Kara --- fs/libfs.c | 36 +++++++++++++++++++++++++++--------- include/linux/fs.h | 2 ++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/fs/libfs.c b/fs/libfs.c index a7e56baf8bbd..9ee79668c909 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -692,6 +692,31 @@ int simple_rmdir(struct inode *dir, struct dentry *dentry) } EXPORT_SYMBOL(simple_rmdir); +/** + * simple_rename_timestamp - update the various inode timestamps for rename + * @old_dir: old parent directory + * @old_dentry: dentry that is being renamed + * @new_dir: new parent directory + * @new_dentry: target for rename + * + * POSIX mandates that the old and new parent directories have their ctime and + * mtime updated, and that inodes of @old_dentry and @new_dentry (if any), have + * their ctime updated. + */ +void simple_rename_timestamp(struct inode *old_dir, struct dentry *old_dentry, + struct inode *new_dir, struct dentry *new_dentry) +{ + struct inode *newino = d_inode(new_dentry); + + old_dir->i_mtime = inode_set_ctime_current(old_dir); + if (new_dir != old_dir) + new_dir->i_mtime = inode_set_ctime_current(new_dir); + inode_set_ctime_current(d_inode(old_dentry)); + if (newino) + inode_set_ctime_current(newino); +} +EXPORT_SYMBOL_GPL(simple_rename_timestamp); + int simple_rename_exchange(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry) { @@ -707,11 +732,7 @@ int simple_rename_exchange(struct inode *old_dir, struct dentry *old_dentry, inc_nlink(old_dir); } } - old_dir->i_ctime = old_dir->i_mtime = - new_dir->i_ctime = new_dir->i_mtime = - d_inode(old_dentry)->i_ctime = - d_inode(new_dentry)->i_ctime = current_time(old_dir); - + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); return 0; } EXPORT_SYMBOL_GPL(simple_rename_exchange); @@ -720,7 +741,6 @@ int simple_rename(struct mnt_idmap *idmap, struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry, unsigned int flags) { - struct inode *inode = d_inode(old_dentry); int they_are_dirs = d_is_dir(old_dentry); if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE)) @@ -743,9 +763,7 @@ int simple_rename(struct mnt_idmap *idmap, struct inode *old_dir, inc_nlink(new_dir); } - old_dir->i_ctime = old_dir->i_mtime = new_dir->i_ctime = - new_dir->i_mtime = inode->i_ctime = current_time(old_dir); - + simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); return 0; } EXPORT_SYMBOL(simple_rename); diff --git a/include/linux/fs.h b/include/linux/fs.h index bdfbd11a5811..14e38bd900f1 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2979,6 +2979,8 @@ extern int simple_open(struct inode *inode, struct file *file); extern int simple_link(struct dentry *, struct inode *, struct dentry *); extern int simple_unlink(struct inode *, struct dentry *); extern int simple_rmdir(struct inode *, struct dentry *); +void simple_rename_timestamp(struct inode *old_dir, struct dentry *old_dentry, + struct inode *new_dir, struct dentry *new_dentry); extern int simple_rename_exchange(struct inode *old_dir, struct dentry *old_dentry, struct inode *new_dir, struct dentry *new_dentry); extern int simple_rename(struct mnt_idmap *, struct inode *,