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 0B2DEC4332F for ; Tue, 14 Nov 2023 18:13:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 770C76B0306; Tue, 14 Nov 2023 13:13:57 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7200B6B0308; Tue, 14 Nov 2023 13:13:57 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5737E6B0309; Tue, 14 Nov 2023 13:13:57 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 430686B0306 for ; Tue, 14 Nov 2023 13:13:57 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0717D14058D for ; Tue, 14 Nov 2023 18:13:57 +0000 (UTC) X-FDA: 81457358514.12.F5E8DB6 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf25.hostedemail.com (Postfix) with ESMTP id A9381A0019 for ; Tue, 14 Nov 2023 18:13:53 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-03-30 header.b=Fcmic4+c; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=S6Un+nMf; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.hostedemail.com: domain of chuck.lever@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=chuck.lever@oracle.com; dmarc=pass (policy=none) header.from=oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1699985633; 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=6jCkIOLjFDxYthkzorMT8TJFEdrQGAeNJR0LVuq3V+Q=; b=l6ag4N6loIyzQ2zGO6mU89/Iorq3jCpI+YMg8F1lc8pAi2mS6NF+2rrB0FOeivu9z2Uxit xDwe/T3dXo9dmhaJBIcekeKUp+wi/l1G3OOabY+zs3eeAeG4U5J+TEJlbykNewFnw/E7WW aB3YfMwSAVXnCwxpfgvPrSVWsS5joi8= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1699985633; a=rsa-sha256; cv=pass; b=FRUyIoaPb9NRGvs9yrns/uPVVe9FHK2CyLq2pjZL204PXoZmMxGu5Yi1h76fOCBHjCc8kp iyGkXyegKFHlD3XJOS7z7ad+kMbb/rBysbAwEsJ8hn9ggnMo+TZXbwqy+Tv3Xvz6qsuLOo 7D7+tDt8bakfJutXpKLo3/VMWWnNcCo= ARC-Authentication-Results: i=2; imf25.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-03-30 header.b=Fcmic4+c; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=S6Un+nMf; arc=pass ("microsoft.com:s=arcselector9901:i=1"); spf=pass (imf25.hostedemail.com: domain of chuck.lever@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=chuck.lever@oracle.com; dmarc=pass (policy=none) header.from=oracle.com Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 3AEGicO6009209; Tue, 14 Nov 2023 18:13:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : references : content-type : in-reply-to : mime-version; s=corp-2023-03-30; bh=6jCkIOLjFDxYthkzorMT8TJFEdrQGAeNJR0LVuq3V+Q=; b=Fcmic4+clKGiEl/DniabdIAbzocQjiwH5TEKmhCVmFvIpiIwXOGhMFo7iZZqQ0ECdOxB /EOA+oLZEoO17vTGomDMhZ4Swhr+e4+zuqAB5oZURfrmHSkhBfpR2j18g53mG54MYKns TlyEimcWIK3IaP2NfBte/YZ1n/Q41T0NycV4kfLDf7prt60WBCuF1JULDxzbjGvZMSu7 LfReCJvt653CZp+xGzfT+MbYscSN2myJfux6Ar/KmlQuEO8c0O/3Fi6hSiCmEcD0facL TDp2Gp2bQYES6ULdhDenRYe0Dmt64nCvytv9tsU6T72but9jZelpjB5ZQmrjdVvrAbon jA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ua2stp9an-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 14 Nov 2023 18:13:46 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 3AEHCrac038552; Tue, 14 Nov 2023 18:13:45 GMT Received: from nam02-sn1-obe.outbound.protection.outlook.com (mail-sn1nam02lp2041.outbound.protection.outlook.com [104.47.57.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3ub5k3r1et-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 14 Nov 2023 18:13:45 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XYelXVK75lVUdoQe+wXoGXj3yrNzX68m4EzkCo6/ISVqSgR1DbwYUKEBAWMLlGImn8T2jsbxv1J3aNKA6wqIYj2jntPzYTxxO4dMOHr10qP/2Bvzo4syqrD0HotSbFqQqWuEsK4GLdUH6WS3YQQSshpdlZd2Jb7piIXspc+cdeucm9ZL7b/4SieZ1rOZtKTIw3otqxg7RCOkS3BGc/uxSxuDpVz+3Zx/pWI7fQSy5w1X6uDDBWn3iXS/rWZarNhbRQKYQSYcPG+gIBd8Ol4RQmbek5faCex4s+gQHkZby4weBSh/3VGK2JJUJpMoCHIjlXC9ZkglCIWmzcc+aG7jnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6jCkIOLjFDxYthkzorMT8TJFEdrQGAeNJR0LVuq3V+Q=; b=Bf3iTQG1s2sYWGGerB5d3odfadBS0QTSu2NbVNiVa/EFL+AK3qhRTy2JMkEJMjoySmxUJt0zijIJbQPeUUL5DuanPF6DRaBK1guJh+ucR3u9EjumqRArnk+oetZlx255El4xP1OY8zK2M31dATZQOz0lecxRciP9t9edKdi0MZMeYqpBthPeELKVu19Zjn5fRsvMdckpHvXROvxr9Ay/AbvFkvEI7KtalRZAkgnUCNAriZODtuHY8ZZ/L1J18StUcy7YnM1xLOx8VHHMxh3n2h9kx1HPJ6IaPJ2OFFZaQR0p0qVIP72ax3cNCyjcm7VJyB5ShXA8xWipxWwMFB6vag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6jCkIOLjFDxYthkzorMT8TJFEdrQGAeNJR0LVuq3V+Q=; b=S6Un+nMfkbJXA2u0uHBeBzT7AlH/X58JoX+WNbm8RGKkeziQbd0+JQKlgrJYV2DQC1TrrmcxwVnjvrAgQjIw/va5YNvid3JjlIlgz1vF8zWrOthLGWcM7t/oIF6+y/pWu1+N6EMC415M6TzOT/c3B1qg3S8vn/7lYcg3zx/1Ubc= Received: from BN0PR10MB5128.namprd10.prod.outlook.com (2603:10b6:408:117::24) by SA2PR10MB4812.namprd10.prod.outlook.com (2603:10b6:806:115::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.28; Tue, 14 Nov 2023 18:13:43 +0000 Received: from BN0PR10MB5128.namprd10.prod.outlook.com ([fe80::360b:b3c0:c5a9:3b3c]) by BN0PR10MB5128.namprd10.prod.outlook.com ([fe80::360b:b3c0:c5a9:3b3c%4]) with mapi id 15.20.7002.015; Tue, 14 Nov 2023 18:13:43 +0000 Date: Tue, 14 Nov 2023 13:13:40 -0500 From: Chuck Lever To: Christian Brauner Cc: Chuck Lever , akpm@linux-foundation.org, hughd@google.com, jlayton@redhat.com, viro@zeniv.linux.org.uk, Tavian Barnes , linux-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH RFC] libfs: getdents() should return 0 after reaching EOD Message-ID: References: <169997697704.4588.14555611205729567800.stgit@bazille.1015granger.net> <20231114-begleichen-miniatur-3c3a02862c4c@brauner> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231114-begleichen-miniatur-3c3a02862c4c@brauner> X-ClientProxiedBy: CH2PR14CA0053.namprd14.prod.outlook.com (2603:10b6:610:56::33) To BN0PR10MB5128.namprd10.prod.outlook.com (2603:10b6:408:117::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN0PR10MB5128:EE_|SA2PR10MB4812:EE_ X-MS-Office365-Filtering-Correlation-Id: d5aadbc1-c031-4daa-4054-08dbe53d6f81 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xvvhcN/nXNihITM/w3d7ETdnc/XB+Vv5RE23b43Eny23uiLCVO002M4+ZvqMWX/oVAe+jWAqubXu5LgOo1uVrttwwvWDTXW3B2DpYM6knjqRfOfx0hsELLw5uDPjedultfe0NHSzgjot3Kf4+tXkDt544h5OxUhHUJXZ6GZ1TqFM2Q3cnVDg6b6F/REAQ2EZBPxJ+5ng9s6rpBroTQjZkbzMiscR8V6vRDDHSXWtPWpfsCunQQTarLWm+7bf3HC2KMhi6SRjy7+cd9FWQY6KkzeCJOglc96CQS9cxtR0LOI8jpIteDpoqI7omxrGqmc39H9HOO/JawQsjCenwKLdlbXpZ8mf5DPNox7nEXww89vFE8FRl9jzX9FRFm8+TZ5TkImwVPru0vFsQtqTBNIvLx4L4wL9wg6G5xpCR4JoqcmktxjsrOXp6HYBk2qWnudUV9ysix9ZvdLhZ/unZV6NpDs1io2sVsPYhJLZx0WNxEJnG6am64dGg4xdtAlIJylPBAGDjnF4676SNVmfVMr2vBoqDXgZA6swFSGgzySB49E= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN0PR10MB5128.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(366004)(346002)(39860400002)(136003)(230922051799003)(186009)(64100799003)(1800799009)(451199024)(38100700002)(4326008)(8676002)(8936002)(44832011)(9686003)(6512007)(6506007)(26005)(83380400001)(6486002)(478600001)(966005)(316002)(66946007)(6916009)(54906003)(66556008)(66476007)(41300700001)(2906002)(86362001)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Kz4k3zm/wYNRMHyiwhCXsY7cLPu9UNZoH6WhueSS0WcJeNKqae8p8bcEp8fN?= =?us-ascii?Q?I9xU0bAVf8FFRsan5YF0Fq84MP2jumfqF9qsSTTzgY1PmtRO0jBcTrMDAN0M?= =?us-ascii?Q?w3FQo/WJ33JnzCDnrtHRVXVm9ayvOC7yZgG+E+OsGz6ZRlSOIcB3VTJDcCOY?= =?us-ascii?Q?F9iC49NN3zxXcjOz+KCP4vI95qQHokGcWqqrRaR0ym6PTgw/oolwmo/3P22F?= =?us-ascii?Q?25PBqVbbldSy6YT9mnzKB66skperU4nMQYvGYC7ILTpn27/+LJKt9OOp/ea/?= =?us-ascii?Q?oSxB7xxnxUmkRBMRexdb1QFFPg9E6SdJOgbrE/iksVBZWnwre4WMP2ABvyba?= =?us-ascii?Q?jmR2yhNVOblJsEIyg5/m4VychBPy3Ra5lYk8shCab59BrkmqdKXk3qushtLb?= =?us-ascii?Q?PuaSFrbAjxkzwjxemK1UDmQsKvYe6vA9I25nYMDFmt91o8vwS8VbullWjxVp?= =?us-ascii?Q?Kl4SWa7mLVNN0vzYnWcT5sOx8kd8pv4uPYLD/rc7BJ54JA1pCVLbOc/AlL/M?= =?us-ascii?Q?ZMSiXgkk2YrzHrvLN1adeuEQGnvyRhH6oqLOPIumuN2yNDUKExPfkRpWw24n?= =?us-ascii?Q?oBHBrQCaJUi9nIR7UcxLE/PMiylW/bTY36p81M/1HjkQQovfcQoKHuRWWv5Z?= =?us-ascii?Q?yQllzDJvBO/aWkogopHJhEZXLMinBSCxktMTkz/JQlSuVbUcqXfPZw3MXS2e?= =?us-ascii?Q?MWLyXYKRMZEDJfbA9kPLr4xrELz+vEGHYWlWkwXwFtKLwQjnIwlFste1Y3U3?= =?us-ascii?Q?TLdLpqecLqV+FHdT/lQ7fLMR+goDYDifBbSk9GkSEKQPRCHDov/Z4ibuODHO?= =?us-ascii?Q?vV17mioqcNE//dKXfB38pd4mhR5icEuWWXMZjpzpTAqglsxywMI4siWdXE/M?= =?us-ascii?Q?zI8JUE4/7PHkEw6SWsaix5H6Fr6E9wQEdoMnzkCOjzjJ+ola83CBUVtfLYe9?= =?us-ascii?Q?8Pg57PKEvrCH8S8n3IV4mp1HHbZ8noNIbEn1p2qKv8VcPJJNnTz9hJqz0vWL?= =?us-ascii?Q?w8py8pk4jxVa43Zkk/Jd6C7hLb6IYN5rRMr1x/NIrntboWR+2Bl54e++J6g3?= =?us-ascii?Q?D9kR0QK+0MpeLEXEjXot0mFV02t/y8cOf1XJq8ykK1J7FVRTZR9YWib44MU/?= =?us-ascii?Q?a2SsUpnBlxQBMRJPialazXMt4bKhSn8i5tm6VVog0J6Affu5qj/AGFvZI1rW?= =?us-ascii?Q?8g8G5JPF+o/mAfLgdJnPKEnG8ivXVaL/rdWa+tJR4rnnxcVCn2Tl5OiISp3r?= =?us-ascii?Q?ATjIoGQB2gMuKOxnodT8jTBP7JvP6R5YZhKMc3cnmbQXuNHKqFkNJZb3rWbx?= =?us-ascii?Q?TgF6ipOGlBCZLdggfWmOylbatOXEbhSXkDl/RHjyNwg2evi+mVT7zfvRAELV?= =?us-ascii?Q?au7PRM8OW2vrzin/1q/kr4qAij9l9Vyl5DuXBb0xohTJA32NLo5IGKp3sFtn?= =?us-ascii?Q?dlg0epFQt1GjlxeKu+MuZba0LPcbqky2FGk4Psbb2bqpFu1pgdsDCMtDzZrJ?= =?us-ascii?Q?lthD7iZ8iBNFhcoeXwcMs3QOZRFh0N4sNI3mc5qJutTT90DEarbCDdh2iMES?= =?us-ascii?Q?7XO83IMsP19neZPCnUnWWBoSLIy6U8zOaOgfwmN6SMbqjh/KhiAJN6mNOXeI?= =?us-ascii?Q?Uw=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?us-ascii?Q?xZiXA71vlqzxHCErK0ZQD2IBUPqV7VgnF0uHNZTj0PKnMtNxz+K48KP6P0SF?= =?us-ascii?Q?iDHM6eXXlQAtRLLA24/jvaA8BhDVyGEguXgBuf7Y1/NAzW6W+ViKixhOGG66?= =?us-ascii?Q?q5iip2nUPLaNKZyk9/MZoOZxWRLf4qAMrK2HcSlK3HKAFfuChGuwmmwf2xpT?= =?us-ascii?Q?U6zc60eQZ/MX4pXWr+Lp/YhLyUb7xsulEsq45yfRH/AYolXq1ufCjJTVY2HR?= =?us-ascii?Q?lM9eedISzLpS3tRwcRSssl6//kPwGeZ/w0UgfnZOpwPjzDL2NEmfrU6EYRtb?= =?us-ascii?Q?67aoI+zWKdmb0vaZvrV5TVG+udp8hyEHYEFRQN3J34nZKu0W4qh1Gkr1n4TT?= =?us-ascii?Q?T034yBvilOX+UYams+hq+xLYfkxwWna1Abeim45EVb5Vc3XnWYAf+XUbMlUx?= =?us-ascii?Q?4b15PXTkIEw8Kpg22Xn2xp5CFUy+YQuEiY8lmUkbEdOgNtXI1/F6jc9La5+B?= =?us-ascii?Q?z8deQTPv+cliI7zNy0BsJaaF/M0owO6SU2TkSOssW4iPBiVvTiJGDOjMkDKs?= =?us-ascii?Q?A1ffaUQilHZ2Ro7X4i1ArewQMtrGFIQVcpUMjR6T9bSBq/9vzFj8wQsNB36U?= =?us-ascii?Q?B4/IL+rJtq7ko+EZNkVLAk4wsWVRuRVr9/o2L1NUWpgV0JNQOUj4CSGr+Wr+?= =?us-ascii?Q?+2cVvwXx2yTUH8Z3+O0EOlJsF5pVOXKHCkqwL0z5cKYGizpKor6NSe3MjEhg?= =?us-ascii?Q?xZH1DsZee+6gcQNq+zAA+Q2/7ZZv7UDmF25EAkc32TnQ4HoA5FklfKVP15h+?= =?us-ascii?Q?+CzCfKxiFe6Z9IiaWgWDXPrnj1b9jErjxc4787MixphadTocv4comyHly4Lq?= =?us-ascii?Q?VMNXn5bIyMRMvgscB8eNFyLr2W6PzGwWDMuZ1C+ZX2L3t3ceww90T/x9mkcr?= =?us-ascii?Q?oEJjpYZJtXHn9ciRwnIE9lyieRqiG2mdlC73rY5IJ7THdyKbS6nuWm5JVXQ0?= =?us-ascii?Q?hm+5mB0s27LxdfRgfjCsEk1umL1Pd3ZFnIqknXhOrOxlpfRlKsEbq32DxTvW?= =?us-ascii?Q?zCGL41TyRnUbeZRM+tlaBPs7Og=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d5aadbc1-c031-4daa-4054-08dbe53d6f81 X-MS-Exchange-CrossTenant-AuthSource: BN0PR10MB5128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Nov 2023 18:13:43.1288 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: wJWu8c5TIaX6CBLFozLuzhu1QPjxsy+aaK7YXuaCEoUAqKDHj6yLAz7tHKB59/+7JrSYlflvCJ/QBjUH9guNTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR10MB4812 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.987,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-11-14_18,2023-11-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 phishscore=0 bulkscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311060000 definitions=main-2311140139 X-Proofpoint-GUID: Va21WZDAo2T6zijKGI56Tt9zZ1EcHd4L X-Proofpoint-ORIG-GUID: Va21WZDAo2T6zijKGI56Tt9zZ1EcHd4L X-Stat-Signature: 763sbqdynb6c3oftbeki1bszbdax4qh3 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: A9381A0019 X-Rspam-User: X-HE-Tag: 1699985633-124124 X-HE-Meta: U2FsdGVkX19E6lSITgKsN0FFjeOjVt82HtDEVtdGLfdK7wOYRvV8NGxHQSFvn/T6IVNrgHuVtcAb4Do3WTLuuCZynm1sNvSliPwPvCFsA/I3HtoLB/oZrDZCb2vXLL2Ghfo7JHL41PZXhkSuCDwcqzAJWTrjpxM+zaC82fcNOQbfNYJ9O7bmkGtX9ubhWSWAtCJwGRtizXWCCeLhKiSevcFQGftjJ1VvhzEf5NLXdfRcdHGcTdJyDB72w9j5T6UdDyDov10jUXKjRMuq1ZVxKjyPYF8O4o6RZzmxpZ5o6hn04wiQ7bhIL4fM6/wepHe3oo6m5PAh7Lm17BvP45wExUar/KVu/6+52jgNgC2hWR3mR1wYK9v94IXFiJPqjIUy9mQdSBwH89aEjXgKWAR0rnjuWNPB07CEo6BuwSnoOgoQwnwNnShdNH2Nhmhj9w5NDPvjjEZSQwvx4Et2AHdMPH97kEtr7tGxIh6ZHHqbwwaLjuBvDb1qXZp3i/tBfP2T00z8/3K0XI05zReyBaTBYWMdc5yxOJnOuH0LHACc5ywrQhCe5s7saa0caRmPoF9DjAOeZrubW7tE5yS0izIgYbIs14lAQMJ1Zm/Dm1YirTq9Ah0EnQwxw0tdHrQE7MF1XQkyAzf6C1qqRp74lKYRjQ2zH7+OAPxJASaDTHSMHuTyiL+AKYA4jcf3LRcelDIWkQPDZitp8k3hWWDUpjR8QyrjhKh97EKWhczdx4mS7l2dKZX+tnYT5wZu5JbJep23Kbqz4G6uSs0dPwpecFs0PwBwb+jknTzyY6rrzNo1cT1WeO+KWv9kgp1evHcVFNG3EMgdidjBtbswnL0i89TAk22ZxIltfVH2GAmQyzW1IgbuKv9RsNkrXs4usKWscXHqscmQMYkg8NS+ePLaOmy8Do56ZI83dpuJS7FTP4ejSUEWmSjITPzPhPjNfg5np/U2BpbIxPm1jT3bbARzTM3 b9Dghd5k KhUjUSBbLQPHQ27dHOIQ7AD7rExcRQGsXcPqdI5EH0OQyLsSC2rLtl3DUKqIenc/4rSb5ykgBXyLKqBI9P/o7G61EArdbR2Vh82cQKeqGxvnBWycZ95gHYNvip/+yCNkiUmYsrhSwVEJweRMnAy8GMuZ1IxKFFYm9yZwUIxmNYigmjkRCHrgkfv3jEZ8gL5RDr4+e7uPLsvBP+gxUf6uz4G4BZYaoYdk67jhCe60cblqi+OAtnVa4bi4Fw0RdjgwkWBlPdPirsMdyGfwPK+rOwo5Pziev0NcBdhwxsNQQz8tmkul/gOgMvBq/1j1m9aF4bwd8NmySnSbSLoKxX15cNOikIuD5P9R0TObLDzk+qtTWCj03sqR5fnZhnhtTM3jgCt6sGqK+3DUkTXMY8mdKiMmgMF7Sfm1Zs4AwXvM7D+7DdmT9k9yUnMr8JAmfrwcc2GYJgX/zuBjUIIJoFcgulHfTHB7J21CqyKvK5eG+GRpztLMG6j7gA8zw1hsXoQUTs1Oq 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 Tue, Nov 14, 2023 at 06:29:15PM +0100, Christian Brauner wrote: > On Tue, Nov 14, 2023 at 10:49:37AM -0500, Chuck Lever wrote: > > From: Chuck Lever > > > > The new directory offset helpers don't conform with the convention > > of getdents() returning no more entries once a directory file > > descriptor has reached the current end-of-directory. > > > > To address this, copy the logic from dcache_readdir() to mark the > > open directory file descriptor once EOD has been reached. Rewinding > > resets the mark. > > > > Reported-by: Tavian Barnes > > Closes: https://lore.kernel.org/linux-fsdevel/20231113180616.2831430-1-tavianator@tavianator.com/ > > Fixes: 6faddda69f62 ("libfs: Add directory operations for stable offsets") > > Signed-off-by: Chuck Lever > > --- > > fs/libfs.c | 13 ++++++++++--- > > 1 file changed, 10 insertions(+), 3 deletions(-) > > > > diff --git a/fs/libfs.c b/fs/libfs.c > > index e9440d55073c..1c866b087f0c 100644 > > --- a/fs/libfs.c > > +++ b/fs/libfs.c > > @@ -428,7 +428,7 @@ static bool offset_dir_emit(struct dir_context *ctx, struct dentry *dentry) > > inode->i_ino, fs_umode_to_dtype(inode->i_mode)); > > } > > > > -static void offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > > +static void *offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > > { > > struct offset_ctx *so_ctx = inode->i_op->get_offset_ctx(inode); > > XA_STATE(xas, &so_ctx->xa, ctx->pos); > > @@ -437,7 +437,8 @@ static void offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > > while (true) { > > dentry = offset_find_next(&xas); > > if (!dentry) > > - break; > > + /* readdir has reached the current EOD */ > > + return (void *)0x10; > > > > if (!offset_dir_emit(ctx, dentry)) { > > dput(dentry); > > @@ -447,6 +448,7 @@ static void offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > > dput(dentry); > > ctx->pos = xas.xa_index + 1; > > } > > + return NULL; > > } > > > > /** > > @@ -479,7 +481,12 @@ static int offset_readdir(struct file *file, struct dir_context *ctx) > > if (!dir_emit_dots(file, ctx)) > > return 0; > > > > - offset_iterate_dir(d_inode(dir), ctx); > > + if (ctx->pos == 2) > > + file->private_data = NULL; > > + else if (file->private_data == (void *)0x10) > > + return 0; > > + > > + file->private_data = offset_iterate_dir(d_inode(dir), ctx); > > I think it's usually best practice to only modify the file->private_data > pointer during f_op->open and f_op->close but not override > file->private_data once the file is visible to other threads. I think > here it might not matter because access to file->private_data is > serialized on f_pos_lock and it's not used by anything else. I freely admit that using file->private_data this way is ugly. I was hoping to find one bit somewhere that I could use to mark the file descriptor, and file->private_data seemed the most handy. We could go back to allocating a phony dentry (d_alloc_cursor) and place the end-of-directory flag in there. -- Chuck Lever