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]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC3BAE77188 for ; Sat, 4 Jan 2025 11:29:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 461476B0089; Sat, 4 Jan 2025 06:29:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3EAEE6B008A; Sat, 4 Jan 2025 06:29:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2644F6B008C; Sat, 4 Jan 2025 06:29:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 086A36B0089 for ; Sat, 4 Jan 2025 06:29:46 -0500 (EST) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 91F0EC05D6 for ; Sat, 4 Jan 2025 11:29:45 +0000 (UTC) X-FDA: 82969549530.20.ED3D618 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf17.hostedemail.com (Postfix) with ESMTP id ED8FA40010 for ; Sat, 4 Jan 2025 11:29:43 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KZQtzIi2; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf17.hostedemail.com: domain of brauner@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1735990184; a=rsa-sha256; cv=none; b=OO4PtXwsu9Qt1/ZU8wozKIVBzcQszonzolb+WuOrWdbA1QwF+v3zsl655NTO8yY5lwHhFR xex2a8FWf+LNRZVN0MSyTohA1WTZDaLdtno/HNqTVJ2CpdaiTQV+PFPLamsGH3yllCecdG V7R13do2yvpUK5NHCouYgYEbofRpK94= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=KZQtzIi2; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf17.hostedemail.com: domain of brauner@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=brauner@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1735990184; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Lq3QVdoXDDWAWvEYebku5plXy05P+5zoZptGEa6TGhA=; b=Na3GYxD8HAnVsSwNmzqF/Ec282Ev0S5U7p0bxbKnL49WfYjk+Q0fZYsr+kYLqaH0jF74KK UxLz5qeUe7rd5e+J2szAJKLF9+qBDrB0l2N+QKy+rVWouBLmP3XNpSrUVr0RgzhHNCt+3/ JKM2Zq6J5FgHl+bZNFi7KMCReIp49Qo= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id AD93E5C1039; Sat, 4 Jan 2025 11:29:01 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C0207C4CED1; Sat, 4 Jan 2025 11:29:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1735990182; bh=WSvusGxkP9CIComqoqcMe0McARfsPf9dGEDG3vMNNwo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=KZQtzIi2MHgbBGoaO+XjlCS58BPOYiDPWS2lwoCLBhW0vQsk1Dk3qTXj2UAicVZhf zFW57MqpkAITzpM8Piyjr08tA4xaR29U30njGLCuzz9+9jp0YNvto/ZKpdgUWQRIIZ jR3AlmTNS5rvuDx8Lnw8hO77/KkEOhXxoSbYZDzW4mp7EQnin3GktUAw3vgH9oT/DY ZT0myaHQMRKBn3PIrXAJFyK5W4BLg8EBqKLd4PvTSPsqSpeWBXMqF9aYVqZAHIZkZX UffOVZe4ooKLaZUYC3KGf0zOTh95LJKzr4N9lARzFPNizxIcow2xInh37Ujob6BN9R M+IsPNCcXgA4A== Date: Sat, 4 Jan 2025 12:29:38 +0100 From: Christian Brauner To: "Liam R. Howlett" Cc: cel@kernel.org, Hugh Dickins , Al Viro , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, yukuai3@huawei.com, yangerkun@huaweicloud.com, Chuck Lever Subject: Re: [PATCH v6 4/5] libfs: Replace simple_offset end-of-directory detection Message-ID: <20250104-goldbarren-gehalt-bb5039a20c69@brauner> References: <20241220153314.5237-1-cel@kernel.org> <20241220153314.5237-5-cel@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: ED8FA40010 X-Stat-Signature: utnizkz5b91fqqgwffa938g18phykzre X-Rspam-User: X-HE-Tag: 1735990183-700684 X-HE-Meta: U2FsdGVkX1/fg6RhUQ73+g5WCI0tII5egIuxVXeqkTMEBhEpaSkywgFuZ5Sz5VHJ0D68cHFp0XyjJC5iHjTDjTjaOf0Ah5yxl/JRaNZPhnSdfuMQ08S36VbD+j5ob8WybiaQpdQnKe0lPdHoVBf21b9BRM8AVo3mluWrQWFyxiHKSiSN61w6Kj6ZaiLCFuvL845I5wMprEiK80BoAz470VkcIvze6HCwiEzysZP40h5680XDtbUUibhKu1ObKuAnaORLX26fogVYw+aa28NBlXZkNQ3tELjtv9deGTRgOTOKBmKIxJ81I/ITMutxfuu52bPRvNNOYM/brRBUi/oqJdV2UZu9Gbz8McYABHiWnH4TRGnnbQX5ERmCONXka0VhCqI4L1UkYLAK7rkUPuv6a2ipTX363btt5uHFWspNJct8da84P/vuo+w6HzTwuqmrktVzH/vVhidTr5V9NdW95rQf6RR8lG6N9o0PDxEB58Ce7PBHoHyI9dO4s83e6VlnMsQbX+UOAWYiCt34s+Nojl+2upwvCsgCFc+AN7j33tUW/uYJuUd6PcRgviFDx6XCQkhTMixt3Tvo0wGqVokBaky8DJIQsDRZ/Oy1zmW37XY3OHbL/vQVd0YZoI2J3ozzW5EzLk8IQDQPIVEoiAmXxYo20AvMwszzuiratmX2dsMOfRHJwjcPvV1tWY7loQT1ZF1oYcYklY6NajeeMvrwZ5xOF2r2WE0F2tXlZZ3HzgZzMPBmCux+LWdJDutcJddVKRh/SMPRQtc5lQzTdv4gCeiyp5JgE9wi0sUq+DDxZDo+jEK3QKjsmEbJ7ED9d6YaC8LYE4klGl68kmOIqOKZuJgp+WbwA8S/LvfQZZPFt2vF9Q9hqsFIMY1Q+Jy9/obTlC2yLIqtumTyLMOCGvgVj3OS5e5g4VBmy8y2Pv8CaqKJ63YR7KpYVhDShxzu/984I1KfReXgYWMwOjBq6Gw YJiMSkaJ v2F3bPDnwpbhP+F5CmikRr+P7Lh3bYiQi3n7WTe2lxdtsUMEz6MVSSqkuZIOjVcNT1p4CtDLdxG2e7cth9RAZ35DL1HqKmaIlNEIxjJxwFPsdX1eXYoUBHfMnMXx0pfKRG5zcUK8Sk1t6wbUkEU9OYg6t8Igvg5KVah/NfnP9TlIyBG72nH5Rqjk3hWhArPbwYmm3+A+WDNw0n0RD296OuNQUkt7O1i9CovkohQLWsWQFUWeP+pR20XXZ4PsRqWa0otDLTgzAU4hjYVx0jwv0kHT9epkO9ELe3Ofsmh3a76GgwUZu4lqq51oV89ObFshA5BNMIxG1DIfeuVFMCLmBqsBmpTjyetGG0WhtVdGCb2uYmVIxIGDOMY5T+rJdZ4puRrH5Y3RxRAE4A4c= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, Dec 23, 2024 at 11:30:47AM -0500, Liam R. Howlett wrote: > * cel@kernel.org [241220 10:33]: > > From: Chuck Lever > > > > According to getdents(3), the d_off field in each returned directory > > entry points to the next entry in the directory. The d_off field in > > the last returned entry in the readdir buffer must contain a valid > > offset value, but if it points to an actual directory entry, then > > readdir/getdents can loop. > > > > This patch introduces a specific fixed offset value that is placed > > in the d_off field of the last entry in a directory. Some user space > > applications assume that the EOD offset value is larger than the > > offsets of real directory entries, so the largest possible offset > > value is reserved for this purpose. This new value is never > > allocated by simple_offset_add(). > > > > When ->iterate_dir() returns, getdents{64} inserts the ctx->pos > > value into the d_off field of the last valid entry in the readdir > > buffer. When it hits EOD, offset_readdir() sets ctx->pos to the EOD > > offset value so the last entry is updated to point to the EOD marker. > > > > When trying to read the entry at the EOD offset, offset_readdir() > > terminates immediately. > > > > It is worth noting that using a Maple tree for directory offset > > value allocation does not guarantee a 63-bit range of values -- > > on platforms where "long" is a 32-bit type, the directory offset > > value range is still 0..(2^31 - 1). > > I have a standing request to have 32-bit archs return 64-bit values. Is Yes, an allocation mechanism for 64-bit values on 32-bit would be very nice to have.