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 09CB7C3DA7F for ; Wed, 31 Jul 2024 13:45:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 973786B0089; Wed, 31 Jul 2024 09:45:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 922BE6B008A; Wed, 31 Jul 2024 09:45:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 79CB56B008C; Wed, 31 Jul 2024 09:45:27 -0400 (EDT) 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 5639E6B0089 for ; Wed, 31 Jul 2024 09:45:27 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id EF5751603CE for ; Wed, 31 Jul 2024 13:45:26 +0000 (UTC) X-FDA: 82400169852.23.CD3F0D8 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by imf20.hostedemail.com (Postfix) with ESMTP id 859A41C002F for ; Wed, 31 Jul 2024 13:45:23 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=EmSqvN56; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=d8bY7yld; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf20.hostedemail.com: domain of chuck.lever@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=chuck.lever@oracle.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1722433482; a=rsa-sha256; cv=pass; b=jfLNByIlRHumJKbewWvRYjPGihZL6kQI0r1WP+3fk58BZhBKByIqUPG8hsMUEMJxUdzDWf Rxky3j2TvJlCCtupxfHxlBADN50x2LzfdD1Ld7J/RbeBbfjiFUtbluCbkzH6wIJZpD3cd/ rUiVoZvVj1FN8fomuycN1W4nf1oKLS8= ARC-Authentication-Results: i=2; imf20.hostedemail.com; dkim=pass header.d=oracle.com header.s=corp-2023-11-20 header.b=EmSqvN56; dkim=pass header.d=oracle.onmicrosoft.com header.s=selector2-oracle-onmicrosoft-com header.b=d8bY7yld; dmarc=pass (policy=reject) header.from=oracle.com; arc=pass ("microsoft.com:s=arcselector10001:i=1"); spf=pass (imf20.hostedemail.com: domain of chuck.lever@oracle.com designates 205.220.165.32 as permitted sender) smtp.mailfrom=chuck.lever@oracle.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722433482; 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=AtcmFstvdPz1Pfsx/lY3LB4GVzDtKi7bbOmMYgyuQa0=; b=Uz07rnkvxQVUOyhILkdWQjth718QHah+YRJ/5JwXV34i86HDOvgNg1Iu/QnWCm+LCdGCIo rYcUvkY9LBpHTPx0aeD4haPdNFQ9h2UekrHMvYDtkh7cvWcftQPK+lfUUkZXcUgZ7UxMu+ mZPYHMN3tcrUcy4srrqVi+I+8Vuq+Cg= Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 46V7ujRW001624; Wed, 31 Jul 2024 13:45:07 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-11-20; bh=AtcmFstvdPz1Pfs x/lY3LB4GVzDtKi7bbOmMYgyuQa0=; b=EmSqvN56k3rWU6nnCX4+Dbi52DboVG7 2NGGx/ojcbs05la8JZARGHySYw/S7HncT6uTLyKyYX74z6p5Sf7Tna8YdB7Odb3V td51FyncNTOOTxKRc5AcXdUFotxQ8sJac6GKPGZpMn5QBOG/QP/SEkdjMrhfNec1 rpqYYe6pT8qsjS4etnh5fdC0sTGP98LQKvuzOsTzanOtlqwp4QLUJ1R6tvCsoHmo 3iy0KYs9eRu1+R+2/Bb5HNIHaNtGJ/2W8aeXCHqU6ibnr6Sa/7x4QUUcMQNlb7kE KDBndZPZvjgSPQpUupx8mkexod5GKaZEwcbKf3nEOfxfKwueSDC2YjA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 40mqfyfcct-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 31 Jul 2024 13:45:06 +0000 (GMT) Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 46VDJlDU019080; Wed, 31 Jul 2024 13:45:04 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2169.outbound.protection.outlook.com [104.47.56.169]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 40qjms8v7t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 31 Jul 2024 13:45:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Co5ONfEiVbTRN8AR7xDYpSDHMSZD45VXBS2EnKDeuvQYH7ESl5KOuMu6Fj7bysGRn0MffVE+fvj3muO4w0kN09ZIrkgvma4P9QlrAE5C5Vo3wRFb5GyEXPEqnMo87YORWu1kPuU5oHKEzRPsd23GNv+LUa72fdTOaXuyyy9S9Y+7M2NwiFF5aqTWdcC9lcgH/SopVyje9bStjeHy1na/jnWuSCmL/2/WOgEsJByfCDc+mFtnfospy2X5PtOYTXv+p20ZBlToJlwrl2QYa0vCuK+BUboTEfUDAH/1+gSOCygk73A3vdpzVYeymJhrnS0V/0et55Az+6XdTjdWPWr3aA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=AtcmFstvdPz1Pfsx/lY3LB4GVzDtKi7bbOmMYgyuQa0=; b=gebgOAICl7MQjYiw9ba2HZZE2RUyZ6HFh59tJHNb5C6efR4A2LiBjnLsxC9Z9/7prH/FY8/wfNKzj8jNKljFP85Q8Y1v2/GgfGzs7Ep2P4Kcvr8jjXuJguP5dggf8tekVJf1PmRQdsvvQfS3DqrTEChal/GA7VdjPpl71GSLf8slCpwRd3/24YjeTQStGW3ZvevA3tQcCwQDiTMPUYi5eaGIvJ6tXc1GGFbeob8SnocmUIjUTt0Fd5k2dGhXOqQRUAKM8j/VSWvPuwO2dDx0R6EQmcycewwTTz9tLQaoXjyxt1zT1Z9CtrguDRoyaiefaJZ0ZzS7cIp93PrWBfDrhA== 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=AtcmFstvdPz1Pfsx/lY3LB4GVzDtKi7bbOmMYgyuQa0=; b=d8bY7yld7EWytqMR5ZaBVPX0Wp341KlklLvSA0Gs8ldyBwAQIaYgGfVAHK9WEuBo5CS1cyPpMaEuYESXdtvXJToCBk+EyL1nIiqI8s9DbguAz3pPpZcc1C6/d0VNlQdFaHghob199DSFop5uhF8x3CmOfLHxtPGJZybZiuMshKI= Received: from BN0PR10MB5128.namprd10.prod.outlook.com (2603:10b6:408:117::24) by IA1PR10MB7143.namprd10.prod.outlook.com (2603:10b6:208:3f1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7807.30; Wed, 31 Jul 2024 13:44:58 +0000 Received: from BN0PR10MB5128.namprd10.prod.outlook.com ([fe80::743a:3154:40da:cf90]) by BN0PR10MB5128.namprd10.prod.outlook.com ([fe80::743a:3154:40da:cf90%6]) with mapi id 15.20.7828.021; Wed, 31 Jul 2024 13:44:58 +0000 Date: Wed, 31 Jul 2024 09:44:55 -0400 From: Chuck Lever To: yangerkun Cc: hch@infradead.org, brauner@kernel.org, viro@zeniv.linux.org.uk, jack@suse.cz, hughd@google.com, zlang@kernel.org, fdmanana@suse.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, yangerkun@huaweicloud.com Subject: Re: [PATCH] libfs: fix infinite directory reads for offset dir Message-ID: References: <20240731043835.1828697-1-yangerkun@huawei.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240731043835.1828697-1-yangerkun@huawei.com> X-ClientProxiedBy: CH0PR03CA0039.namprd03.prod.outlook.com (2603:10b6:610:b3::14) To BN0PR10MB5128.namprd10.prod.outlook.com (2603:10b6:408:117::24) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN0PR10MB5128:EE_|IA1PR10MB7143:EE_ X-MS-Office365-Filtering-Correlation-Id: 871efe56-34a6-4207-51ff-08dcb166f7c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?+1+VvORXw/rIfsK+hPqfcEIZwXRhgYQBlL2/trtRlkM/Jw/zC0zPXNjSSOgL?= =?us-ascii?Q?v9GXZf5MjO0hDWTDtzxIIjOKSKJvPcx4/Q1tTaQPzcUPFv28mN9OFRueCFMJ?= =?us-ascii?Q?LoMMwyDAmNumcVstkHid9h4Ne+0NrC2GSf5B5DVx4gR9ouJ7tFIA//D/q7Tb?= =?us-ascii?Q?grcF/jaoMhiTagLfLO+W6uqJUNV4qgHVDl2NFuykiPbFoLasLIRhYBD9U5HH?= =?us-ascii?Q?I5zmUtSPpfY7gxWpTnY29q6YI+yrT/KeFwgxD9vVrVBJgRa8WpJ8+bxPUN7G?= =?us-ascii?Q?JezJCoZqCd3T3s6+5SxoIYgaXpxPehwSfGXUQMn1L8eGuOdpKxhrIpubH2wb?= =?us-ascii?Q?zvanzAsGXYOCmd1wHe6JPpo9Zfetpzap147zr5QEd6MMEaMqdMPUEAjDSNAx?= =?us-ascii?Q?fNdgj5lL7DLINY1GJcFitoH9M5uRjgbs7dYOS7dub1vXtdxxTvaoyA32nqwy?= =?us-ascii?Q?n5FzeRe6Byh3LGDBNVMiBCMlzYK1HgfViaQ/b93g23BFZ41Kq4IPJSXPn6jp?= =?us-ascii?Q?/4aDgJHeYx72baTxRkeScmpt14atOw7sboOoC8hghFKDrTq6+QFxJwNP8GPo?= =?us-ascii?Q?Vkvbu2Z/B2fD5XpCZIs77z1ISHvO/raAmQvVkDgJyGqgVY41cskePBRRfB8x?= =?us-ascii?Q?hH92vZlkCIxb9/TusO+kkf0zQf2TZFD5X106TufHtkq4K79I4XwK9Mlj0K/p?= =?us-ascii?Q?eWo7R2IEk3+FBCvaFD9VM/HMkxbU96LGeGneua7VPZp/sEHQOx8gyPW+CA6p?= =?us-ascii?Q?y/0tvqXB8b+gJpOWzoJCHbsOBH3UmHUr4ddAFnsWhElBowB09KxUzaEXFfR7?= =?us-ascii?Q?3GyuV8Z9j0xt6bnPYQAh94h7YG1hTWCeay8cmHLHXO0UyVH4qhmnBSz+5mU7?= =?us-ascii?Q?vmUvRcDwbvmoOhj1GN+szVjFXP3BzFmh9Or5UbRU3f2K52ColGafQ96GO/2z?= =?us-ascii?Q?/qKgcZ+9eSQMX+75A+oDUpZiZY2ZkLRmnLbs0XzIyTy9HsSeX+HMCdxmBLgj?= =?us-ascii?Q?/5u8OsdE3i9Gs13HhH/k1szlek3PNdKP52FY9x12rDT0qskACUWld9vJdkLz?= =?us-ascii?Q?4cJmBJLcQEOHCU4aEaHXhlxT4aFAV7yf+nB1mGju3Z9prXQkzTE7bamogCv5?= =?us-ascii?Q?zAIpJw5BJwa17kN5vzITq0c1PSB5MKLGwk8sUuNrvYDqjgKzrqc4qdfXPbcK?= =?us-ascii?Q?vuRttpbpFlmT+ZBhI6uH1LWca+YNAMQGW1Q1XyzR8FVflmBUxTAYLiBcdCH4?= =?us-ascii?Q?dGAqeEiWoEixquDciE7mgs4ORdSijLddBsHD563Hg9XxDrck67iX9KzG5xbB?= =?us-ascii?Q?sijKqYMgcEXxqJmTDy6rag0hEFFL7uj6NemyLTAgVTzeUA=3D=3D?= 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:(13230040)(366016)(1800799024)(376014)(7416014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hcxWbZyVyVLsr5MoRh5IezFyFT89FexGVf4Cry+dTvYSpAQELw3LB8zeTvax?= =?us-ascii?Q?I9AZIPHJb2W728mU3/V0/jQ/N33QPS6N0tGWN+U7LEUabCrMSru4/LGR0rZc?= =?us-ascii?Q?mumaOAWfUGH7/KbpGCn6/VwTjmVyKttVvc8969s2F+bIzjf/B4fhEXooftZ1?= =?us-ascii?Q?Yzgkq/tLrZ6AT85bddvOikPMGMdbLZkxhtzhzV85eHECZslbI/dzYZ3UaW24?= =?us-ascii?Q?OOqWkjIBOHC4yGLpu0a2y4aA0LJfy4CsLiRVBKuqkFiDnKlxOiPSUtCEBVV8?= =?us-ascii?Q?RWWFMrNjdF1Vy1JI5zT+HYXtBz3fysxgxkD9MWgA0kacODT5mOuLTarUZag9?= =?us-ascii?Q?TOxNFO5gB1q32stCEpEzPyVst0gS78uOFszqN4olfgWZF/IBXh1kWOFbIuat?= =?us-ascii?Q?7ngAC53qTs5qlgWHZ+EkC01+83ViwpPhMWq1KVhVf2w/j7WKTZwFMHIse4p7?= =?us-ascii?Q?bpGijTwO+1mcNuTffceiEBikrR7uwVAmNOaZC7YIJFRMqhKERaPmmNLbUMxX?= =?us-ascii?Q?WK+axBAVsKpjbBzxOruNsayfZkQ3VbM9CrxKBdxP7LTTweEhawkJfejdd4zf?= =?us-ascii?Q?QN36HZinjIlSfV3U6KrbJlep30Q05z+6qp2eD0YFwkIclkyOwewlnTcpdHNw?= =?us-ascii?Q?2/uNu7pYFKnk5aeiCcMUU8IPZczFoyGqmuck6MJAQ9xA5YgLZi3zJl/JlGxX?= =?us-ascii?Q?/SUdaE59feMuYktY7qId3G/uBwkMoSgAYqdPMLOTZx8k/cRcmful9y0DDD/+?= =?us-ascii?Q?HCIjbEwmMHZuiTFeUkhPInbGzPiKo7cIUfrjv4mjsOcG4nct26JjLueT/h2U?= =?us-ascii?Q?F2KuRzt78C2e0mnNLqAaVKSoV6+3SykHePxepxi7aKvcEQL3Iy7tgUHSwtvz?= =?us-ascii?Q?k4WIO/7m0t8yXEC/nLXKiz+gQ1Ok6M2I8aX33Q9If8lf6T+0XLx26xnA7DmE?= =?us-ascii?Q?p/xZF4X3HeQHF1C8CqaV5W8HCTJVhXYC4yxGYeKr0S3TS/w9o/w9b0KLHS/Y?= =?us-ascii?Q?yUZJXDW2AUdj9iteUoFc6v+tII9ziTPUhvj/+gi2P+nWhAyhKlEp84r3Zx/a?= =?us-ascii?Q?wGfzUrrv2OrOeRTuMsfk/BBEzE1UhfRUzldmkrdUIRt10Ss9CMCBctHKUmeD?= =?us-ascii?Q?yIMmACkwiwV9DTJFbyipz3Vkhaa16IpyANPHIPJ9YnfM5a+IbFj2gwNpw1rd?= =?us-ascii?Q?oDusAXV4NYM5NZKQP3FhqGcQ+WBMxjP+l2un/X/mHHobQNthtzV7G5pyx+dz?= =?us-ascii?Q?SjWEADsan4wpqAxdN28kD5IhGfr3LAOE+fpNm/GgvvY57U9FlhF0gcPB7GWr?= =?us-ascii?Q?Qt4asuyiWWUcqo2Yhm4wOVUP804efzGBrqiAgZ36v2KiCu28P9Y74WO9W8S1?= =?us-ascii?Q?/cc0HkomXeBr57E7if5NN7VZ/F1BaEsC2NmRADHngonPyCVs4Av5/LFKCx0T?= =?us-ascii?Q?LroB7FbPb6DFf3fiKPVnhbFJFsvUfMg8G/inWhf308QUnU1uPHYFun3nK4D7?= =?us-ascii?Q?jVYO/D8r/fRVDklMF2/5hm2XuiBTmopbsMaf2vDi2xH8+wMqupyacDA5If3f?= =?us-ascii?Q?Z3VTUVzoYWv4f44B574paMPNkINkjzXLEFuwnS+i?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: mepBh7IquAGA6nYehTU1gW2FXXs72zu+SJcZCiE5kNowdpBXQDEV0nZ9aA8/gZQVfLiCz+84QcYWxHG/Kl2SiML3rVkIt7BUAALBxn9z5ngqYGTNLr3Z3i04ZcYnzPJgnSMtMscCh1ct5y7BFZRoOh1rJj+KoEAtHOOsJdMHyWjUHvnvQr3aqsJFwXNmqUlPx0bOBmtMFKEm0svBOysJ9yZf+v1C6oyLrlUK/q58I0POW+iNCODJza2J1ZqjfmyHAapILkRgw+keQ0/btD4tMYGdrWthvvb8FMAf7poA1SjRaYfxn3zIXq2h6z8oBPXoUbdVa3EgZdGf92dv8kYTUeybf2ECgcTxioRKSTblf0WbH61pMij50EdLif4E9pCavh9uTMNWZH3luDZSkAj2Snu94Mgu2hFn4CGqWkz8YxJ2xOg5DZCOKQQCckGoraNa2qa8B47qP+AgEwKj/NNuFzezEa/guf2kf3sENmsUOnEV1XenbDC4rFuptpIWBQNRPPwA05pS7V2Dh1/PgnoNw/EYftvlsCkCKaO1G+u+XOSzneuCWHr7e/Bfyd8/UFvCeYLDE+dQsx/Rz31DuN5/dN5cXqyRKGsoaIpRsGPNKdI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 871efe56-34a6-4207-51ff-08dcb166f7c7 X-MS-Exchange-CrossTenant-AuthSource: BN0PR10MB5128.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2024 13:44:58.3002 (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: P8N8tPYsZA2B8xouHuDVu6bPQ60M9fHXSAEbhehU/G4nBCXopkaNyaSM6YS4FegvLl1ULeJ1gYdmz4ntzePBhg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB7143 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-07-31_08,2024-07-31_01,2024-05-17_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 suspectscore=0 mlxlogscore=999 phishscore=0 spamscore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2407110000 definitions=main-2407310100 X-Proofpoint-GUID: EioM0dAQN4sVQpw5NCj0Y8VGsmNBUkEP X-Proofpoint-ORIG-GUID: EioM0dAQN4sVQpw5NCj0Y8VGsmNBUkEP X-Rspamd-Queue-Id: 859A41C002F X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: si5jywet9ins34zfwpbcrgypg6wbuscw X-HE-Tag: 1722433523-19498 X-HE-Meta: U2FsdGVkX19YneF479WjgQ6Kcaigs0UZwuoFhab8UHPsIV9J1Yi4pDQwab1+cRS1NFgsEmqHysBqrWGO385S1099iPTvbChYXpo1lKBhiwol+q2nhZRI0xLrVEjmPqE42fy976ljI6/RjInxuNunuzc0txVIs3WGW53IvrvJsrtNZrFaTUNutkIiL9akQ/E14eko+mohHEh72/JZRhV0ZmvcxwmYFMA3NZI0R7A8Lcqn8c83+H1OxwSl5mz5LrPMc4O9LqZ4/Rov//wIULz8eYh4aoCMQAW4kU1nZbXDSQHcEhvWV49sD3qnoGct27dTjrpejGPPAKtl5N5q3xk9szacAMPJvQ8pDKSnVeKy/L+YOSGv8fiM2EdKR3D7bFX0isbMXKhyBCvFwKoromlSPcOOBazAhYJlAEAG0/DzQqZvD0QgvlQ33FcxBC73jzs+uqCFXwQcAYuf8c5xqoLnkqRhWTInjDnqFByECM/3bfidqYfaYZEbj/kjvmLHnX+pHoDmp1Sd/X5UR/ounTW4W5mDdj2ABIXvV4jRMTlWU3B/X94ZDR4Rnc8KqjXkb8HeGqVLBCxK/Cfrdct4hJsDuRto1TpuWpwy/iIAAjk4xm4R7Lmequb6HIDN+ucwdPbdMBsZ8lGfiOKle+7VC26ff7918l63OQMJT1npxid+GYmpyCTSipWIzgo1PlIPKSkFTl7ulR7wWLV+fY3ePrxkfIMy70ixc8M1tCY1IoNyZ3opTpH3gdjMwYcOKq86vCn5qT/KHrGtVPY0lTpA3wqqWP5yTwjXdCnVPop6p8ZUcN/PrKu5zrR9QAK6lk7U8E46L3O80CeGqkpWDLH4gINN5cGT6QeI/FeSdPIoamIbXqbNIOR40NTOJuZ+r0l6xaSJ/segdRRBJrch6DLbvoDEubKsk9grCG5RXSXoEdH4dfEfT43pEqQuCGDlKFulxRHUm2f0SNJPyLEyhAylk33 zxSMn35K Opc8ab2s+ro12E6KdhipWOiYtQu5QJYOnnjM7wI+eYlP5Xlsqfopc1MmAzBlwFGRmw/zeq09eDc0JyGWGbd2u1pZ+luoWcjX3aVVp0HIGy6bMnstzicZA81J3jX4ZQtFb4MYyw3GmdMoSMxcfw9MdTfQZqzNV3VAo/j4TEdOj/3F8rBA8JScjMjNETcJ6TloTESKt7IMJJstmLmbVatgTfWSiFvtjcYrCUuVftPsIyOeSgIO77ZpqTcr6i8fDaT9b7qbRVMV7cTKUzUdgIlyl18o+TuOGBoZXIW4HxC/JqzgKjrrhcHUaUJGjHoor4SElTNR5/5DJd42MH5aycupjwGZMO2qAEnEQZjiXw0bceHjQNsCEFBbpgreLpJPZKUV9+PgR6agsA9HOqVxLcOKKqWFswZcrhjFvQHPuPqg/3LSvhTwZ1TIN0eoOiDXaaOh+voRyl54Ntp62ti+FjEaJLKAk74I1NsjXoxmK3onCieFp5GIiS+1umKh5Qg== 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 Wed, Jul 31, 2024 at 12:38:35PM +0800, yangerkun wrote: > After we switch tmpfs dir operations from simple_dir_operations to > simple_offset_dir_operations, every rename happened will fill new dentry > to dest dir's maple tree(&SHMEM_I(inode)->dir_offsets->mt) with a free > key starting with octx->newx_offset, and then set newx_offset equals to > free key + 1. This will lead to infinite readdir combine with rename > happened at the same time, which fail generic/736 in xfstests(detail show > as below). > > 1. create 5000 files(1 2 3...) under one dir > 2. call readdir(man 3 readdir) once, and get one entry > 3. rename(entry, "TEMPFILE"), then rename("TEMPFILE", entry) > 4. loop 2~3, until readdir return nothing or we loop too many > times(tmpfs break test with the second condition) > > We choose the same logic what commit 9b378f6ad48cf ("btrfs: fix infinite > directory reads") to fix it, record the last_index when we open dir, and > do not emit the entry which index >= last_index. The file->private_data > now used in offset dir can use directly to do this, and we also update > the last_index when we llseek the dir file. > > Fixes: a2e459555c5f ("shmem: stable directory offsets") > Signed-off-by: yangerkun I agree with Jan's down-thread comments about llseek, but other than that: Reviewed-by: Chuck Lever > --- > fs/libfs.c | 34 +++++++++++++++++++++++----------- > 1 file changed, 23 insertions(+), 11 deletions(-) > > diff --git a/fs/libfs.c b/fs/libfs.c > index 8aa34870449f..38b306738c00 100644 > --- a/fs/libfs.c > +++ b/fs/libfs.c > @@ -450,6 +450,14 @@ void simple_offset_destroy(struct offset_ctx *octx) > mtree_destroy(&octx->mt); > } > > +static int offset_dir_open(struct inode *inode, struct file *file) > +{ > + struct offset_ctx *ctx = inode->i_op->get_offset_ctx(inode); > + > + file->private_data = (void *)ctx->next_offset; > + return 0; > +} > + > /** > * offset_dir_llseek - Advance the read position of a directory descriptor > * @file: an open directory whose position is to be updated > @@ -463,6 +471,9 @@ void simple_offset_destroy(struct offset_ctx *octx) > */ > static loff_t offset_dir_llseek(struct file *file, loff_t offset, int whence) > { > + struct inode *inode = file->f_inode; > + struct offset_ctx *ctx = inode->i_op->get_offset_ctx(inode); > + > switch (whence) { > case SEEK_CUR: > offset += file->f_pos; > @@ -476,7 +487,7 @@ static loff_t offset_dir_llseek(struct file *file, loff_t offset, int whence) > } > > /* In this case, ->private_data is protected by f_pos_lock */ > - file->private_data = NULL; > + file->private_data = (void *)ctx->next_offset; > return vfs_setpos(file, offset, LONG_MAX); > } > > @@ -507,7 +518,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, long last_index) > { > struct offset_ctx *octx = inode->i_op->get_offset_ctx(inode); > struct dentry *dentry; > @@ -515,17 +526,21 @@ static void *offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > while (true) { > dentry = offset_find_next(octx, ctx->pos); > if (!dentry) > - return ERR_PTR(-ENOENT); > + return; > + > + if (dentry2offset(dentry) >= last_index) { > + dput(dentry); > + return; > + } > > if (!offset_dir_emit(ctx, dentry)) { > dput(dentry); > - break; > + return; > } > > ctx->pos = dentry2offset(dentry) + 1; > dput(dentry); > } > - return NULL; > } > > /** > @@ -552,22 +567,19 @@ static void *offset_iterate_dir(struct inode *inode, struct dir_context *ctx) > static int offset_readdir(struct file *file, struct dir_context *ctx) > { > struct dentry *dir = file->f_path.dentry; > + long last_index = (long)file->private_data; > > lockdep_assert_held(&d_inode(dir)->i_rwsem); > > if (!dir_emit_dots(file, ctx)) > return 0; > > - /* In this case, ->private_data is protected by f_pos_lock */ > - if (ctx->pos == DIR_OFFSET_MIN) > - file->private_data = NULL; > - else if (file->private_data == ERR_PTR(-ENOENT)) > - return 0; > - file->private_data = offset_iterate_dir(d_inode(dir), ctx); > + offset_iterate_dir(d_inode(dir), ctx, last_index); > return 0; > } > > const struct file_operations simple_offset_dir_operations = { > + .open = offset_dir_open, > .llseek = offset_dir_llseek, > .iterate_shared = offset_readdir, > .read = generic_read_dir, > -- > 2.39.2 > > -- Chuck Lever