From mboxrd@z Thu Jan 1 00:00:00 1970 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]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F0F2AEB3632 for ; Mon, 2 Mar 2026 20:35:51 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F0D96B00AE; Mon, 2 Mar 2026 15:35:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5B4756B00E1; Mon, 2 Mar 2026 15:35:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 459496B00E2; Mon, 2 Mar 2026 15:35:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2FB486B00AE for ; Mon, 2 Mar 2026 15:35:51 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id E585D13A78A for ; Mon, 2 Mar 2026 20:35:50 +0000 (UTC) X-FDA: 84502279260.20.6BB734A Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf08.hostedemail.com (Postfix) with ESMTP id 1BECE160011 for ; Mon, 2 Mar 2026 20:35:48 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RMsxDiV+; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of jlayton@kernel.org designates 172.234.252.31 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=1772483749; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8eYUbiUeYEKyS6012fQP0FIT0zOzt9EYLbV8hE1XPVw=; b=39WbNaV7LKnKIuEgj7Z9tS2L+O+uYonG2fKByZWIgbq4pWvZhYmb4GC3xwTqOVIVUxJoDC R3X6z6MbmtVczTYa0plnHGf+nnTM4DhkpcgTbxx1EpcnpxOsdOeZ+7xMN5Q9Dy0cS1e7LU YWwYTsbhf6wpbEI957Nogwu8puAA4ks= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RMsxDiV+; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf08.hostedemail.com: domain of jlayton@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=jlayton@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1772483749; a=rsa-sha256; cv=none; b=3UEDeT3QdO7m9n15L2xiV1KtkV1psIlzEeAv4pMeD5QdMUe5oq1+Y/3CQPxlD246qYtn2J hA47fqiiDk8mZffc9vQai5GQhS2qFkDG1BoWZcpEzcOG9vfj8s9DPrOJADK0gOmuYztMyO 9Rs86B3qlHVxnQitDEZOfyXy43J9xnk= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id E46F5416B4; Mon, 2 Mar 2026 20:35:47 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC52CC19425; Mon, 2 Mar 2026 20:35:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772483747; bh=Vblf53wnflobV1sY2YHbURgI/PfiT/3CadtF+Sa/Hf0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=RMsxDiV+sm+EXqFxHAbiFx2JYBbwuxbe9DrafO9YDSX68UcTN3B5teVyI2vROaDnp 3WTo2NmhCir2A2yu8chTmj9NQSBlmN6tYcZToxe/rxInx/oiV0nxxRWDI255r8ovLn Vs3vUyLaMSUf5Lam8QMZJr7/B91vUtD1T+F4UMIUpNvXX2hqCQnSMxMPzJ6IE9AuiN 7J/8RCsJ6AZVyKMRdMzAQmkyDIHUtJMoIbCq901F/cysRHciOl5FVuFjRprrmu9gw/ bVuoUKYrxSTUtsLeLR4FKbhu+zXuT30betLzh/olc8Ryjt27KP5AqS2xGnooSjQUs+ RiPcNnkWAeAdg== From: Jeff Layton Date: Mon, 02 Mar 2026 15:24:29 -0500 Subject: [PATCH v2 045/110] ubifs: use PRIino format for i_ino MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260302-iino-u64-v2-45-e5388800dae0@kernel.org> References: <20260302-iino-u64-v2-0-e5388800dae0@kernel.org> In-Reply-To: <20260302-iino-u64-v2-0-e5388800dae0@kernel.org> To: Alexander Viro , Christian Brauner , Jan Kara , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Dan Williams , Matthew Wilcox , Eric Biggers , "Theodore Y. Ts'o" , Muchun Song , Oscar Salvador , David Hildenbrand , David Howells , Paulo Alcantara , Andreas Dilger , Jan Kara , Jaegeuk Kim , Chao Yu , Trond Myklebust , Anna Schumaker , Chuck Lever , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Steve French , Ronnie Sahlberg , Shyam Prasad N , Bharath SM , Alexander Aring , Ryusuke Konishi , Viacheslav Dubeyko , Eric Van Hensbergen , Latchesar Ionkov , Dominique Martinet , Christian Schoenebeck , David Sterba , Marc Dionne , Ian Kent , Luis de Bethencourt , Salah Triki , "Tigran A. Aivazian" , Ilya Dryomov , Alex Markuze , Jan Harkes , coda@cs.cmu.edu, Nicolas Pitre , Tyler Hicks , Amir Goldstein , Christoph Hellwig , John Paul Adrian Glaubitz , Yangtao Li , Mikulas Patocka , David Woodhouse , Richard Weinberger , Dave Kleikamp , Konstantin Komarov , Mark Fasheh , Joel Becker , Joseph Qi , Mike Marshall , Martin Brandenburg , Miklos Szeredi , Anders Larsen , Zhihao Cheng , Damien Le Moal , Naohiro Aota , Johannes Thumshirn , John Johansen , Paul Moore , James Morris , "Serge E. Hallyn" , Mimi Zohar , Roberto Sassu , Dmitry Kasatkin , Eric Snowberg , Fan Wu , Stephen Smalley , Ondrej Mosnacek , Casey Schaufler , Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter , Sumit Semwal , Eric Dumazet , Kuniyuki Iwashima , Paolo Abeni , Willem de Bruijn , "David S. Miller" , Jakub Kicinski , Simon Horman , Oleg Nesterov , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , "Darrick J. Wong" , Martin Schiller , Eric Paris , Joerg Reuter , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , Oliver Hartkopp , Marc Kleine-Budde , David Ahern , Neal Cardwell , Steffen Klassert , Herbert Xu , Remi Denis-Courmont , Marcelo Ricardo Leitner , Xin Long , Magnus Karlsson , Maciej Fijalkowski , Stanislav Fomichev , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, nvdimm@lists.linux.dev, fsverity@lists.linux.dev, linux-mm@kvack.org, netfs@lists.linux.dev, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-nilfs@vger.kernel.org, v9fs@lists.linux.dev, linux-afs@lists.infradead.org, autofs@vger.kernel.org, ceph-devel@vger.kernel.org, codalist@coda.cs.cmu.edu, ecryptfs@vger.kernel.org, linux-mtd@lists.infradead.org, jfs-discussion@lists.sourceforge.net, ntfs3@lists.linux.dev, ocfs2-devel@lists.linux.dev, devel@lists.orangefs.org, linux-unionfs@vger.kernel.org, apparmor@lists.ubuntu.com, linux-security-module@vger.kernel.org, linux-integrity@vger.kernel.org, selinux@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, netdev@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-fscrypt@vger.kernel.org, linux-xfs@vger.kernel.org, linux-hams@vger.kernel.org, linux-x25@vger.kernel.org, audit@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-can@vger.kernel.org, linux-sctp@vger.kernel.org, bpf@vger.kernel.org, Jeff Layton X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=21308; i=jlayton@kernel.org; h=from:subject:message-id; bh=Vblf53wnflobV1sY2YHbURgI/PfiT/3CadtF+Sa/Hf0=; b=owEBbQKS/ZANAwAKAQAOaEEZVoIVAcsmYgBppfH6/nY2nQKgLDOrzw4T4jktGxbZ0XJ3Nyeo4 a9nl2QuwT+JAjMEAAEKAB0WIQRLwNeyRHGyoYTq9dMADmhBGVaCFQUCaaXx+gAKCRAADmhBGVaC FRHHD/9C7sNOkZiWSrZi2V4t2bWnk9mmoD45dkQmMikxUe/NmmDxb1G9zUiklM72Ef+ioMuTcyZ R4JaJOwdggD1jVyWlX5m23j0qNm/J47KnuQsiSlcilft7vKmUio1tr05zUGnVoccth4jrbnfYBS NVnq8NMtSKEZL/Sy7Y9j8u+svQMVrbdClGCg1xE9QTMNLjRzcW/fTvjZO5Iyv2rBenqc/FCzHmA Lra/1qHyOiQLuZs7Pi1V9Rl9Gk9bpUZFwg1qs4x1G7jWyPX3n4mM6+yA1tdGWkQJxNQ3dTTOd9b JFOhVrybVi3gHEyXZ58/HaOyMjoAtypsnZW3Qqw0A6Byb4fveOpzTdfNyrpW90Js8GzNFxowyvY cfsypHL0g2KjAojOrsDSBIRuL1a0OVNoWKRr9cyneGYKPPCk2bQXfVzwJaZSH/i4cSeaPdBMudV ph6kG56lYX4PNRYC60FjZ22I7wnuOzb7qmTwK8bKTDu7szFK+Qo3FkMZu+IHIhKH3dZYSlXhhrt 1FM9YYkvOaqvlPV32PwkxzgFcVpBJwHn87E24hlk9MWfc4+lHCEtJ4cs6/tqMlzmCmxBhPaPgSe xUG7ppgMbLst0JBkv2EgoVjdOSQAO4334OhB+/JzRskk/1cyhPY3yIS9xfJihT858Pp0KM1nGHT YGmJfPu81JS+aNQ== X-Developer-Key: i=jlayton@kernel.org; a=openpgp; fpr=4BC0D7B24471B2A184EAF5D3000E684119568215 X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 1BECE160011 X-Stat-Signature: 736ky4gw1errg13isczkbjz9rhrandwe X-Rspam-User: X-HE-Tag: 1772483748-491351 X-HE-Meta: U2FsdGVkX1+6pn/+LNfTe965HGld0BXy0MdMbszLBZ/SU5S5iZ9Bl1i7bwnS/5aBXAHJ8B2f1dhK0qPWdsXAhPXcefmVX+dY8y/FMLaNDgq4pbi+CtEO88ZmcZv8r5LO9EDC7CEz7mZnrw7hJ1ggVezDJCSHIwQDXBU+BikNfrl1yIhtPu9go+Fokfs46zPxXgtdrTfo1PHdWaGudZ0OT8/tCGxip1ZQfEgAjV6spLtZVmI0Isr+ZoxSZwwVL0Op/Fkm60i7Niu0vjg73Cr+qQ/uIdidLzmszX7VCsFr+0KyPCYwfu+Bn5ETU+6YXNVKN9sKzC0ipvepSxtqauLk6U8Y+GmPlzYHAND/+vttsMuA1TDo3ki5R1UCwWtNtdKnY7eDPJyKf5ohg/Tn8DAvLOwhUiyOXNIB7YV+/S/2q0Fwxot8xqdPpxWod0s73X2YRonRLMtpnyDDrv9ZG0czbc1XM7MN76wzgR0VCb+H0ctLgT+J7lIEQ1gST78n5qDH52pEYulMHgMhy57h92wg2KVZ5EoGZdtnymCJJOBF2V10G/4PjHy44kWte4SIhibIV4cfvosgiCiboraHbLDtTXs+GdnDMK7UHzxPLBUE+d0JYJqkfGZOHaEo2jG/xYcKcyXy4FS4shmBj2Mrk2RlHxt4plgU6PvowOrP8gvL/uajEsTf390TowQnOOz8XKaymtE1pZBR3WXsJdFLyt6/xBlH2Yxq2jxoytkctp00QB5AexAhVp9a0o1jkdabswGlu4twaX2YJPJEkyymURnRtjbotwYqgJmgR1dCmCW+sg67WoO7+PAZDOrRB9Gomz6URcp9Bf7CdemCKw0VtgxHi52EAGUsxZ1iOMgAAxaOcL8y7cNg9QsSMNWv00DXkAV1mSkUvapPvAIaVGZ9QPIXVwhMz09dSk5Ap3CtMFlkAsmP9hevYs3j3yjedqgAyAOTGmyFbnGXu4XEoZUEdl1 pnJ2Onb8 6iXtnCkP4MdMquN8sQfEFtSeYF8ubiMrbIIMhreni6tPfTpHRJdq3x1vMUUH5fCaJxGsoU83WNXMB0xICy3vbNS1lTd3txQ+ja+Z+snvY0GXFnz+c0UE1duJtcjEk06pxoycuNDpt3On5gu48XoH/NpthGF5uwroKwidnDilX5gGbASB9uqHsP3MS/RF3lz5VM0oHdQji2PABzfcvIUIU48fcvpfJj2UNTh9lQfebqjVS7vUV/0sSAtZH9J2tYe0RI2Q0lynvPHsjGes1SPlLyPeHmSdMDGXDNXZXLgfrNitKYGpsLx06Ex6D0xIyw0rlC0ruuQ1BUI+8WBAEG5Q4ifgFWoXsSKXu+HPGMeyE+hTZlbJcompwFgeqqcl2mhnFihrK0dARSwUKN9w+TMCp6HS0yJsElKOXZvkpOR1BCNoYkqVXyNZWYzVKVq4y4gC38ZkyHgiFQhEd8e7TPBq1c7f7E9Sy/BsqLqyEkI2ctZ96GIA79PMH1PXtXlB0G6fT3JJ6GMFBrhF1d1/ygobg76jcHboVziOb5zGLJWONpzPfMSVm8QYyPMl9JI0xyBelqlLVZJvjGANe77jxATHjfGVOlqo70H0b2IkjkpJj2SA4YA9xmbIWoRC0iM+cDXxOf2cbpBnQxFpl6PpPvTUrYlWxiuPT05Rc15devZ+W0jY6qXAFQlh1CMIDfTnTyVzGXDUYq3yChe09Cle2vMhXrDjIrKoqkzQoAuChOWs4xCH/a9XFYgTWuUsM3gYsjyj62heMKMiJ5B6koR4e8UlRJpXbp7aoX3l7XQV7FQLRThMkb2DeLmcbZd4EQqsil/eIS9M51sG1AY1J3nvRPSoUqs15EEAYtY5fJlf7PanGdutPVE2f7GiPE6GE3VzDgzs/3+tn5YZF7SSpz2vDojw/vFLbY/l39t5KjllpHkZgXRc7txBBrdsD19l7fknm9mTQWVgKVLjAcM/z79sxqJv/65FjJhU5 hyLJfwht 400daG8ecWH/QACi59Bl4/iJ4JCz6Xeh22SFq8OjFLHL7A4HoEmvWIavOvbtAzE3ScTCZmS4OP0dncyQfTA/vByLfrGO0poUci3DoiWHUfhIjK55L9DU5o1qU23VuWH6MiRTmL8MPykw1V/uVECvXLLLYblH+dnKVIprgRLtXiwSTDowy4SmaQgBASugMHPI3prwymwN8JGknUnIUjKo2rtO7zMqo7TKE4ht216ytmMdyb7BxRcBxAF2+CWMlGHDtGeeEBzKvBv/Zix3ibebgPsZPLi5TgZAuw8+azhxbcBOTCsgqtHEeuyNL8F+2INwcfDSATBYQqwFPRoR+mX6+YL3WnXjhxHbXsMVWW2CG/vGodCbMDylAOKsNFHNTbQoMTSLUkizyB40AUmjUl52LAZKJPtHmw6NXlS7DuyWemB8lSFk75QCFQvVpM4XI4PZSFXi0yj31TwiZ92ptuh8y/Z9CrHg+0OqbJpLmr24xikbbJLMP5cpHZq3/Bl5l1/BNv/Xzhi9DPmRwG04Ocat+Kzq6mLZYbkeqOJIjq1moFBviV+vrvK1M29t1/AtQK7BXYg1yYSc86efrgpRf0gK7RFTVlUdgq+6pZ8DpWs1xV059NGH/Oq+e1cEWQm77FlhRVJYSNnEB3H2XQIy9nqGlmMMCA5zcu5Z6jIIP+EI3uzTw1/GOUUTuYKocTnXJbamq3TPs3cENoDm9eoL+ysFuOwL2/UeMJbPsWPdigBCljdNKSV1PoCegu7+F2GIpToszYRWTEzq1FmmUmLq/08DGHTko0FvI+7AxInWHDcW6KKllCHlvxgcEoauNKReZlvPNnnkIWNTPKyIZBwQiQiCP7KAcJ+qdjqy5udMFc0TjT7/xALHjUma8Z2X2NN/WfPDH/x53dVqynBjanagssMia0blZBy8yLiIXaM5Z/t8i0q964gbNabEAVGdeRpTr1dC6bUs7RPw/aVXMG5UbXsaHD33Hlqxk Gsfw069+ VHi36D7yn4cBrwZ2o0XCyqpUQuzE6qXlt5fX/vj4/Ythbc4PXXNenbIkchBRO0yhlhz1JLCZld4rwAl1ZCQ1+O1rt/SwQGBsWdsqvY8+HO9aWXXBGKH4m1jCL3Pu6wtTtKbg6V+ajAB6Bsk5CivFLnngbry+2AYrSdw5HILguDrfJZX7k/Jqa5kwtVvVqizsmzXQTTvIw2dm2paEARnU0hMqsrszaeLV3RbFB9Q8JzfqC8WVIAd/FxiCf1av9KB7YpaP3Bk5GLUltQVZEZjLRBllb6PGvlMOeyMUtj09pgXd42VvQAdIs6E6nUmr2osmtw+/bu1pI03+nJChqmHqe+JlqqqAqhKjY3OKBKuE5fArKZfINDdiPnH4aU0gaReNcmxNElKFmet9CMdAjVdhls07S7Udf3xEcs4GEcQRadw/5xYMw18Crz7r+iaAmfd1IemCAqIR2Gm+qdebqXgXEozflDgHG9ws9HKFppQj/tZDLQMopUDtUGtrnvuU9zQiHlKAaTwqaBmjDu3HFJX+gEFDiWU5eWycH9legjljkUTz/A4+s79+VS6tdXpxvkHJTvRF/m1YvDWJ0uLUfi2Ja0F5zizBApGd5rfnoCt2/kmO5uVkJ5/6KsqpGzNBPAhjUwLvvMsQOGlXrl+2m3aqOWXPtqyXbGFUJLktWnCw8yTtGtelX8IISEhqmAT5GXyrMd/HK0JNjZ9VKbPwDuH3gYIjebgs9YxYWkANuyrc6E3ThhK1p7Y4wwug/B4Jhaa06ZfaUHaDuGqvfgVRsJOgOFJ1YfJEwZfhtj4wWvOnm0Ehbj9prJGbn+b77y9h47jNdiWaIeDnxUHB70GjHFad2e7SgC4k07oHIoG9YIuYHSDidzGP1hT7MGpS7rHXmh+ZJD4i72EdViPT4lyELxI2/rkFT0K5cG4qUsweoCXd3j5i0LS0l/XXLOOhFywYH7cq3lSt6/edFNYhpidwdjHxnQrE/cxvY 47/xB6sh 8aS1+ZKXsdbFd/8IIZZW8qLg0YPxYxIH8L+oLPD0Ag3BEkw3SsrhSoWZsGZHU3OWLKQy3CQPg21Ro61an19qmhv23oJPMPuRPTnPSJ2TFiNW3/A1xFZ/1N1SrjhIWX0RGUTBcqaBiQT/d0J+SIAYKk012S7Y5IwXW6BqLOh62JpBzz6h73iK439tQpVxW1EuOA6+mZXrDhcOpAn5r0pibymXn6uIhEGUrCJzTBbQvBP3JwdyvS22uudxa62bOrKw8TbtB8sRvibhiRXF6xeSe0aW5nNQdtRIyvss0EnZzpaVYZXI8PWBi/SbQHW+++e+B2or5ykrhYGDOF9iWNhAjvxUSm+LK2SQ+XAfEOs5/QCF3Hn3npzvH1TBs8MPkiDBVHsFV2g1jexldVkkEhf56j2IxMPQREjhCtAMu+zEmbzw== Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Convert ubifs i_ino format strings to use the PRIino format macro in preparation for the widening of i_ino via kino_t. Remove now-unnecessary (unsigned long) casts on i_ino. Signed-off-by: Jeff Layton --- fs/ubifs/debug.c | 8 ++++---- fs/ubifs/dir.c | 28 ++++++++++++++-------------- fs/ubifs/file.c | 28 ++++++++++++++-------------- fs/ubifs/journal.c | 6 +++--- fs/ubifs/super.c | 16 ++++++++-------- fs/ubifs/tnc.c | 4 ++-- fs/ubifs/xattr.c | 14 +++++++------- 7 files changed, 52 insertions(+), 52 deletions(-) diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c index 160c16aa7b6e7088355582670357262ab3930225..c7c7dbf0e4c546c7213effa5c849dbba0532f9ed 100644 --- a/fs/ubifs/debug.c +++ b/fs/ubifs/debug.c @@ -230,7 +230,7 @@ void ubifs_dump_inode(struct ubifs_info *c, const struct inode *inode) int count = 2; pr_err("Dump in-memory inode:"); - pr_err("\tinode %lu\n", inode->i_ino); + pr_err("\tinode %" PRIino "u\n", inode->i_ino); pr_err("\tsize %llu\n", (unsigned long long)i_size_read(inode)); pr_err("\tnlink %u\n", inode->i_nlink); @@ -1101,7 +1101,7 @@ int dbg_check_synced_i_size(const struct ubifs_info *c, struct inode *inode) if (ui->ui_size != ui->synced_i_size && !ui->dirty) { ubifs_err(c, "ui_size is %lld, synced_i_size is %lld, but inode is clean", ui->ui_size, ui->synced_i_size); - ubifs_err(c, "i_ino %lu, i_mode %#x, i_size %lld", inode->i_ino, + ubifs_err(c, "i_ino %" PRIino "u, i_mode %#x, i_size %lld", inode->i_ino, inode->i_mode, i_size_read(inode)); dump_stack(); err = -EINVAL; @@ -1163,7 +1163,7 @@ int dbg_check_dir(struct ubifs_info *c, const struct inode *dir) kfree(pdent); if (i_size_read(dir) != size) { - ubifs_err(c, "directory inode %lu has size %llu, but calculated size is %llu", + ubifs_err(c, "directory inode %" PRIino "u has size %llu, but calculated size is %llu", dir->i_ino, (unsigned long long)i_size_read(dir), (unsigned long long)size); ubifs_dump_inode(c, dir); @@ -1171,7 +1171,7 @@ int dbg_check_dir(struct ubifs_info *c, const struct inode *dir) return -EINVAL; } if (dir->i_nlink != nlink) { - ubifs_err(c, "directory inode %lu has nlink %u, but calculated nlink is %u", + ubifs_err(c, "directory inode %" PRIino "u has nlink %u, but calculated nlink is %u", dir->i_ino, dir->i_nlink, nlink); ubifs_dump_inode(c, dir); dump_stack(); diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 4c9f57f3b2adbbd396b288878cb18fa87cdbd0df..8197948e490d6e5cea9ddd31b44562462cafb9b4 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -223,7 +223,7 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, struct ubifs_info *c = dir->i_sb->s_fs_info; struct fscrypt_name nm; - dbg_gen("'%pd' in dir ino %lu", dentry, dir->i_ino); + dbg_gen("'%pd' in dir ino %" PRIino "u", dentry, dir->i_ino); err = fscrypt_prepare_lookup(dir, dentry, &nm); if (err == -ENOENT) @@ -281,7 +281,7 @@ static struct dentry *ubifs_lookup(struct inode *dir, struct dentry *dentry, if (IS_ENCRYPTED(dir) && (S_ISDIR(inode->i_mode) || S_ISLNK(inode->i_mode)) && !fscrypt_has_permitted_context(dir, inode)) { - ubifs_warn(c, "Inconsistent encryption contexts: %lu/%lu", + ubifs_warn(c, "Inconsistent encryption contexts: %" PRIino "u/%" PRIino "u", dir->i_ino, inode->i_ino); iput(inode); inode = ERR_PTR(-EPERM); @@ -318,7 +318,7 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, * parent directory inode. */ - dbg_gen("dent '%pd', mode %#hx in dir ino %lu", + dbg_gen("dent '%pd', mode %#hx in dir ino %" PRIino "u", dentry, mode, dir->i_ino); err = ubifs_budget_space(c, &req); @@ -386,7 +386,7 @@ static struct inode *create_whiteout(struct inode *dir, struct dentry *dentry) * atomically. */ - dbg_gen("dent '%pd', mode %#hx in dir ino %lu", + dbg_gen("dent '%pd', mode %#hx in dir ino %" PRIino "u", dentry, mode, dir->i_ino); inode = ubifs_new_inode(c, dir, mode, false); @@ -460,7 +460,7 @@ static int ubifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, * be released via writeback. */ - dbg_gen("dent '%pd', mode %#hx in dir ino %lu", + dbg_gen("dent '%pd', mode %#hx in dir ino %" PRIino "u", dentry, mode, dir->i_ino); err = fscrypt_setup_filename(dir, &dentry->d_name, 0, &nm); @@ -589,7 +589,7 @@ static int ubifs_readdir(struct file *file, struct dir_context *ctx) bool encrypted = IS_ENCRYPTED(dir); struct ubifs_dir_data *data = file->private_data; - dbg_gen("dir ino %lu, f_pos %#llx", dir->i_ino, ctx->pos); + dbg_gen("dir ino %" PRIino "u, f_pos %#llx", dir->i_ino, ctx->pos); if (ctx->pos > UBIFS_S_KEY_HASH_MASK || ctx->pos == 2) /* @@ -764,7 +764,7 @@ static int ubifs_link(struct dentry *old_dentry, struct inode *dir, * changing the parent inode. */ - dbg_gen("dent '%pd' to ino %lu (nlink %d) in dir ino %lu", + dbg_gen("dent '%pd' to ino %" PRIino "u (nlink %d) in dir ino %" PRIino "u", dentry, inode->i_ino, inode->i_nlink, dir->i_ino); ubifs_assert(c, inode_is_locked(dir)); @@ -836,7 +836,7 @@ static int ubifs_unlink(struct inode *dir, struct dentry *dentry) * deletions. */ - dbg_gen("dent '%pd' from ino %lu (nlink %d) in dir ino %lu", + dbg_gen("dent '%pd' from ino %" PRIino "u (nlink %d) in dir ino %" PRIino "u", dentry, inode->i_ino, inode->i_nlink, dir->i_ino); @@ -941,7 +941,7 @@ static int ubifs_rmdir(struct inode *dir, struct dentry *dentry) * because we have extra space reserved for deletions. */ - dbg_gen("directory '%pd', ino %lu in dir ino %lu", dentry, + dbg_gen("directory '%pd', ino %" PRIino "u in dir ino %" PRIino "u", dentry, inode->i_ino, dir->i_ino); ubifs_assert(c, inode_is_locked(dir)); ubifs_assert(c, inode_is_locked(inode)); @@ -1018,7 +1018,7 @@ static struct dentry *ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, * directory inode. */ - dbg_gen("dent '%pd', mode %#hx in dir ino %lu", + dbg_gen("dent '%pd', mode %#hx in dir ino %" PRIino "u", dentry, mode, dir->i_ino); err = ubifs_budget_space(c, &req); @@ -1096,7 +1096,7 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, * directory inode. */ - dbg_gen("dent '%pd' in dir ino %lu", dentry, dir->i_ino); + dbg_gen("dent '%pd' in dir ino %" PRIino "u", dentry, dir->i_ino); if (S_ISBLK(mode) || S_ISCHR(mode)) { dev = kmalloc_obj(union ubifs_dev_desc, GFP_NOFS); @@ -1183,7 +1183,7 @@ static int ubifs_symlink(struct mnt_idmap *idmap, struct inode *dir, .dirtied_ino = 1 }; struct fscrypt_name nm; - dbg_gen("dent '%pd', target '%s' in dir ino %lu", dentry, + dbg_gen("dent '%pd', target '%s' in dir ino %" PRIino "u", dentry, symname, dir->i_ino); err = fscrypt_prepare_symlink(dir, symname, len, UBIFS_MAX_INO_DATA, @@ -1349,7 +1349,7 @@ static int do_rename(struct inode *old_dir, struct dentry *old_dentry, * ino_req: marks the target inode as dirty and does not write it. */ - dbg_gen("dent '%pd' ino %lu in dir ino %lu to dent '%pd' in dir ino %lu flags 0x%x", + dbg_gen("dent '%pd' ino %" PRIino "u in dir ino %" PRIino "u to dent '%pd' in dir ino %" PRIino "u flags 0x%x", old_dentry, old_inode->i_ino, old_dir->i_ino, new_dentry, new_dir->i_ino, flags); @@ -1597,7 +1597,7 @@ static int ubifs_xrename(struct inode *old_dir, struct dentry *old_dentry, * parent directory inodes. */ - dbg_gen("dent '%pd' ino %lu in dir ino %lu exchange dent '%pd' ino %lu in dir ino %lu", + dbg_gen("dent '%pd' ino %" PRIino "u in dir ino %" PRIino "u exchange dent '%pd' ino %" PRIino "u in dir ino %" PRIino "u", old_dentry, fst_inode->i_ino, old_dir->i_ino, new_dentry, snd_inode->i_ino, new_dir->i_ino); diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index cd04755e792a7f8e7d33ed4e67806cd202c71fad..90248f5a91cdd71a9d3c353a5cd8d1f95377fddc 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -90,7 +90,7 @@ static int read_block(struct inode *inode, struct folio *folio, size_t offset, return 0; dump: - ubifs_err(c, "bad data node (block %u, inode %lu)", + ubifs_err(c, "bad data node (block %u, inode %" PRIino "u)", block, inode->i_ino); ubifs_dump_node(c, dn, UBIFS_MAX_DATA_NODE_SZ); return -EINVAL; @@ -106,7 +106,7 @@ static int do_readpage(struct folio *folio) loff_t i_size = i_size_read(inode); size_t offset = 0; - dbg_gen("ino %lu, pg %lu, i_size %lld, flags %#lx", + dbg_gen("ino %" PRIino "u, pg %lu, i_size %lld, flags %#lx", inode->i_ino, folio->index, i_size, folio->flags.f); ubifs_assert(c, !folio_test_checked(folio)); ubifs_assert(c, !folio->private); @@ -162,7 +162,7 @@ static int do_readpage(struct folio *folio) dbg_gen("hole"); err = 0; } else { - ubifs_err(c, "cannot read page %lu of inode %lu, error %d", + ubifs_err(c, "cannot read page %lu of inode %" PRIino "u, error %d", folio->index, inode->i_ino, err); } } @@ -212,7 +212,7 @@ static int write_begin_slow(struct address_space *mapping, int err, appending = !!(pos + len > inode->i_size); struct folio *folio; - dbg_gen("ino %lu, pos %llu, len %u, i_size %lld", + dbg_gen("ino %" PRIino "u, pos %llu, len %u, i_size %lld", inode->i_ino, pos, len, inode->i_size); /* @@ -526,7 +526,7 @@ static int ubifs_write_end(const struct kiocb *iocb, loff_t end_pos = pos + len; int appending = !!(end_pos > inode->i_size); - dbg_gen("ino %lu, pos %llu, pg %lu, len %u, copied %d, i_size %lld", + dbg_gen("ino %" PRIino "u, pos %llu, pg %lu, len %u, copied %d, i_size %lld", inode->i_ino, pos, folio->index, len, copied, inode->i_size); if (unlikely(copied < len && !folio_test_uptodate(folio))) { @@ -599,7 +599,7 @@ static int populate_page(struct ubifs_info *c, struct folio *folio, size_t offset = 0; pgoff_t end_index; - dbg_gen("ino %lu, pg %lu, i_size %lld, flags %#lx", + dbg_gen("ino %" PRIino "u, pg %lu, i_size %lld, flags %#lx", inode->i_ino, folio->index, i_size, folio->flags.f); end_index = (i_size - 1) >> PAGE_SHIFT; @@ -680,7 +680,7 @@ static int populate_page(struct ubifs_info *c, struct folio *folio, return 0; out_err: - ubifs_err(c, "bad data node (block %u, inode %lu)", + ubifs_err(c, "bad data node (block %u, inode %" PRIino "u)", page_block, inode->i_ino); return -EINVAL; } @@ -913,7 +913,7 @@ static int do_writepage(struct folio *folio, size_t len) } if (err) { mapping_set_error(folio->mapping, err); - ubifs_err(c, "cannot write folio %lu of inode %lu, error %d", + ubifs_err(c, "cannot write folio %lu of inode %" PRIino "u, error %d", folio->index, inode->i_ino, err); ubifs_ro_mode(c, err); } @@ -987,7 +987,7 @@ static int ubifs_writepage(struct folio *folio, struct writeback_control *wbc) loff_t i_size = i_size_read(inode), synced_i_size; int err, len = folio_size(folio); - dbg_gen("ino %lu, pg %lu, pg flags %#lx", + dbg_gen("ino %" PRIino "u, pg %lu, pg flags %#lx", inode->i_ino, folio->index, folio->flags.f); ubifs_assert(c, folio->private != NULL); @@ -1106,7 +1106,7 @@ static int do_truncation(struct ubifs_info *c, struct inode *inode, int offset = new_size & (UBIFS_BLOCK_SIZE - 1), budgeted = 1; struct ubifs_inode *ui = ubifs_inode(inode); - dbg_gen("ino %lu, size %lld -> %lld", inode->i_ino, old_size, new_size); + dbg_gen("ino %" PRIino "u, size %lld -> %lld", inode->i_ino, old_size, new_size); memset(&req, 0, sizeof(struct ubifs_budget_req)); /* @@ -1258,7 +1258,7 @@ int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct inode *inode = d_inode(dentry); struct ubifs_info *c = inode->i_sb->s_fs_info; - dbg_gen("ino %lu, mode %#x, ia_valid %#x", + dbg_gen("ino %" PRIino "u, mode %#x, ia_valid %#x", inode->i_ino, inode->i_mode, attr->ia_valid); err = setattr_prepare(&nop_mnt_idmap, dentry, attr); if (err) @@ -1308,7 +1308,7 @@ int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync) struct ubifs_info *c = inode->i_sb->s_fs_info; int err; - dbg_gen("syncing inode %lu", inode->i_ino); + dbg_gen("syncing inode %" PRIino "u", inode->i_ino); if (c->ro_mount) /* @@ -1495,7 +1495,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf) struct ubifs_budget_req req = { .new_page = 1 }; int err, update_time; - dbg_gen("ino %lu, pg %lu, i_size %lld", inode->i_ino, folio->index, + dbg_gen("ino %" PRIino "u, pg %lu, i_size %lld", inode->i_ino, folio->index, i_size_read(inode)); ubifs_assert(c, !c->ro_media && !c->ro_mount); @@ -1531,7 +1531,7 @@ static vm_fault_t ubifs_vm_page_mkwrite(struct vm_fault *vmf) err = ubifs_budget_space(c, &req); if (unlikely(err)) { if (err == -ENOSPC) - ubifs_warn(c, "out of space for mmapped file (inode number %lu)", + ubifs_warn(c, "out of space for mmapped file (inode number %" PRIino "u)", inode->i_ino); return VM_FAULT_SIGBUS; } diff --git a/fs/ubifs/journal.c b/fs/ubifs/journal.c index e28ab4395e5ca404d8e8d8f735c3113b58bcc941..7c4edfe98d13245982353d42231d4d87806ca50d 100644 --- a/fs/ubifs/journal.c +++ b/fs/ubifs/journal.c @@ -982,7 +982,7 @@ int ubifs_jnl_write_inode(struct ubifs_info *c, const struct inode *inode) int kill_xattrs = ui->xattr_cnt && last_reference; u8 hash[UBIFS_HASH_ARR_SZ]; - dbg_jnl("ino %lu, nlink %u", inode->i_ino, inode->i_nlink); + dbg_jnl("ino %" PRIino "u, nlink %u", inode->i_ino, inode->i_nlink); if (kill_xattrs && ui->xattr_cnt > ubifs_xattr_max_cnt(c)) { ubifs_err(c, "Cannot delete inode, it has too many xattrs!"); @@ -1743,7 +1743,7 @@ int ubifs_jnl_truncate(struct ubifs_info *c, const struct inode *inode, int dn_len = le32_to_cpu(dn->size); if (dn_len <= 0 || dn_len > UBIFS_BLOCK_SIZE) { - ubifs_err(c, "bad data node (block %u, inode %lu)", + ubifs_err(c, "bad data node (block %u, inode %" PRIino "u)", blk, inode->i_ino); ubifs_dump_node(c, dn, dn_size); err = -EUCLEAN; @@ -1987,7 +1987,7 @@ int ubifs_jnl_change_xattr(struct ubifs_info *c, const struct inode *inode, u8 hash_host[UBIFS_HASH_ARR_SZ]; u8 hash[UBIFS_HASH_ARR_SZ]; - dbg_jnl("ino %lu, ino %lu", host->i_ino, inode->i_ino); + dbg_jnl("ino %" PRIino "u, ino %" PRIino "u", host->i_ino, inode->i_ino); ubifs_assert(c, inode->i_nlink > 0); ubifs_assert(c, mutex_is_locked(&host_ui->ui_mutex)); diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 03bf924756ca003809d229837a970d5935450f23..c6dcb62827f3da0f6dd021c5c062059afd56ca00 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c @@ -92,7 +92,7 @@ static int validate_inode(struct ubifs_info *c, const struct inode *inode) return 5; if (!ubifs_compr_present(c, ui->compr_type)) { - ubifs_warn(c, "inode %lu uses '%s' compression, but it was not compiled in", + ubifs_warn(c, "inode %" PRIino "u uses '%s' compression, but it was not compiled in", inode->i_ino, ubifs_compr_name(c, ui->compr_type)); } @@ -248,14 +248,14 @@ struct inode *ubifs_iget(struct super_block *sb, unsigned long inum) return inode; out_invalid: - ubifs_err(c, "inode %lu validation failed, error %d", inode->i_ino, err); + ubifs_err(c, "inode %" PRIino "u validation failed, error %d", inode->i_ino, err); ubifs_dump_node(c, ino, UBIFS_MAX_INO_NODE_SZ); ubifs_dump_inode(c, inode); err = -EINVAL; out_ino: kfree(ino); out: - ubifs_err(c, "failed to read inode %lu, error %d", inode->i_ino, err); + ubifs_err(c, "failed to read inode %" PRIino "u, error %d", inode->i_ino, err); iget_failed(inode); return ERR_PTR(err); } @@ -316,12 +316,12 @@ static int ubifs_write_inode(struct inode *inode, struct writeback_control *wbc) * As an optimization, do not write orphan inodes to the media just * because this is not needed. */ - dbg_gen("inode %lu, mode %#x, nlink %u", + dbg_gen("inode %" PRIino "u, mode %#x, nlink %u", inode->i_ino, (int)inode->i_mode, inode->i_nlink); if (inode->i_nlink) { err = ubifs_jnl_write_inode(c, inode); if (err) - ubifs_err(c, "can't write inode %lu, error %d", + ubifs_err(c, "can't write inode %" PRIino "u, error %d", inode->i_ino, err); else err = dbg_check_inode_size(c, inode, ui->ui_size); @@ -357,7 +357,7 @@ static void ubifs_evict_inode(struct inode *inode) */ goto out; - dbg_gen("inode %lu, mode %#x", inode->i_ino, (int)inode->i_mode); + dbg_gen("inode %" PRIino "u, mode %#x", inode->i_ino, (int)inode->i_mode); ubifs_assert(c, !icount_read(inode)); truncate_inode_pages_final(&inode->i_data); @@ -375,7 +375,7 @@ static void ubifs_evict_inode(struct inode *inode) * Worst case we have a lost orphan inode wasting space, so a * simple error message is OK here. */ - ubifs_err(c, "can't delete inode %lu, error %d", + ubifs_err(c, "can't delete inode %" PRIino "u, error %d", inode->i_ino, err); out: @@ -399,7 +399,7 @@ static void ubifs_dirty_inode(struct inode *inode, int flags) ubifs_assert(c, mutex_is_locked(&ui->ui_mutex)); if (!ui->dirty) { ui->dirty = 1; - dbg_gen("inode %lu", inode->i_ino); + dbg_gen("inode %" PRIino "u", inode->i_ino); } } diff --git a/fs/ubifs/tnc.c b/fs/ubifs/tnc.c index 694b08d27d7d9c7d9d7d9039f406637c702f8613..67836e71f698ea60fa1e0622ddf2fb59c95ff757 100644 --- a/fs/ubifs/tnc.c +++ b/fs/ubifs/tnc.c @@ -3561,8 +3561,8 @@ int dbg_check_inode_size(struct ubifs_info *c, const struct inode *inode, out_dump: block = key_block(c, key); - ubifs_err(c, "inode %lu has size %lld, but there are data at offset %lld", - (unsigned long)inode->i_ino, size, + ubifs_err(c, "inode %" PRIino "u has size %lld, but there are data at offset %lld", + inode->i_ino, size, ((loff_t)block) << UBIFS_BLOCK_SHIFT); mutex_unlock(&c->tnc_mutex); ubifs_dump_inode(c, inode); diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c index c21a0c2b3e907c1572780d4a3e48cc9d2a11b9d6..c070b658bd05baab3921a8d3fd8448639ac0e08b 100644 --- a/fs/ubifs/xattr.c +++ b/fs/ubifs/xattr.c @@ -76,7 +76,7 @@ static int create_xattr(struct ubifs_info *c, struct inode *host, .dirtied_ino_d = ALIGN(host_ui->data_len, 8) }; if (host_ui->xattr_cnt >= ubifs_xattr_max_cnt(c)) { - ubifs_err(c, "inode %lu already has too many xattrs (%d), cannot create more", + ubifs_err(c, "inode %" PRIino "u already has too many xattrs (%d), cannot create more", host->i_ino, host_ui->xattr_cnt); return -ENOSPC; } @@ -88,7 +88,7 @@ static int create_xattr(struct ubifs_info *c, struct inode *host, */ names_len = host_ui->xattr_names + host_ui->xattr_cnt + fname_len(nm) + 1; if (names_len > XATTR_LIST_MAX) { - ubifs_err(c, "cannot add one more xattr name to inode %lu, total names length would become %d, max. is %d", + ubifs_err(c, "cannot add one more xattr name to inode %" PRIino "u, total names length would become %d, max. is %d", host->i_ino, names_len, XATTR_LIST_MAX); return -ENOSPC; } @@ -390,7 +390,7 @@ ssize_t ubifs_listxattr(struct dentry *dentry, char *buffer, size_t size) int err, len, written = 0; struct fscrypt_name nm = {0}; - dbg_gen("ino %lu ('%pd'), buffer size %zd", host->i_ino, + dbg_gen("ino %" PRIino "u ('%pd'), buffer size %zd", host->i_ino, dentry, size); down_read(&host_ui->xattr_sem); @@ -498,7 +498,7 @@ int ubifs_purge_xattrs(struct inode *host) if (ubifs_inode(host)->xattr_cnt <= ubifs_xattr_max_cnt(c)) return 0; - ubifs_warn(c, "inode %lu has too many xattrs, doing a non-atomic deletion", + ubifs_warn(c, "inode %" PRIino "u has too many xattrs, doing a non-atomic deletion", host->i_ino); down_write(&ubifs_inode(host)->xattr_sem); @@ -641,7 +641,7 @@ int ubifs_init_security(struct inode *dentry, struct inode *inode, &init_xattrs, NULL); if (err) { struct ubifs_info *c = dentry->i_sb->s_fs_info; - ubifs_err(c, "cannot initialize security for inode %lu, error %d", + ubifs_err(c, "cannot initialize security for inode %" PRIino "u, error %d", inode->i_ino, err); } return err; @@ -652,7 +652,7 @@ static int xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, size_t size) { - dbg_gen("xattr '%s', ino %lu ('%pd'), buf size %zd", name, + dbg_gen("xattr '%s', ino %" PRIino "u ('%pd'), buf size %zd", name, inode->i_ino, dentry, size); name = xattr_full_name(handler, name); @@ -665,7 +665,7 @@ static int xattr_set(const struct xattr_handler *handler, const char *name, const void *value, size_t size, int flags) { - dbg_gen("xattr '%s', host ino %lu ('%pd'), size %zd", + dbg_gen("xattr '%s', host ino %" PRIino "u ('%pd'), size %zd", name, inode->i_ino, dentry, size); name = xattr_full_name(handler, name); -- 2.53.0