From patchwork Wed Oct 30 06:12:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yuezhang.Mo@sony.com" X-Patchwork-Id: 13855957 Received: from mx08-001d1705.pphosted.com (mx08-001d1705.pphosted.com [185.183.30.70]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73D491D0F47 for ; Wed, 30 Oct 2024 06:12:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=185.183.30.70 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730268768; cv=fail; b=SiNA/lseuZx91EpjoCtIVgp3JV3G8wd8B6IVAPmAvcBDv+4IDjFYBPLgtg+hhAdvDqXl+UFbOEbi2zikso7fjTejY1bCiPhSNwI/Z54XFCqY3NQ/9njAML5n8cC4/NnZJyMB2TTSQs3w8G6NhOjKlBDCsiqAva+JUNwDZeyXM6c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1730268768; c=relaxed/simple; bh=xMehnAoOA0YVJI3CGAFLzJSQX6AE7G5cZ9Ylvy/2qVs=; h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=g+AchnW8zEeBBs8pifEN1xRyfikVvapYtKcZKk49OT9WWb+YwyVTYb1oqt6JB+HXAkbm+V/5Ymk9AAUr7dmu5t2bqTQQxxGnCgEZOcrLERu8Yg2wuddtsHP5VgrJJ0n17PnINIZH5lyFGM46IdRyooeaXVWBf9WCH6zH9bUh2U8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com; spf=pass smtp.mailfrom=sony.com; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b=QNz/20XC; arc=fail smtp.client-ip=185.183.30.70 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sony.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sony.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sony.com header.i=@sony.com header.b="QNz/20XC" Received: from pps.filterd (m0209318.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49U5rtik020979; Wed, 30 Oct 2024 06:12:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=S1; bh=xMehnAoOA0YVJI3CGAFLzJSQX6AE7 G5cZ9Ylvy/2qVs=; b=QNz/20XCNJWp0qZ0Q4WPHd2gISmYsQ5/uVSVgsO0UOdk0 iakUCRhJ3H7OQBqpXTB+u10xmuDFzMTUuYdqwOwIPVSxD+WMCOdsyfOO9NZafRp/ 8zbkhbeqRLBsWRssmIGFUqImDjzv9QSK6kCB5TfwhJNc9oI4/F7nJBa2AVpYLbsY iZ7uJ/e3vKSHzM9qlxRcZuXlypuup6Yq0n5MHJCIHIYnyQj1amFt2lyesHwPlUrk 76Q/oHNmLT6c1i7NlCwENmMKI+lOYCN4u8fuFowIflsByznrfITM9dawCWZDd8sx qV2PkqhG3jDStMx27Pu7AXafVMO1hkKry7XTZ4eHw== Received: from hk3pr03cu002.outbound.protection.outlook.com (mail-eastasiaazlp17011029.outbound.protection.outlook.com [40.93.128.29]) by mx08-001d1705.pphosted.com (PPS) with ESMTPS id 42k2yq8hs8-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 30 Oct 2024 06:12:35 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WkB2YgmOCMsYpL5pCM1nzECXG3PC8qwZuASHSItM0Bjkk1Za1hyCUGXhkhHUFBMYYMO6CIReNH9LlP9yuMfBA4m2LDgJrDIYMPRGzboP3frGvcC2L+97tpSPywkpbCZYGzWmMZI5uDQDQ5rCGjFVegrXYIchFBW+oY5kkY1YVdQN1EXnbRSKYwqK8w8pAW5X6F+5HX+98giJHNfPYot1tFCjeVw6+ISPb6VFO9bWFokmaeIkUVkX5o8bKs/D2D9sW4wUoTjInpeoZNSwjcorDVHJAmDOd8o16t3ZxHnaY5Pb8kETFW+W1dSwnr22PAaMKwP04cDDuiBKmjseZQQx4g== 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=xMehnAoOA0YVJI3CGAFLzJSQX6AE7G5cZ9Ylvy/2qVs=; b=x34F+F3oxLRbLTSzkhuPvOUg1w6KtEIHQJs2uke2ol94G5YNVVOzX2OQUkUVD3s8M4AXkdBpak9yMt5Qs5Bq2zqQY6khoFO5ty/pmqepy42f0/GNyMEuiV2H6vs6fZm0kBQvMOVy0tkFxvbHppb2iTkf3Nrd7EmylMZUWsbmbig0udNuqwgo3N0J9RgPSwed47AdpBkfl7qBWDoBHXHHdvSCaZWEkfmaXVipPK6mSJT6nXLGXaUqEqNoo29jkyW+HTynCCZWFzYh1sn1KqUZCqfOcH/pRAnk+Ambh2NStxrvpcnxY0JYSUkF6esfYGJnvykcrhnVla+OTAQAMeT/kA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sony.com; dmarc=pass action=none header.from=sony.com; dkim=pass header.d=sony.com; arc=none Received: from PUZPR04MB6316.apcprd04.prod.outlook.com (2603:1096:301:fc::7) by SI2PR04MB6115.apcprd04.prod.outlook.com (2603:1096:4:1fb::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.29; Wed, 30 Oct 2024 06:12:26 +0000 Received: from PUZPR04MB6316.apcprd04.prod.outlook.com ([fe80::409e:64d3:cee0:7b06]) by PUZPR04MB6316.apcprd04.prod.outlook.com ([fe80::409e:64d3:cee0:7b06%4]) with mapi id 15.20.8093.024; Wed, 30 Oct 2024 06:12:26 +0000 From: "Yuezhang.Mo@sony.com" To: "linkinjeon@kernel.org" , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" , "Wataru.Aoyama@sony.com" Subject: [PATCH v1 6/6] exfat: reduce FAT chain traversal Thread-Topic: [PATCH v1 6/6] exfat: reduce FAT chain traversal Thread-Index: AdsE8b4RuEBQExP8QOeg0VhYfcJWAQloFkDA Date: Wed, 30 Oct 2024 06:12:26 +0000 Message-ID: Accept-Language: en-US, zh-CN Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PUZPR04MB6316:EE_|SI2PR04MB6115:EE_ x-ms-office365-filtering-correlation-id: 505e397e-5cab-4aad-63e4-08dcf8a9d3b2 x-proofpoint-id: d8690225-876f-412f-87c6-a7cb45557a4c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?nb8qkpeWE1B5Oi/QZ2+S90k3bubDMLS?= =?utf-8?q?V/5sknxvmtePF+yJcTadb1akDMUbXyDJ3Hb0OMvnNnLWnm6j72V8mCW0bRwAnY8yY?= =?utf-8?q?n8JT4r001iMIgmDS5us44KCgIByBEs9HbSN+ejAc8DL71Po3Euo5evuM8dqRFGV1a?= =?utf-8?q?pBwFPZQS34SNqsqjZ/fuHBdhYsmPOZS3Tyu7+WZ8xS0KLclWeW+WYMZ12KjJUA9Fw?= =?utf-8?q?MkDuJm7e5TKKETznfJ8OTqB1S3vkVH/GMmLKKzAzE9qwsDm+uMwOjS66bPGUyGvVh?= =?utf-8?q?80YcqNzpL50deX+sOzAk/MCxMvzEWB6mqPouqtT2WmTCM506oCtWmYc+HuHGSuFon?= =?utf-8?q?d15zd0udRmQqLFZ6ujF7tbOQyXwqX7q2XI2DHEKpTK8f8eV0N/nJM0FtNjTQC6V8J?= =?utf-8?q?2xQx+0vQKXdHB1pjb2A3AaIwIYpJ/3/lFlTQTIAduQV0NNTIhPo+d/MA4cN4whuzH?= =?utf-8?q?3YrJkwQ86fq0MEiNKf9YlG/pGQSL/HMrKlMscs27q3S4oJYCiJc9YQclbEBIuCsOV?= =?utf-8?q?INyHge4h9Hx1GTi9tw6QWqrSnQ7B2kpEAF0fVvL4OtiabwBpIIfZESoXbz0ZDtyda?= =?utf-8?q?s496zkEIPggWchBKdV4Buaa5bwQvzq/lYqiubGRxRYotT1QWfp7z0rWTGBhn717TO?= =?utf-8?q?5e9vS1cUgm2P72q3byf9o05oPUnIGsd6p5IgDNjGPqkWdem/yh+L0mgyz3ybEgZrz?= =?utf-8?q?v13xLf1/2SqN2cawvZEfxbQWxUPjofa8hgXQsyZoWz6I8GTLrQYfDVbq1j4Q3AKaj?= =?utf-8?q?I9KRT+YYIY1cbYkfQzFsWFRgxIvhDRtwtUIKiyCv+2kI4+qDFyzv0jEHyJa9noAQy?= =?utf-8?q?rv5KYlPH2ZIpy+lQNC2dIZuoLhRsactvffxoImOuH/x9r7uHHoU3EL98tF0CwqtlY?= =?utf-8?q?n0WsnIZRn8l0hr2QQk+XwclZsK9SGmT1Dn5N6U6DCtq7F20P2DQMlyDtU2mtHw6d1?= =?utf-8?q?5JrKM6eHaUs9OxJtYrOBDp4tCq/nwxvKg0TyMhkMiq5f8HsjE0v9gZRVET7Qcz3zz?= =?utf-8?q?T6BDN7yS5M2Xxj5Ys+GvkQG/+1amdlamsk4kWtKs7uPiQq8FtF4/xcTEEWU6sRrHJ?= =?utf-8?q?AujJd/spGqeu6974omrTizY5A9yAZYcpbr+O8Z9j0CA+NfbJcQwSYPS8hwd+eMm9s?= =?utf-8?q?nAvlMTIKWiO+DxXSoStC7ThDK78muI9rr/NWXo1EX1iZBs1YfI44/O9sEbDuh14qe?= =?utf-8?q?vJ/BANjXR67dnnN89QZaDrw+Saa8bjbVG4LUh9mDqjUD0Ou2MK5R985AOen56GV0c?= =?utf-8?q?/NATWYfHkrwIG8px4yndAWBaCXJpPGSHsg3DnJe3wGq5jjTYZtbErsNg=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:zh-cn;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR04MB6316.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?ZL0T2E8/9KCGIcIpkhZhQYRNWDse?= =?utf-8?q?NR9Ath8tHeauc3hJef7gdATIFONBRoV3Da5I7ev+Pinm8+b6ry2vHSJLV+kekf3yU?= =?utf-8?q?iNxpYhV7snloeE1gu2r+jnYudV3fldHKer/9kbNVmW1AEj9Dtgm+Q8e6By39KwLuZ?= =?utf-8?q?5Oy+sccEnq8Jp6KnEXIraCQwMM0qU2o1nnFYDUB+kx79WggLdUuiIj47c7H1Km05q?= =?utf-8?q?1QYTy96RwNOmGrVEGhaM78IQiab3IsxCcjjeLlc2pQrTfYsm5b+K70quLLkmTuULu?= =?utf-8?q?4EzC8QJfSs/ab1fodCRJjpjwPqmUhsEUK/jBlOwPh/+uSkvtHdBYX2mArHFDCZGwx?= =?utf-8?q?ytQPqs/H6wyma4KcG5e2KEZJCuWpdiybvE/37gwhzLUAHMdMfmZP8yuGSQk9q16vL?= =?utf-8?q?7MjeaeSEybB7XJs4OsLDzkBs51XqAKNa0iJ4GxVK7jFCogHvGLZykNpM00Eqgy9/A?= =?utf-8?q?qV5qLBi3gn8FQt2mRvRAk25g9g1cmiczXZFgqTSy1hJnyDi10eodhHcVl53FQIy/o?= =?utf-8?q?4UMWzUUsOMKBJv/sfytKf3KNrkkTEZSeVz/sZqMNFw190F6e/8o9zCcIXCnlzXwK/?= =?utf-8?q?mNSaEgGl/cGw1U0u4vHIZIx9qa5a0g8b02Y2WhT7yjJVZk/utppDdTAWpoSWG6tGe?= =?utf-8?q?SFFmZ1y8jlrQkA2NIzZlF9LiFjTENy3LmtzIe2x5CJ3F2XNt36j7t6hHyK2iUEURJ?= =?utf-8?q?XS0fze1RHO/SBi4B0Xw4jA0KQP5rx+nf8rZr2D4tEzLn/EEkiKlWRgtrbsy4m+wLN?= =?utf-8?q?z+n5OVNcTMR9ie/8q7qoclUCUBKL33mId6zc81zJQjXD/8z5j5OngeAiGrbKVR4gI?= =?utf-8?q?ixJ34KewrsdLAB+tFkS9rfjWmPwLqnlsNSOfCbPg8SB7+s4S6DkleId5z0Ne/ZKdD?= =?utf-8?q?N8HOu9eKGH6cSgCWmZl+/kVpcN3vv90W8eX/lYpm/dx+uH/yeU9iX4w2R6/KErOU7?= =?utf-8?q?uXRMeM0bUAXGCUIw7fQWs2CIzTkCvCYlD0JZp8kcGSPCgm8dUooqAVYE7FYDSmGyf?= =?utf-8?q?wBZhqRULEINfyKolyROYxEIxi0vHWmqliFAPchfQ/vXmnK8ZbUPCNEQ5XCFlCil9J?= =?utf-8?q?HiDykL6wTYUIZpjg0unfDBeUYOTyulQaQ8oKEv2KwjEHH+LKxVq9I4fILAQiNiz6A?= =?utf-8?q?CW4yhW/an/0mkywHxiTtng6EzdxW7ky+e9gN++kVLlehRNkm4gud2Kf4nBulpYZhd?= =?utf-8?q?3Ijwn2RAH1iN4tQodlcXx4p1smFGhpr2nlS9NbmFJaVdD5qOSIAg+3bS0EWexBqY5?= =?utf-8?q?ulmHE6uYjMDZTkVK+IknYCIJxtQSMHi7L3ZSaqnLIKj4eu4nhyy+vSA7ibySdx4aU?= =?utf-8?q?17j8DYBFoVCNxrGq/NWGIr/f4uQD5fVf175KVY2S+2XyptypdVLgUEm9forCKxx0a?= =?utf-8?q?SI0FaQoZ0MDc1QP159g51j5muZl9wyi2zNqb9EJGgXQcrwUrJA4wB/c3sv2roJG5p?= =?utf-8?q?3VmLhC1Q106zM0KXeIBaW6Pi6CtlQdLc2Rrr9etidDT4rXwqoNiz7SzovKQsuyPjv?= =?utf-8?q?JJwGWK/ErCYj?= Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 3mixlnrQCtSjuvNgIPuqTWxuevjcYK1SaXMtRJyz4D0j5r1P2iJDcX9tKJDNVX7ikMm2oW6+ILKVYKbIgPX/dnzi8BXv5kp6mPrMVuM8r2BAF20IMEOftZkjj39tUImblwXu1/aqZmISTMRYt4vmRl7Rt3uEjpjdpcpVkhtNE3phEV9ji6+9xSoUQaanqYz5QRkWX+qwboD2Y0c2ZAR4xS+3KyXlC/ml/EdzuVpuIbVG18vH0Nw2K4tljiEQKE+SJeBDxmruuBDLkQvuHZcyifUFXjbpPZL8gelbHBgyKRzwC7aPg7SH+F89vItofTAieorJ3g1HhHN7VOe3dnsKA5WIt3HnGVRFkmCKZPRajVo9g+8N5KZX03O8k0D+GH+Gv4ICUHdGAqn8PGuvCwUmpaS/G1h7aQHaHCGjUDfZbIHvQEr95fJUtkyYdc7vhFHdiG8lgsmVASJ9f9xdI31tvrRLkUy1of0UJiHSWh/S0C/8TVaPhqmR1fcQW5px0dp71IVnaQOaiz96+0XVYQ4nvRyGJuhavV5n8IawNBYDw6JcjDxJxa8vLV31t1kElzzVf4SDMRBC3dWt+wSLdPWm02iv5SJ+3Yyah9uHJIdrYX2SHprmviInbKOg6OSSBk6w X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PUZPR04MB6316.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 505e397e-5cab-4aad-63e4-08dcf8a9d3b2 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Oct 2024 06:12:26.4113 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 66c65d8a-9158-4521-a2d8-664963db48e4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ykbpUBajYzl6w7Sxv28UySro8oKezVaTpsJpCTvQprrYeFI+Lw7hRATkDD1k8yE3oo62RGq22h+UL2kf142OUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR04MB6115 X-Proofpoint-GUID: DL65XRzm4G86MUjqzO3eDAoXPDGMa6Px X-Proofpoint-ORIG-GUID: DL65XRzm4G86MUjqzO3eDAoXPDGMa6Px X-Sony-Outbound-GUID: DL65XRzm4G86MUjqzO3eDAoXPDGMa6Px X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1051,Hydra:6.0.680,FMLib:17.12.62.30 definitions=2024-10-30_03,2024-10-29_01,2024-09-30_01 Before this commit, ->dir and ->entry of exfat_inode_info record the first cluster of the parent directory and the directory entry index starting from this cluster. The directory entry set will be gotten during write-back-inode/rmdir/ unlink/rename. If the clusters of the parent directory are not continuous, the FAT chain will be traversed from the first cluster of the parent directory to find the cluster where ->entry is located. After this commit, ->dir records the cluster where the first directory entry in the directory entry set is located, and ->entry records the directory entry index in the cluster, so that there is almost no need to access the FAT when getting the directory entry set. Signed-off-by: Yuezhang Mo Reviewed-by: Aoyama Wataru Reviewed-by: Daniel Palmer --- fs/exfat/dir.c | 5 +++-- fs/exfat/namei.c | 32 +++++++++++++++++++++++++------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/fs/exfat/dir.c b/fs/exfat/dir.c index e2d3a06fb5e3..d1cc58aabbe0 100644 --- a/fs/exfat/dir.c +++ b/fs/exfat/dir.c @@ -148,7 +148,8 @@ static int exfat_readdir(struct inode *inode, loff_t *cpos, struct exfat_dir_ent ep = exfat_get_dentry(sb, &clu, i + 1, &bh); if (!ep) return -EIO; - dir_entry->entry = dentry; + dir_entry->entry = i; + dir_entry->dir = clu; brelse(bh); ei->hint_bmap.off = EXFAT_DEN_TO_CLU(dentry, sbi); @@ -256,7 +257,7 @@ static int exfat_iterate(struct file *file, struct dir_context *ctx) if (!nb->lfn[0]) goto end_of_dir; - i_pos = ((loff_t)ei->start_clu << 32) | (de.entry & 0xffffffff); + i_pos = ((loff_t)de.dir.dir << 32) | (de.entry & 0xffffffff); tmp = exfat_iget(sb, i_pos); if (tmp) { inum = tmp->i_ino; diff --git a/fs/exfat/namei.c b/fs/exfat/namei.c index 39297d449dd3..5f5bbbdde194 100644 --- a/fs/exfat/namei.c +++ b/fs/exfat/namei.c @@ -288,8 +288,22 @@ static int exfat_check_max_dentries(struct inode *inode) return 0; } -/* find empty directory entry. - * if there isn't any empty slot, expand cluster chain. +/* + * Find an empty directory entry set. + * + * If there isn't any empty slot, expand cluster chain. + * + * in: + * inode: inode of the parent directory + * num_entries: specifies how many dentries in the empty directory entry set + * + * out: + * p_dir: the cluster where the empty directory entry set is located + * es: The found empty directory entry set + * + * return: + * the directory entry index in p_dir is returned on succeeds + * -error code is returned on failure */ static int exfat_find_empty_entry(struct inode *inode, struct exfat_chain *p_dir, int num_entries, @@ -380,7 +394,10 @@ static int exfat_find_empty_entry(struct inode *inode, inode->i_blocks += sbi->cluster_size >> 9; } - return dentry; + p_dir->dir = exfat_sector_to_cluster(sbi, es->bh[0]->b_blocknr); + p_dir->size -= dentry / sbi->dentries_per_clu; + + return dentry & (sbi->dentries_per_clu - 1); } /* @@ -612,15 +629,16 @@ static int exfat_find(struct inode *dir, struct qstr *qname, if (dentry < 0) return dentry; /* -error value */ - info->dir = cdir; - info->entry = dentry; - info->num_subdirs = 0; - /* adjust cdir to the optimized value */ cdir.dir = hint_opt.clu; if (cdir.flags & ALLOC_NO_FAT_CHAIN) cdir.size -= dentry / sbi->dentries_per_clu; dentry = hint_opt.eidx; + + info->dir = cdir; + info->entry = dentry; + info->num_subdirs = 0; + if (exfat_get_dentry_set(&es, sb, &cdir, dentry, ES_2_ENTRIES)) return -EIO; ep = exfat_get_dentry_cached(&es, ES_IDX_FILE);