From patchwork Thu Nov 10 21:05:03 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039331 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43B9FC433FE for ; Thu, 10 Nov 2022 21:06:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231382AbiKJVF6 (ORCPT ); Thu, 10 Nov 2022 16:05:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231760AbiKJVFz (ORCPT ); Thu, 10 Nov 2022 16:05:55 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E4E6C14 for ; Thu, 10 Nov 2022 13:05:54 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b6Y006965 for ; Thu, 10 Nov 2022 21:05:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=5JiKJfvBh2RZXPzYP/w21o0F7Tul2AU5c7RcxYx90kw=; b=Ch18tfLZjRxVkksVe2wFhQUjq5+cCPyMGbzZZWE7b46QgyfriqNe1GvnBcRXlFWQTVSQ TE1+Dxnja7NBh9Vild2gTJf4w1ZHLZyfT77axPORNTbU4uYY9dUsxLjBfoPtPsH3ycw/ 3v8DZpSTVopaSG4zP+Vq5GLO1e0jdMIRSbS0TWMRUrFmjekqR4228hCmJsx0zYpvovuk Hu2puhgxml0nhTjdZ6lpMtH+FkMh8tVYsApOB4I57c53uOrVfsoaWVPuDEue/bbZqs3o 3kzbB2zcUHi6e4U17uPW2LmjZkBXl/mt7udoDco7Dg4KMhf7FkgkDJM4ISa5qmC1lrZP 9w== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r127-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:48 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKTUmH019793 for ; Thu, 10 Nov 2022 21:05:33 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcqkmngh-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UBBcQXJf0r196jqtzrcW4GeDQ35lkF3HGQv4d8gPZP+S/6Z9mWR7Vm427oeQkhbywm3R7HETdAiIqNFarY55OAADeOoWSkTwOJCUwSkBqj3QvLIrajUEzQGMfTbwFdcPwh5TEXPAy7nWQZRXaKUMH2DM/Tgt6MAV8nSC56dqzqo/OUWMZl+7hGk+SHhWanVGhxnHys8DGx2rEAZQYr1thc4effA8gPOuqG2u7K2eoP2sZnPjeMkxgxLebfKlaegMqGRLWDhhE5oHvdWlEgn9gquB6nmDdplPi9MNhiI7BtxLivzc9MHmFXdnqg2i0N4PKJzf5ZJ3VthoccgWZ7JLAw== 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=5JiKJfvBh2RZXPzYP/w21o0F7Tul2AU5c7RcxYx90kw=; b=nOf/EvzoL0lKMxoduf1PCEUdL7QP0lwAC95xxXz+ks/Kpe2Hqekb/somBUzy7Z02YrKxVp5+Cva9HxcqJk+PsjbpQGNlZeYowAufNDe05KL3cvHxDTFwElhHNGi2QnTLtEZNgjJrI4jOFqL7rMRqEzlkkDc4SM0MQx8aDehxhU8M07EmKCN06BJ3K/V7Hz4PkluhOxtSeYV8oBAXqSMseveq7AH2aq4KUWoAys83YwEAKPN+hYKc7ivgMi4kxskQvjSPZhaPRd6BwpOPy6bxYybULpCTwgNlzjAUODmOv1hysOgrpJX4V3x9l2txMmEe6YPyioUSA5K0C9pGytDO4A== 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=5JiKJfvBh2RZXPzYP/w21o0F7Tul2AU5c7RcxYx90kw=; b=eTKfecW/o1EThIanVvp1p9NN8ZNi3fDLfO3xI9oestxzZ8u/v6r5LKMZ5gbdiZK5pX7ExGbN1gN57kAv73H52BNud80RzJGmRCDCEmSG38kxqjH0x2u3n2wlncqY1TRcAeFBw7ibLuKkG6i9hWyhK0l6dv4rQpPXXZJhU8595to= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:31 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:31 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 01/25] xfsprogs: Fix default superblock attr bits Date: Thu, 10 Nov 2022 14:05:03 -0700 Message-Id: <20221110210527.56628-2-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR08CA0060.namprd08.prod.outlook.com (2603:10b6:a03:117::37) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 6ff6a5a6-9317-42c3-584c-08dac35f4cec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 62/WoPh7UaDsNdhibJnMNcLY5d8AzB96YLF3zsP9Wes9kwfAjLxV1dBNgiH5/gtaea02lJpvRHapuA4DRqomqgRa5EEioPTwZ1N1x8yzuDysoPT+CC3iWJkxJrArsIK1ZwOsIv9kXaV4/BR8Sce9jrvAcXbHbv7hQf5//ryKsWrgfR/V9zvjaA33jl0HqMwnmQzX3Ad/WmSuYt/lSFL62g6kUekLGHFcI4xc6ahOaK/HNj03KfWnCMRl89r8P+Y+8RNRUQEizWRnhObFAeb0q41jN9tKyosZA3e4sleMmNa5itqiy7Yp3uMAKwzEzTuloB79I//2fx+ZRQ2T64gTK74ijI+mGsb0DJj6+HQWyoOVYKzYZeyg201nPXITCStOm7xEwGP3FEL40FZCd83dzcN0fwO1sytHRNanQQdjqrAdG+x/B4DwZWKraxhzDZnPTjMp2sYWTLTj7p/atwQ3qTUZ2qZELeOjicr8EP+1ohX3tzTPtT0g7sO5CgbLGOi42XhB+22am4zIV5wVAHNMBIfpRMHx1OIlU25y9sXL2chWXXQweRHJwFkyU8APEMouoxO0BlX2ydkPXh6+MHMbNqmH7Qa56OxLdjFDWvI063lgy40zehFferPKKGHZGtG4PDdO0xLgEOhf6U3inHA6spN3trxvTPJiZFroC8wEBuo3WfcutRgOtXlazZzbrgIjFLQkXC0quONGRRIFaPvBcw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eYcoh9b50mV90gXIzQS93oAgi6cIleIy++Y+WXcAj/QrlI9Sh6Nio6AuE3J08g8GjZ+pkIgbNkogjDx3RlHPKGh0zJe56/qIQi/oFolITE8QHtj74rFhssQ92Y8WR+Q4pmIdoTNnTvir4VmcLfMWOM5bgqlCT4a3O+4PGFV7Ijx2wZ4p+GRH69YD2UzraGJxf/6l0Q4GMDZqs9qGGIqOK4tMmZ/V/KqrICdrxk6zFoNaUNcCmbUdjy87B/hx9sJ51+tKgyL1TdsfsWA9L/Y0z8DRo5megTxJX5GasMG/B8dobE8kE2UUIoWF0gYllyjjAck8ZuCJPVvKGGmtmWfc4pbIWSTMtZlVIDJ+LRpejVDolHPMBhgkXNv45Qrt2KTTGFhb4Y6ikFDAo3JRxKsYVaeJWgzG6lVDs2Ijlo3iBy9oWOOyIUIEp8MrO+XhjttmQM/TNnWOJ/eBaM0hUHwFPKNQWPMHuPhhiDjz4zyMzz5Sm5FPgTMrFrxHkgSkBZBAsxOee7L4weFjK5utvxV7rXfaXEu0sDgKR18nQf+1lFaCxRL+7SmzopEUvsYLyw/jzUfBi9IgDZhHMud25nGt2L/oAjkcMK0brqR9YgUWb61UYIj2Ul+X7GzKLwuYwl5P3xObI0mwS42shJ+JjW2sKChx1wIp7/7UcaZthOGCAKp2UbUpJ7F3uTMsuzPdxheZ+9THDnqOumWW60NNTn9nH/fc36H9JhYlzkPgru7S2kS7SEl7g8OHmDzN/zjfjQzxEncI4DAbRtMD8e67H7aWPCM6e3MlJH6qKT3O6losY1EM9FCfJw1HM5BUgYXIf+f6/KSjUDEOxIDJSfvfJYy5ij5HFDzdAc4yNNzar25xxNKrUOMhJDdwd6UmVh84DhpH5lQQMivyb4jWQPf5PWgoNjmql0qFxlV0yD7nU4p+Q2EbiVoze6AuvPa4jtJFvZl/aXJidgWSjkNTIF+bg5jImSlThYy92M7n4y83WuAHJFlvYX8cbGmFtyIGHXpEKWdXm2J1dsCXEtIYm78bL5tpXpmVweHAP1I0PDBoTWcgONg14eIsIDGS7GefWyXyxdqA2qaI4yFwVufqfE1M4fRRUJjUjeP9zh3nOe8M4M08EwcIGL6k9UoYA/Odf9jYKYfHXXXOmUmCbLw/ABnlG8O0NB3Cr6ZNFyiKiJCn8jS59iVYNQps1fFwT7Z8O12Y4dMjp74CZ12bT/WFulB9icNvdlo8XzprlUSQCtScY5Pl6hmdWck5Nr44viZiDv776cNf6arQuELAKbOn46G95XFlRPr+UPvmYp2URSciS4X5J8sbsm4s926Pdm5Da109WK9H8bNcWxSpfo9D5T5PoCwaKE06fs2bReQduX8QruVpMwvhSfpBqqRTxYVlyVPe2bCWK+T6guOZ4YYUb9Pk8iTPBK2EbU6DY9HATx2If2vGRp6yaHI3lEv4PAbdiUa9Lu4h3M+pL07bn7Vr4GbHtusLR8P6SgwP4c6fhyj3j16cRcGWtU3jQNEz5yHZb3te11qXNT+96ywaygbsvAj1Lo7ccyFToLD3lN9S8KbgIk41bMkrR3SROgBSQqdM6dd4MbnSmaZ0RXkkTjQEvbIJWiKZpQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6ff6a5a6-9317-42c3-584c-08dac35f4cec X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:30.7775 (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: iEbQlxZg8AvZDX9KznNZgxof+Thc8Aih4E7OlmyxUHCHM9CkYfmYsAqJmDuKkAqEfpVeeb7i/4T+qQzS+V1iV5raGAR+7E6r+7ihJ2nBLrw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 suspectscore=0 spamscore=0 malwarescore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: gXmxizy1kAlt1qIpnYZPAkmKUmf5idjR X-Proofpoint-GUID: gXmxizy1kAlt1qIpnYZPAkmKUmf5idjR Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Recent parent pointer testing discovered that the default attr configuration has XFS_SB_VERSION2_ATTR2BIT enabled but XFS_SB_VERSION_ATTRBIT disabled. This is incorrect since XFS_SB_VERSION2_ATTR2BIT describes the format of the attr where as XFS_SB_VERSION_ATTRBIT enables or disables attrs. Fix this by enableing XFS_SB_VERSION_ATTRBIT for either attr version 1 or 2 Signed-off-by: Allison Henderson --- mkfs/xfs_mkfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 9dd0e79c6bac..e3cd61626186 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -3205,7 +3205,7 @@ sb_set_features( sbp->sb_versionnum |= XFS_SB_VERSION_DALIGNBIT; if (fp->log_version == 2) sbp->sb_versionnum |= XFS_SB_VERSION_LOGV2BIT; - if (fp->attr_version == 1) + if (fp->attr_version >= 1) sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; if (fp->nci) sbp->sb_versionnum |= XFS_SB_VERSION_BORGBIT; From patchwork Thu Nov 10 21:05:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039330 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A24B3C43219 for ; Thu, 10 Nov 2022 21:05:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230435AbiKJVF5 (ORCPT ); Thu, 10 Nov 2022 16:05:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231382AbiKJVFx (ORCPT ); Thu, 10 Nov 2022 16:05:53 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2380D45EFA for ; Thu, 10 Nov 2022 13:05:52 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b6R006965 for ; Thu, 10 Nov 2022 21:05:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=Z/F2Il6tcfJDbkc6R8/DERYfJnzNnQi8E+9/MvOSb6o=; b=3JeqdvF4dTJuKrD1PF8D0j16Gh264BjfuoWVtrzu5dmDkyii4WnrfE52fGgwUbcWedt7 lfhlm+im7G5M8Z9p/COlDkhRQKQUFhQvdQHHEkxSL4h4kIMYNFELMP7Y9HO4ztBpytnL FuZWC0cdvSC0zmfuqtG32rLirLkgOXats8hl4OT8F6XZhGufh1cG0j7zUeX94beziBp5 qnfTz1qsGXwabIqpHICw4YdA+LZj1XsVtzpsIeWzxS2jxo+ym2uIi4Qm5PBPoz4/KVoH KhDPL2GsYKMQAD1hFTvEWqN/cbBBtQ6WmcyKg4tV/5YhzSW2Yrulheg1uPn7m4Qq7eu+ KA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r12b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:43 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKTUmI019793 for ; Thu, 10 Nov 2022 21:05:33 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcqkmngh-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fL22WmQIrq27cZtUiogpRXlrmP9rsHtGIlkTE4IJAVgYaopEOGM2jhYjANtJSraxYhrR/TLPP32ZKV9wR5/7uQhFpX64GDwZXPub3Kc6EAVA1tuUEFFbSslmcaJPStXo1sFG/Q4zZHpdeCO27F7iiC/OmZWVM8LfJ51JMQpiPd8NG3LyKSaw0oD5CZBoYw8SVtNb9n3VDT8AmkSxNmcnGVtoAdKfi9+37VN+eS2OtLh63Wj9x898KbY4+orXfYG0WCvZHHgwLRmmpV6+/MggtqDKdaCd4jM6ZDGBtWMJvARa+n6D9mp3fB7tG9Stxs3i+qv0QTmgNAVK2Wh9SGUm9g== 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=Z/F2Il6tcfJDbkc6R8/DERYfJnzNnQi8E+9/MvOSb6o=; b=fGbkt5tBQBGUW7eAA81qA+n4my2zprk4CbGI3V5H6s8MZzdWLUXTlM1+U8DvcsmQBB4liIOSNzYk2h4a4esHPym78+dXR4c3v1Z/bYA8vC2ewOq9nozMvH4ie+VqOykNusGc6MWUjcxgHAD67v9XE6bAU3X5UjyEHCGQsX21+xnBMi8kL2Dh61pkkgximq50BDpLN19yws8axyv58So5/JaUzyyO62vWVUCw8iPd7aSnUGrpmO6R1vVmXDLMJmbgnQwqy4DSkvs0V9kK01KLQ4Ah6PBY6iEWmLA/qJb3zyY0RAU3WxeaTQKJZvyMJBAzhs53Gir7J3o1DzdWw9CyZg== 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=Z/F2Il6tcfJDbkc6R8/DERYfJnzNnQi8E+9/MvOSb6o=; b=CMuTjxpvaZGUkbp4fxwVkJYfqTzdKPtWcuJDfyWpjEqvTZOt8PTwTcimL0K1ZqE+KDI7OMgaIafZVr7lxzjo/pIB+4WtdwZU/OgSp9s5B/C9vycqYFDPi3kkG4nI+JthKt0KSpT6JTIkfdvURBYBJ2WMo+z2NWuhQdxAhOoyQ9Q= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:32 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:32 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 02/25] xfsprogs: Add new name to attri/d Date: Thu, 10 Nov 2022 14:05:04 -0700 Message-Id: <20221110210527.56628-3-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR07CA0010.namprd07.prod.outlook.com (2603:10b6:a02:bc::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 8c9b2c31-4c07-4ce6-0d5b-08dac35f4de2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yIPLzNCHzQg8ZJdhXDSMbMS82gWKuLYt9Flia56+PyIJNtwVFR4fZgpNl620Y9vVqDLjcQji6g0YGvALXy3xrQ9anaJ94iYCalPdWbe0ApsC49SSQ3V0GDSw4vzfrpU5w+HopMvsZjlSqneNQIOhyNhcq/Re89K4zgp8Urmv3dz26pzr4LqRwP6V54DTOsOgNGxiTAx/Zdgoi35S6C4LD1GyqtTsS+r61erMhe+l06Yo0bGvVFTrCcj9ykRzEVTQdx3n4r1vWJWMZNeJqpDK9b0BPq0Wl8kbiAf1ih4C3DvYKp0ULAV9CrjCc2oLGZ1rCvkSAy4jv/WqP0+r1K5x5zEofsHCP9qefwMRhwJoMk/BgTt2PqpS5BGVa/YA1kKB7DYsZZpvfZ8vUozj5m1Ztt7TTFy1t/atGpeYNsTN2ZOu7O7YP0wzkpDkdUDG8Ns04zwFAXpxiTUur1NC8GaYjWzkRw1EVBmZg1sr3f4FZa7s3O0OAUUjZfc583xMdfAOXX8jBHcZs3+OH9X0A2QvcntfDieqOsQ9I786R6Ftef+YsND75d/2eO/Dp+bPaU7eASx4cvvjLA8lEIyDvJAxICSwrbffiiaKecgZImon1R3wKClhYm40mo1cdjG+Z9ZsZjHnMIfGIItrntAuKjnouWbdKwqeSvkDjMNz8B6biX57Nq+f66vYSN+KL9bRgEILmrn0X9jZvzNV6WlRFQWIXg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QjJvr8sZuWqqQT0YuqJe5pPrzozIJAReJ9AQMfVEF/5oLuVmcVuqkDLEKKY3gl5nhqrZtWVLawrbvxPGobMl1u2gUjiZMBoursm+f0wMAihqnGgJOtFJKo5169RttFR/Buisj0Q3PZUvcvj6M7ix6wgt6mGg8JyKTAH3KFpchj3obJgGQ6cInT8B0ZLt+XgusXOGonQpr5pFKTJE5YXD5Im5xPRGiH4qWMoCP2V9Wc8GrqQBfW1VxlIpbowv5AiSHcxqr4Fki95xfn0GPDuoGBj221JKXcdMBQTElT9AjKTnC3dJaZ/iRUUvJDzcTWH9yrARurLEaYVRtirdaZCEyVRw+qHUtTLfCz5BUumGfJy1Sif++XFQP2jIpyG9TiVFZYe6pVnJhKcFk5BiDvkcwhuK9+G0ngcJOlvpPYgKSnyK1UK1hAcsgdnEa7sebV4GppICqhzOD6kaBBXL5K4lBNdBX4qw+oyQmby0RAO7YK5uE85zVJ++AboMnH8ptCMtgj2dKqnrNzTCJvZQKlcDcH637iuER6FNG9gWN/e5p/OZ4vWjzf7Ai383m6KNZEe0gzM7Tte/bW3nOUThLtqbHPEq85aRmqjY+cX2EQhddyLD4pr1sQHTummQ8xTAd6zHzbYRnTvAK7nkox/mVrnq4aCkTUcRfwUGTxdwtsMQumBA2krG7qXmgxO3yBtmgmSHmHLTbY5jLuYoz9rmCSaPiD4+QbvNEMagrCWsLcREQq8MGCUIJ5LKMASIpDgZHB8Ek4j0/gE54F2uyeEusPqMTJFlhVzp2pkGAZ/SYkgyqja8B0elxai2x/Go4wxz/0twGQBbuvSrlqESl3+h0oOeYW9vLmSHYtK4xBTV3c7D3qTFKa4/cgC5chExvmuxIYZODKC/vYkcEcECV1MCd3TXBjhis1NCymuH8ir05R5vkfn4QTgBKIC4IQ4OY/HoTz3pPJcsi7JlWHLKng6PwoFc8MLNOh32VVu2mxYeiHi7DgpyFgCZ5GMSu4+NOSXPFUbBZiBBPK3SEE6BBIuzezk/PBe6OghsJstFacL+aZRNCVP31fepYjSnCr0Rhh2uWxM1UmjeSSz54+Xyf9IQgjC7CuO8pOSxYCa/6mGY+Y2Shws0LSW6HajfY68rZVt/3wFkXbMbaHacDQuWAwK0cVtUa6Imp+sEMI90vbJ5Z4Wn+RpSPvC0O9oq2cSa7lN7cY2oHwGWr+6IMl20L4GUpiDXf0rI+6fJVvjOeCXwObx986rL82DBcfQmku395sjQKcsRY3A3NxxnbkpvrXDqjPYBZb02w6X6r9SVi6QIwj0wPG/uRfii+8S7zfzbmRBTN0TRyDuK1z/q0qzu3tYLBpsjEOP71MGcNaJOkisdZkCNoJVppAVVEOEVyfiJ8dNCeYAc/7KJ2tFAUQ15kV4cV/AtBXdzftS7hJZV/BYQigZ9177jCgE1ZAH8N9I08LPgbsLFv/JuCzQAAGmrgNCLMrf5/yUdtFPnPma6P5G68DqpXjvOMMwaCI4ZYoPU3ldkzF/Y4V+OU8HDkXnAZwTd+rI2wIatODAQBG/6yYcbXTo2vq/y+VmTRuIZb2KQTqNbQ14ipM0MxZKRMvTkDyIsPqeJPg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8c9b2c31-4c07-4ce6-0d5b-08dac35f4de2 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:32.3565 (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: qzTwp/tCX6HnHOcBIUgdKafnl1A1sIzVJA0PTQAwb2SlO/YlOpos126y774b05zQiZe/PBgaVlbMQr7mKKB5xBE8vG3obvsrSxt0mS2pZX8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 mlxscore=0 suspectscore=0 spamscore=0 malwarescore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: 8I4MYdD3UM_Ori1AoJZDGevdLATbf8Uc X-Proofpoint-GUID: 8I4MYdD3UM_Ori1AoJZDGevdLATbf8Uc Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch adds two new fields to the atti/d. They are nname and nnamelen. This will be used for parent pointer updates since a rename operation may cause the parent pointer to update both the name and value. So we need to carry both the new name as well as the target name in the attri/d. This patch also applies the necassary updates to print the new attri/d name fields. Source kernel commit: 7b3bde6f488372494236cb96da308b192bbe72c9 Signed-off-by: Allison Henderson --- libxfs/xfs_attr.c | 12 +++++++++++- libxfs/xfs_attr.h | 4 ++-- libxfs/xfs_da_btree.h | 2 ++ libxfs/xfs_log_format.h | 6 ++++-- logprint/log_redo.c | 27 ++++++++++++++++++++++----- 5 files changed, 41 insertions(+), 10 deletions(-) diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 2103a06b9ee3..2f6192861923 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -421,6 +421,12 @@ xfs_attr_complete_op( args->op_flags &= ~XFS_DA_OP_REPLACE; if (do_replace) { args->attr_filter &= ~XFS_ATTR_INCOMPLETE; + if (args->new_namelen > 0) { + args->name = args->new_name; + args->namelen = args->new_namelen; + args->hashval = xfs_da_hashname(args->name, + args->namelen); + } return replace_state; } return XFS_DAS_DONE; @@ -920,9 +926,13 @@ xfs_attr_defer_replace( struct xfs_da_args *args) { struct xfs_attr_intent *new; + int op_flag; int error = 0; - error = xfs_attr_intent_init(args, XFS_ATTRI_OP_FLAGS_REPLACE, &new); + op_flag = args->new_namelen == 0 ? XFS_ATTRI_OP_FLAGS_REPLACE : + XFS_ATTRI_OP_FLAGS_NVREPLACE; + + error = xfs_attr_intent_init(args, op_flag, &new); if (error) return error; diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index 81be9b3e4004..3e81f3f48560 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -510,8 +510,8 @@ struct xfs_attr_intent { struct xfs_da_args *xattri_da_args; /* - * Shared buffer containing the attr name and value so that the logging - * code can share large memory buffers between log items. + * Shared buffer containing the attr name, new name, and value so that + * the logging code can share large memory buffers between log items. */ struct xfs_attri_log_nameval *xattri_nameval; diff --git a/libxfs/xfs_da_btree.h b/libxfs/xfs_da_btree.h index ffa3df5b2893..a4b29827603f 100644 --- a/libxfs/xfs_da_btree.h +++ b/libxfs/xfs_da_btree.h @@ -55,7 +55,9 @@ enum xfs_dacmp { typedef struct xfs_da_args { struct xfs_da_geometry *geo; /* da block geometry */ const uint8_t *name; /* string (maybe not NULL terminated) */ + const uint8_t *new_name; /* new attr name */ int namelen; /* length of string (maybe no NULL) */ + int new_namelen; /* new attr name len */ uint8_t filetype; /* filetype of inode for directories */ void *value; /* set of bytes (maybe contain NULLs) */ int valuelen; /* length of value */ diff --git a/libxfs/xfs_log_format.h b/libxfs/xfs_log_format.h index b351b9dc6561..62f40e6353c2 100644 --- a/libxfs/xfs_log_format.h +++ b/libxfs/xfs_log_format.h @@ -117,7 +117,8 @@ struct xfs_unmount_log_format { #define XLOG_REG_TYPE_ATTRD_FORMAT 28 #define XLOG_REG_TYPE_ATTR_NAME 29 #define XLOG_REG_TYPE_ATTR_VALUE 30 -#define XLOG_REG_TYPE_MAX 30 +#define XLOG_REG_TYPE_ATTR_NNAME 31 +#define XLOG_REG_TYPE_MAX 31 /* @@ -909,6 +910,7 @@ struct xfs_icreate_log { #define XFS_ATTRI_OP_FLAGS_SET 1 /* Set the attribute */ #define XFS_ATTRI_OP_FLAGS_REMOVE 2 /* Remove the attribute */ #define XFS_ATTRI_OP_FLAGS_REPLACE 3 /* Replace the attribute */ +#define XFS_ATTRI_OP_FLAGS_NVREPLACE 4 /* Replace attr name and val */ #define XFS_ATTRI_OP_FLAGS_TYPE_MASK 0xFF /* Flags type mask */ /* @@ -926,7 +928,7 @@ struct xfs_icreate_log { struct xfs_attri_log_format { uint16_t alfi_type; /* attri log item type */ uint16_t alfi_size; /* size of this item */ - uint32_t __pad; /* pad to 64 bit aligned */ + uint32_t alfi_nname_len; /* attr new name length */ uint64_t alfi_id; /* attri identifier */ uint64_t alfi_ino; /* the inode for this attr operation */ uint32_t alfi_op_flags; /* marks the op as a set or remove */ diff --git a/logprint/log_redo.c b/logprint/log_redo.c index 1974382d2da3..65d365d8f02f 100644 --- a/logprint/log_redo.c +++ b/logprint/log_redo.c @@ -705,9 +705,9 @@ xlog_print_trans_attri( memmove((char*)src_f, *ptr, src_len); *ptr += src_len; - printf(_("ATTRI: #regs: %d name_len: %d, value_len: %d id: 0x%llx\n"), - src_f->alfi_size, src_f->alfi_name_len, src_f->alfi_value_len, - (unsigned long long)src_f->alfi_id); + printf(_("ATTRI: #regs: %d name_len: %d, nname_len: %d value_len: %d id: 0x%llx\n"), + src_f->alfi_size, src_f->alfi_name_len, src_f->alfi_nname_len, + src_f->alfi_value_len, (unsigned long long)src_f->alfi_id); if (src_f->alfi_name_len > 0) { printf(_("\n")); @@ -719,6 +719,16 @@ xlog_print_trans_attri( goto error; } + if (src_f->alfi_nname_len > 0) { + printf(_("\n")); + (*i)++; + head = (xlog_op_header_t *)*ptr; + xlog_print_op_header(head, *i, ptr); + error = xlog_print_trans_attri_name(ptr, be32_to_cpu(head->oh_len)); + if (error) + goto error; + } + if (src_f->alfi_value_len > 0) { printf(_("\n")); (*i)++; @@ -788,8 +798,8 @@ xlog_recover_print_attri( if (xfs_attri_copy_log_format((char*)src_f, src_len, f)) goto out; - printf(_("ATTRI: #regs: %d name_len: %d, value_len: %d id: 0x%llx\n"), - f->alfi_size, f->alfi_name_len, f->alfi_value_len, (unsigned long long)f->alfi_id); + printf(_("ATTRI: #regs: %d name_len: %d, nname_len:%d, value_len: %d id: 0x%llx\n"), + f->alfi_size, f->alfi_name_len, f->alfi_nname_len, f->alfi_value_len, (unsigned long long)f->alfi_id); if (f->alfi_name_len > 0) { region++; @@ -798,6 +808,13 @@ xlog_recover_print_attri( f->alfi_name_len); } + if (f->alfi_nname_len > 0) { + region++; + printf(_("ATTRI: nname len:%u\n"), f->alfi_nname_len); + print_or_dump((char *)item->ri_buf[region].i_addr, + f->alfi_nname_len); + } + if (f->alfi_value_len > 0) { int len = f->alfi_value_len; From patchwork Thu Nov 10 21:05:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039333 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16DEDC43219 for ; Thu, 10 Nov 2022 21:06:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231320AbiKJVGA (ORCPT ); Thu, 10 Nov 2022 16:06:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231804AbiKJVF4 (ORCPT ); Thu, 10 Nov 2022 16:05:56 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 967BAC14 for ; Thu, 10 Nov 2022 13:05:55 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b6b006965 for ; Thu, 10 Nov 2022 21:05:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=zSzUbHHsPqry1PuI+/BSOAzzFUmgMyvNAVExvYdxrRc=; b=Uh1pFcEmm2olj0WE2sEVUnkYdhx1sd3ichu3PLKtBo/UUszRB6kg8eivFWf8kdYkCNSW 7i5eiGIXVE8JqF6K6CSL2xcdJg2buqOGew50Of8v6BTxw4f9FMN2loAONbLq5xXHUqnd r1H8AItDrTBruGiJjcGnmJQ2zzAun4zmgIgCBR1zuCAQL4E05aSfG0Px/+KO35ZaDDlA tPqzySMVktlNQiOdJlR8lzX5N4JboOdOhdt1PzYKs4XQDQzkppHY/okY6AAPSJ/3hF8Q lS99/D9UrNLuHpzYnFgr0142mvY5EwtrSanyg6GiRvd2YiNonz28MSRJIhMqznjtdQX6 ZQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r12w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:53 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKjqq2009659 for ; Thu, 10 Nov 2022 21:05:36 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2176.outbound.protection.outlook.com [104.47.59.176]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5harr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:36 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TT/uN26oiV6cZiWVoFOd1uF7OfAiBJWIEwZ24r8JSHvPQDYujg68M8exUdm1ijUGjLco1Oyy7db3ssItOV3XV7fwE1TBYCcEfkfPvg3H/9aDfkZam49JDkwImMvIWeX2HApoFNTv8MZt3hc8Tb3z8DBhuMSkPbnatm/2XQbGwVgNeFiwauFtm70iUXDSfDp3i9Xy9CbfVouE0U9cvlIlW4CnsWljcTGvsc1j8R095cieRyoYaVtcfiCfuxuYHFfsO/wyP+BexVIbcR0z1coWgh7dmgYZtpuAKuArN9ZVrPykscKGk02kwAtppMDeEhHeH3+mEQPrinYbBC1UwvE6qQ== 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=zSzUbHHsPqry1PuI+/BSOAzzFUmgMyvNAVExvYdxrRc=; b=X7y6+xJr+UX5NlsDfRihd7n1xirOmvNvmWsPpT7Id1/eTkE1K1WqSHMUKr7OuGOfW6Xb+8IIx8EOFOBgjWbqTGtEtVZMcV/ZebxAZxwEIJwLovn2rchpCKpFIW6aRTEnGZylWMRlz8t+lQbGmn030HKBAue0myMQtDU29bjAwxiqgSbLrpfcQzmvajvLSYL7XbnZVAHn4umHnOpuvBqBNTR50RPy4BaApGl5hREt/o/QzA/W378UrT3qTylIjkuOUhAUqMudPb1HBEZdmE3GrEGi/dYYBSCxQ2y9QfqsvLa8fpfZy5Mh3YwlbOi3eWaU7fankPApl7uMG2JUxbYI5g== 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=zSzUbHHsPqry1PuI+/BSOAzzFUmgMyvNAVExvYdxrRc=; b=ZxjopDbwqKpjCYPoyNKQzy0BWzj04G7xvq50zUuIi/RpfP7kUV2D3kptIPbuTmWTUtRQ63FqhsWQQTUKrcwJR7RaXQtsVoJ2RHere2yV50Pl9bPjXv6u20dGXsMQAspKc8384J1qOWswAyJjqyrE8PtpFun/9Qe4zUDEBpMUxjI= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:05:34 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:33 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 03/25] xfsprogs: Increase XFS_DEFER_OPS_NR_INODES to 5 Date: Thu, 10 Nov 2022 14:05:05 -0700 Message-Id: <20221110210527.56628-4-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR08CA0069.namprd08.prod.outlook.com (2603:10b6:a03:117::46) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 02a76e88-4fd6-4da6-de8b-08dac35f4ed0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CfgQPSIQQJ+JCn6hy0CT2+qPK3MJecZlW5kh3liu1puKrB3rnpfGPpKsEavL8FTvEMT616JNj+2BQp0ZdL1eqKjsXsFqvIw1I+9cYlaJ9yBtD/QWCg1gB8rDEPC3wFwPf9x/+p3MxlFQewgpbSwU6zc52nfCgEV1I2Zxahb3G1EqtNKhHBKWbZkCoyiEiPsQboBz27MlIX2ruSHXv8Udm6znYYk1VKuKYy5iD1VN/1gGylX6omx2bSRYl5UdI9GsVb5XLs5dazueom6PZ/vRr2QdoZhl1XYE83ZXwLIrX+aGk46Y3wXWmccqXMkhcyRRJgvVN+UCHJcwd2GJbxwuukXB4MKvyITGulzoH8s4j+6+9/uKJntvsp0fGyJBJRNnN+oTSIwu7BjJuNtWT8Q2JEGtup/OG5SQcTh7F4bjUghLXHSuQWSU2T+JudBccVbndbHbf4ceFKrKPFTwRcwH9M4TI4ibhiY1LgL1IBhSaHM79kiIXZ219Uglk0TOeHCWIyffB7ZvfTdozoklfuEW2LMXo2PYL4ExgDvTV9oX4DK+0uKYFC7JOS7JwRrIz1S+iO9TjT3wjlFDeA5OcULCjxL4j4mrYgvdp0jX0mmvGhOEEhksVVMxjx2P4YLlauka16dj3rkiYjTQyJUma714uNfhEooHj4B/1Tz9vgFg+whd/sekz4/VcfHXdFFmQfPg6BlZS9MsASPdwwdFhB4cRQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: d5rstqwDAnGrJOnHNUon4VHTxF1WobMs6HMctbDngYNSNtODkmNhCWuRD7jRTdr+v7FqEs1hT0aj/ET4usYWbnbjho5KfV1qK1AbipKoCxKEGe3qF0ukbroY15Fp8sc1ELH01w7QAbgJ2YvuKi3Qowg9Qd8Ye8iMMrFvKgS0vnwk/YrZZtgCc/UgGeFp0PeeOfAZU8mhmqGeUWM7BZXo+/ribdJbkPta2gW7BfiSRPl+l6RujbN+6HqBds8uU1AUvEruqPwURF2Akus6qe9uKOIIEdOhLKqMIYPdMLHaTMNblCxtwazdxJkvISrAPUVrxk7obpkoG/MWPbxOf+GhZmOHL3zjaHseyf4ViysPKBSW54ttvXtLvm53yirn3oOC20WE8ne75Wz4CfGt1Tcdxp0BqA6LVoauGieHRni+V5XW6lFCSEJGlDSr1MweVf10Vfx8I9FaAtfzBVP0iqkp2yP78dtVP73e2NbSCmpL/I7bK5815fbRbmO1Gep2xIpPIuluhtwk8+uHkDwrc0w3fBI+fqhlgJqgytH43tMPZ1GR09fJQ89RyXmkdhtVEzGm4aLOEbpfgXMPWL+QuCh+LzIETemmqKDOfgUW1DGfuVje4TvOQphcPJCtozVqnPwfeOl9qE6nkQssVqYXgc8ZRvVnOegcg9tVhPG8tY83KsQLOznOKrdroa9f4yJi/FxR0HfnfHCEbZ7Lwiej+1ZrW2LdCAQgZ9Zkg2BxOQcfINn92mcvEQI2RBlPiQqHUMjm+0Q00MxHJORwJ0q3C7GvJrCUkzejns6c9jxt6vliVR8H05jXhM4yo4rdF242jVneijVR1VDiOZaj06zGb7vaTTyLx8tKX8RZF0RdNJTEArqb0zVt0k2sGWb8VbChupg8ZL/Lw2s9vW/ziZfYBFdoP2u7LK+C/Sasc+1Zj9jWle9HJHBMjfLcD1PbVj4+DEHGlQxiaIjB3LcVrK8orfj+p1V5NO4BiMiR0Q16BnhCA45+wxho4eASxQIXPv6DHmhMCDhEwhduHNfGm0C5qcSSRgH1lq5Wva2K4A2JMWH2+96WS+XwjNWOdailFDA+vl64ieDO0tq6eeDDGJtIXdEawaGIV7rnEXjK+DCf8Vjqxc2D1knYtMQsqhcjeOUlTm8w1SKFkUPxi0Xg6BkEteUduyH0aoWoa9Yks1CtNNyGcCQHDuqOxpaCqys1EbfbjhNOB2TuY6T0zEmlQSH5B0Vu0vPPFA7FBO981N4ln5Szv7TRpQT37RSjij1JAq9DRvlowWFeJpKecx1bGcGSn2qDlH7dvZW+pp37fwnil16k4s6Br15Q5F4SGYPDTLFvjFOzIXU+XJPvcWkYnghFM28Ep+NP+bUwQA7OJvv/pvHdaJFqiz27gkJfDEYD+n15X/TGyjwJCrOd/GBnEJSCkOeF9m05J0+DPtpDl7n7sGsP3UwFAErJf1+l8MDZOQh8ZjxFy/GLesT1sFKMcjCRquNHKyanBky/d+QQ0gPGdiZ6K2fRWwi4JObZhQnNFCpxt6fU+jnV98Z7oc7KQ17S8iCsASrRDQgRwyqMjZkoNNAif9GbxLqr7t8aJDuDG/ofrBjrfcmYSsENY15eUJOEXqYHqQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 02a76e88-4fd6-4da6-de8b-08dac35f4ed0 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:33.9060 (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: YF2rRdwgkkGGrOMLZi1AGHDRGzfsBYdS5cYtC6p6WiSmdaXZW78YXJYyey8ywyIuN/Yde8rgzB6V0iX3nf2xPakPNJhcBfOLj9ou4fe1uc0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: S7wP4x7sT8YH_yOH7Ua0OSZoIU25LbvG X-Proofpoint-GUID: S7wP4x7sT8YH_yOH7Ua0OSZoIU25LbvG Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: e9dc6a1e293b7e3843cd3868603801a1af2704c3 Renames that generate parent pointer updates can join up to 5 inodes locked in sorted order. So we need to increase the number of defer ops inodes and relock them in the same way. Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong Reviewed-by: Catherine Hoang --- libxfs/libxfs_priv.h | 1 + libxfs/xfs_defer.c | 28 ++++++++++++++++++++++++++-- libxfs/xfs_defer.h | 8 +++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h index ad920cd9b6dd..6fd7ce42d3b6 100644 --- a/libxfs/libxfs_priv.h +++ b/libxfs/libxfs_priv.h @@ -477,6 +477,7 @@ void __xfs_buf_mark_corrupt(struct xfs_buf *bp, xfs_failaddr_t fa); __mode = __mode; /* no set-but-unused warning */ \ }) #define xfs_lock_two_inodes(ip0,mode0,ip1,mode1) ((void) 0) +#define xfs_lock_inodes(ips,num_ips,mode) ((void) 0) /* space allocation */ #define XFS_EXTENT_BUSY_DISCARDED 0x01 /* undergoing a discard op. */ diff --git a/libxfs/xfs_defer.c b/libxfs/xfs_defer.c index c4f0269d613d..415fcaf56e35 100644 --- a/libxfs/xfs_defer.c +++ b/libxfs/xfs_defer.c @@ -815,13 +815,37 @@ xfs_defer_ops_continue( struct xfs_trans *tp, struct xfs_defer_resources *dres) { - unsigned int i; + unsigned int i, j; + struct xfs_inode *sips[XFS_DEFER_OPS_NR_INODES]; + struct xfs_inode *temp; ASSERT(tp->t_flags & XFS_TRANS_PERM_LOG_RES); ASSERT(!(tp->t_flags & XFS_TRANS_DIRTY)); /* Lock the captured resources to the new transaction. */ - if (dfc->dfc_held.dr_inos == 2) + if (dfc->dfc_held.dr_inos > 2) { + /* + * Renames with parent pointer updates can lock up to 5 inodes, + * sorted by their inode number. So we need to make sure they + * are relocked in the same way. + */ + memset(sips, 0, sizeof(sips)); + for (i = 0; i < dfc->dfc_held.dr_inos; i++) + sips[i] = dfc->dfc_held.dr_ip[i]; + + /* Bubble sort of at most 5 inodes */ + for (i = 0; i < dfc->dfc_held.dr_inos; i++) { + for (j = 1; j < dfc->dfc_held.dr_inos; j++) { + if (sips[j]->i_ino < sips[j-1]->i_ino) { + temp = sips[j]; + sips[j] = sips[j-1]; + sips[j-1] = temp; + } + } + } + + xfs_lock_inodes(sips, dfc->dfc_held.dr_inos, XFS_ILOCK_EXCL); + } else if (dfc->dfc_held.dr_inos == 2) xfs_lock_two_inodes(dfc->dfc_held.dr_ip[0], XFS_ILOCK_EXCL, dfc->dfc_held.dr_ip[1], XFS_ILOCK_EXCL); else if (dfc->dfc_held.dr_inos == 1) diff --git a/libxfs/xfs_defer.h b/libxfs/xfs_defer.h index 114a3a4930a3..fdf6941f8f4d 100644 --- a/libxfs/xfs_defer.h +++ b/libxfs/xfs_defer.h @@ -70,7 +70,13 @@ extern const struct xfs_defer_op_type xfs_attr_defer_type; /* * Deferred operation item relogging limits. */ -#define XFS_DEFER_OPS_NR_INODES 2 /* join up to two inodes */ + +/* + * Rename w/ parent pointers can require up to 5 inodes with deferred ops to + * be joined to the transaction: src_dp, target_dp, src_ip, target_ip, and wip. + * These inodes are locked in sorted order by their inode numbers + */ +#define XFS_DEFER_OPS_NR_INODES 5 #define XFS_DEFER_OPS_NR_BUFS 2 /* join up to two buffers */ /* Resources that must be held across a transaction roll. */ From patchwork Thu Nov 10 21:05:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039323 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A190EC4332F for ; Thu, 10 Nov 2022 21:05:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230184AbiKJVFl (ORCPT ); Thu, 10 Nov 2022 16:05:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbiKJVFk (ORCPT ); Thu, 10 Nov 2022 16:05:40 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 353E945EFA for ; Thu, 10 Nov 2022 13:05:39 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL32KK003559 for ; Thu, 10 Nov 2022 21:05:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=TQCC9K1TmAHLEvwWqo2cuvA5lsGVfnoPO4frfJAfNUE=; b=1j+ySODiuf8g2R8mt1Dpy1hP738z4tGq+KQ5k5YwbM/yVnbwEoVNu65F7FIsph0oQySS L9YYKPf74dhLMbzXZQyvpTwbLZI4blimYOge5Fg9UB3yEhdUgj0HWufeNbpL3/8mnrU5 E44897L+yOK3S/G2NIPjEYohGzWRSlBmXPl8Pbcw2SyBtdcUrVvMTVm0jwRBSgDJ4Ao4 wb5pndT98Exoc2QCh1qVjBDxXLRiI/QPTSJAs8kR53PP34VxxqZdOWwq/G5vz7i4F1QI PnKjDj1rz/A5cCfs3JpTSMfyiyAWRloBRY4acxyTgSETY9MM4xJYj3JkilnSCqnYS/3E uA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vcg08q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:38 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKg6LM038091 for ; Thu, 10 Nov 2022 21:05:37 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fbe-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gIN7+4wWUR0kfHf0tQSe+I2Lf4N3ZK3Xh0latmrbY8zl02/1I8kWWBNtr9gZ/xpSRYoMKVMlvzqG/ojgcjw5RIWHSTote7pSIRcJ3vFAMmauln4hyxW6qkqEE0fsKk12SxkMnNoTJjhB6OoP+Dsfj7pw9y0SnKt5qiTY3ndugEnzwyZbPO80lBFqIHuNkI1mFMh6+t7se3pwd7Whqf20mI/bHoW0XuZAvqTuUSWY/2jAclrSWPpZHhPqv5WALqEqwhUPAYaZQOIUvdbOSiPVeAn83Bj/y4djbScTxJv3b8ofterxoEYnrD9i43eEh6R69lPlwN8R4rNZtBXcYLfF5A== 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=TQCC9K1TmAHLEvwWqo2cuvA5lsGVfnoPO4frfJAfNUE=; b=hy9nGMtQxUIJOtGzm2oPbtoVlUpRA3E92nUJG1jc/Ii+QO9PW2k+CCrDr5QajImDgN0cqQfFX6NlWDFars7SeRiPvfi8go0SCh4X1bCjKYoVVIWKT+5hQ/NtHuzWnzwoIdbQsfaBueuBMOa5Uc+DbECMFl54mESMHYQQfYnV1HJO1ZvP6y8ZlZN8gYhm3zaoadOVwgvTpvv0OgFKCJbPGOPLPzVerT0dWhzrTkWGIop0az7+oCyjjv3dsz9w79HYo529rgw5VPlNptN1Dg0/dewkYfu7fOZscUuzu4LpkAyLiNgVoEULa3mwSVR1PpAQVwWkEBMJ0ArUednFPH457g== 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=TQCC9K1TmAHLEvwWqo2cuvA5lsGVfnoPO4frfJAfNUE=; b=c6tvkHBvYWp/DRgxv+DiEQ2Q6fAo+mLeVDW0pqfoPSrg2tcA7JP/1T5ebnsIIWTjqu9zche/beqTYOHVLSsOGKWEQLnwyYTlpzxy6XQsh6TiUamzHyPLHnJ72gPTfqlpsJ8vSyYRS8EvCIetuqVOO2YVU5jcB0rknubVMCO48qw= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:05:35 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:35 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 04/25] xfsprogs: get directory offset when adding directory name Date: Thu, 10 Nov 2022 14:05:06 -0700 Message-Id: <20221110210527.56628-5-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR08CA0010.namprd08.prod.outlook.com (2603:10b6:a03:100::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 864db92c-ef66-4416-546f-08dac35f4fba X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: j+0EQpT43lJfbalDhZEJQbrwQMjKVhgWB5QnikOQPsuH7/qS6tRfjDNKh2Rs/xCXEF/BJb9FHlghABb378QcAWYeY89BFqNjXMMizOQMG4Hbl5Mkiz6QxySC5MBtW+aa1zkIKn7oc4xt5xqsHR7VFMWGhttHZ4sX/dSx+7hsgW0Y4TLhFxrKXkxsgUwmpz7yuOqN/pVu8V1Vjs0s0RJWdPyyGNMHQi5J63iRIUtIjRjRCnIpF3gquf88vl3YQzWlKlBJgzKC1nho4lVLWdIY/xFdApMRWv7b0FOU7xsv2GY6LD/ZOI9fMwqw/irt2ztwKeZcfUtfCzyX4d/SPM5NxR0Mr27XdCo/Mwt7se8lH1iUntIC/wl+dZ6rOT+s1sVP2hJsF2vhIpW9I0Ju4DdZO2y3U2Ub6LMoeErLhgWdfcgM+4ujemEi7DraYxfFxEiHPs2n/vaKFqE5GCkm2d2ZkeGVW7HdyJUL7QGUsB5V5GacO71nRSHjxYEtHc+WoK0B54TcdTPvYNX0Get3BCZp3b87hrOirLWD+6LTuqh8lFOlNPL1XKQZRGpyXblLIF0zSBy8B/VzNPohvjbFrqzolrI79Un37S30nGHc8iSpstXI/RHhTRcKHR8cS+aa8NUPhPLwBNs4NgnYhd3cx8XUp41jwHWdWtfLMV6aGqjDrJqPeHb5kKEZZXXDz8BPURaO0sZXhmC9pfhgvB1cO3q6VQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zKmv3ZfGNXrWDAceSI+b/Z5ZrLmzHbedXwLP5iKUjxpuuECLtdJUshfGW/WYCA4ENXJEJS21AlvoTgtlsrdXOXQCMmDbFQUnCFATkXftnzTiVw3/iALMthqWhT2Xw0jUN4bacuMYKG74rr5t/vxVO9blQGR6Zz15mKsMpy+icxWcNkhI6mxjWppc9OTOYU5Q4xfJQjGQc+2VbBXTtPlUT10LSz5Tis5rPbYxKo4Uk150D39rtAqSJRr+59TQj28twqZHnU2TXcTUzEQ7Mx3wvhP/+MMul3q9Hfnib+AYOEuvFhhB7Q67mt2UqQIFWyJ+0gPTCJ0mspWlBhb97R72BJ9Ta7JehaBbTYkTvj92Rtkm9Hj++TVMVstbk5tFmTy9HK+aTMCR5cy92V6bipS0uGTgTYQRdvEQSC8WHU4//6gx/grp0ar/OB26m2sWzIdbrgwkwVN6xmxi1FjajMjJkuFpBYszk8KHrknjrPuJ18leYPLdgBnbegPUYToAt+H1vbTqw71P71TxU9sG+l9qDFWzo0oAzhZYkEUGyCghP8mBj3k8d3bHoXnq71ey57TrlWJM7st/CNFRo1JkKnoWatOIeFFvmtnJpqC7Aqp19IxOOj6K/qN9sAdPQBkYw/CFL9CLaK7WdGrDsbSmW7BAQD7tws3x/ELOe5bQariNKaIa9p4oIsmpLmGmJ+yWcO+hZTsf0SQLnsmoB7Gh2NPCY8IV9G0feXMe/b+Vfd8IPfZntoxsKkCGlJwN1v1aT4uHnrBewOzs845mxeqGUhvNQs/Fm0GPlvME1GCy+kkq9OkGnYiqjVc0Jzbg2aAj0/c9vfS+CWqX1Am0zXYjkeqQ9zvTZT7qGkmrY3MxReACA54rW4vKJzy/WJ7EyknB8OEn/i/UWZLY0zFGvs65E7Tw/OX9sSasC3OuvXfpiD9/30OCETg6ZR751HLhk/uMcSrZEFPMqu/aaR7U+2gckt8OB9g4YKr+Wn1n1b5LuY8KfQx3VxXmcagma+kqOQdo15OKOdTaPsi42Bd1mzjOuoxatpHvG5y07z8mp/8T5bos9+sUF+c2CTPdIY1s+hjBLF3voY4ozoreCl8xCsA2rif1vvDrxK2XWW7sxd+7ZxFtliOmx4/vSGp1u21rZXAchhR1LA8/OXx2acWpIEz37YfiRAeRYrczcRvj+uS5IhFVS5mksQmVdxXClRF/p7LfzMrh7DErhynDSRlfZY2U6sx0V0nhKKjwdP5ro5MoINVIIozpC0C4/Porwvj77tCamTzQe2lP8Q90lYGNZ0HSaniutzpgzNqe7fOKkoZSC0sobGB+g+VhD+wMzlgx5JTyawpq4hvlyX3uekh12stCV95VMJOJOz+4tklYt2cpA0gkCNA/VjnZLSGFm08BIRM0wyACghG/5rFNazzPuJFmZDSGxlS90NoxhlJFXzaEpV4syZbyu5yz4uFbfXxLJiu166c1M/UUJleqWajPUoYBlLtvHCLApWFfkr50dJBM3D1NzV0yYSE4f0T0TRhjWj055E4JaJ7mzx0ESFipku5cPyjfO3s3xih9btmrGBCgWizGV9H+9ueQb/f6gKU0D95/etx1/HuJJgvr5GwjmRGdL5ixpg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 864db92c-ef66-4416-546f-08dac35f4fba X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:35.4360 (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: nJUPW3fdQAl5x/5LaYG9D0fW5cDSP1PLvEfBOpKAzRXhmIEEUa2KOQG8pXLcspeyEG/bc81G+AFLtugxnQ4O+WLYL4pUIS+EYx/Tqt6E8Rk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: xJihWvaiqGb0gfQHmKG_BdY5eOIk_niE X-Proofpoint-ORIG-GUID: xJihWvaiqGb0gfQHmKG_BdY5eOIk_niE Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Collins Return the directory offset information when adding an entry to the directory. This offset will be used as the parent pointer offset in xfs_create, xfs_symlink, xfs_link and xfs_rename. Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong Reviewed-by: Catherine Hoang --- libxfs/xfs_da_btree.h | 1 + libxfs/xfs_dir2.c | 9 +++++++-- libxfs/xfs_dir2.h | 2 +- libxfs/xfs_dir2_block.c | 1 + libxfs/xfs_dir2_leaf.c | 2 ++ libxfs/xfs_dir2_node.c | 2 ++ libxfs/xfs_dir2_sf.c | 2 ++ mkfs/proto.c | 2 +- repair/phase6.c | 16 ++++++++-------- 9 files changed, 25 insertions(+), 12 deletions(-) diff --git a/libxfs/xfs_da_btree.h b/libxfs/xfs_da_btree.h index a4b29827603f..90b86d00258f 100644 --- a/libxfs/xfs_da_btree.h +++ b/libxfs/xfs_da_btree.h @@ -81,6 +81,7 @@ typedef struct xfs_da_args { int rmtvaluelen2; /* remote attr value length in bytes */ uint32_t op_flags; /* operation flags */ enum xfs_dacmp cmpresult; /* name compare result for lookups */ + xfs_dir2_dataptr_t offset; /* OUT: offset in directory */ } xfs_da_args_t; /* diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c index fac072fcb1d1..93347cf24660 100644 --- a/libxfs/xfs_dir2.c +++ b/libxfs/xfs_dir2.c @@ -256,7 +256,8 @@ xfs_dir_createname( struct xfs_inode *dp, const struct xfs_name *name, xfs_ino_t inum, /* new entry inode number */ - xfs_extlen_t total) /* bmap's total block count */ + xfs_extlen_t total, /* bmap's total block count */ + xfs_dir2_dataptr_t *offset) /* OUT entry's dir offset */ { struct xfs_da_args *args; int rval; @@ -311,6 +312,10 @@ xfs_dir_createname( rval = xfs_dir2_node_addname(args); out_free: + /* return the location that this entry was place in the parent inode */ + if (offset) + *offset = args->offset; + kmem_free(args); return rval; } @@ -549,7 +554,7 @@ xfs_dir_canenter( xfs_inode_t *dp, struct xfs_name *name) /* name of entry to add */ { - return xfs_dir_createname(tp, dp, name, 0, 0); + return xfs_dir_createname(tp, dp, name, 0, 0, NULL); } /* diff --git a/libxfs/xfs_dir2.h b/libxfs/xfs_dir2.h index b6df3c34b26a..4d1c2570b833 100644 --- a/libxfs/xfs_dir2.h +++ b/libxfs/xfs_dir2.h @@ -40,7 +40,7 @@ extern int xfs_dir_init(struct xfs_trans *tp, struct xfs_inode *dp, struct xfs_inode *pdp); extern int xfs_dir_createname(struct xfs_trans *tp, struct xfs_inode *dp, const struct xfs_name *name, xfs_ino_t inum, - xfs_extlen_t tot); + xfs_extlen_t tot, xfs_dir2_dataptr_t *offset); extern int xfs_dir_lookup(struct xfs_trans *tp, struct xfs_inode *dp, const struct xfs_name *name, xfs_ino_t *inum, struct xfs_name *ci_name); diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c index bb9301b76880..fb5b41792498 100644 --- a/libxfs/xfs_dir2_block.c +++ b/libxfs/xfs_dir2_block.c @@ -570,6 +570,7 @@ xfs_dir2_block_addname( xfs_dir2_data_put_ftype(dp->i_mount, dep, args->filetype); tagp = xfs_dir2_data_entry_tag_p(dp->i_mount, dep); *tagp = cpu_to_be16((char *)dep - (char *)hdr); + args->offset = xfs_dir2_byte_to_dataptr((char *)dep - (char *)hdr); /* * Clean up the bestfree array and log the header, tail, and entry. */ diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c index 8827c96c189e..fd9c48d0879e 100644 --- a/libxfs/xfs_dir2_leaf.c +++ b/libxfs/xfs_dir2_leaf.c @@ -863,6 +863,8 @@ xfs_dir2_leaf_addname( xfs_dir2_data_put_ftype(dp->i_mount, dep, args->filetype); tagp = xfs_dir2_data_entry_tag_p(dp->i_mount, dep); *tagp = cpu_to_be16((char *)dep - (char *)hdr); + args->offset = xfs_dir2_db_off_to_dataptr(args->geo, use_block, + (char *)dep - (char *)hdr); /* * Need to scan fix up the bestfree table. */ diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c index c0eb335c3002..45fb218f0571 100644 --- a/libxfs/xfs_dir2_node.c +++ b/libxfs/xfs_dir2_node.c @@ -1971,6 +1971,8 @@ xfs_dir2_node_addname_int( xfs_dir2_data_put_ftype(dp->i_mount, dep, args->filetype); tagp = xfs_dir2_data_entry_tag_p(dp->i_mount, dep); *tagp = cpu_to_be16((char *)dep - (char *)hdr); + args->offset = xfs_dir2_db_off_to_dataptr(args->geo, dbno, + (char *)dep - (char *)hdr); xfs_dir2_data_log_entry(args, dbp, dep); /* Rescan the freespace and log the data block if needed. */ diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c index e97799b96fc6..56ee4ff4ebe3 100644 --- a/libxfs/xfs_dir2_sf.c +++ b/libxfs/xfs_dir2_sf.c @@ -485,6 +485,7 @@ xfs_dir2_sf_addname_easy( memcpy(sfep->name, args->name, sfep->namelen); xfs_dir2_sf_put_ino(mp, sfp, sfep, args->inumber); xfs_dir2_sf_put_ftype(mp, sfep, args->filetype); + args->offset = xfs_dir2_byte_to_dataptr(offset); /* * Update the header and inode. @@ -575,6 +576,7 @@ xfs_dir2_sf_addname_hard( memcpy(sfep->name, args->name, sfep->namelen); xfs_dir2_sf_put_ino(mp, sfp, sfep, args->inumber); xfs_dir2_sf_put_ftype(mp, sfep, args->filetype); + args->offset = xfs_dir2_byte_to_dataptr(offset); sfp->count++; if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && !objchange) sfp->i8count++; diff --git a/mkfs/proto.c b/mkfs/proto.c index 68ecdbf36325..6b6a070fd0d2 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -328,7 +328,7 @@ newdirent( rsv = XFS_DIRENTER_SPACE_RES(mp, name->len); - error = -libxfs_dir_createname(tp, pip, name, inum, rsv); + error = -libxfs_dir_createname(tp, pip, name, inum, rsv, NULL); if (error) fail(_("directory createname error"), error); } diff --git a/repair/phase6.c b/repair/phase6.c index d8b23ba5286c..f5f4fcea4bd6 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -973,7 +973,7 @@ mk_orphanage(xfs_mount_t *mp) /* * create the actual entry */ - error = -libxfs_dir_createname(tp, pip, &xname, ip->i_ino, nres); + error = -libxfs_dir_createname(tp, pip, &xname, ip->i_ino, nres, NULL); if (error) do_error( _("can't make %s, createname error %d\n"), @@ -1070,7 +1070,7 @@ mv_orphanage( libxfs_trans_ijoin(tp, ino_p, 0); err = -libxfs_dir_createname(tp, orphanage_ip, &xname, - ino, nres); + ino, nres, NULL); if (err) do_error( _("name create failed in %s (%d)\n"), ORPHANAGE, err); @@ -1082,7 +1082,7 @@ mv_orphanage( libxfs_trans_log_inode(tp, orphanage_ip, XFS_ILOG_CORE); err = -libxfs_dir_createname(tp, ino_p, &xfs_name_dotdot, - orphanage_ino, nres); + orphanage_ino, nres, NULL); if (err) do_error( _("creation of .. entry failed (%d)\n"), err); @@ -1104,7 +1104,7 @@ mv_orphanage( err = -libxfs_dir_createname(tp, orphanage_ip, &xname, - ino, nres); + ino, nres, NULL); if (err) do_error( _("name create failed in %s (%d)\n"), ORPHANAGE, err); @@ -1151,7 +1151,7 @@ mv_orphanage( libxfs_trans_ijoin(tp, ino_p, 0); err = -libxfs_dir_createname(tp, orphanage_ip, &xname, ino, - nres); + nres, NULL); if (err) do_error( _("name create failed in %s (%d)\n"), ORPHANAGE, err); @@ -1334,7 +1334,7 @@ longform_dir2_rebuild( libxfs_trans_ijoin(tp, ip, 0); error = -libxfs_dir_createname(tp, ip, &p->name, p->inum, - nres); + nres, NULL); if (error) { do_warn( _("name create failed in ino %" PRIu64 " (%d)\n"), ino, error); @@ -2936,7 +2936,7 @@ _("error %d fixing shortform directory %llu\n"), libxfs_trans_ijoin(tp, ip, 0); error = -libxfs_dir_createname(tp, ip, &xfs_name_dotdot, - ip->i_ino, nres); + ip->i_ino, nres, NULL); if (error) do_error( _("can't make \"..\" entry in root inode %" PRIu64 ", createname error %d\n"), ino, error); @@ -2991,7 +2991,7 @@ _("error %d fixing shortform directory %llu\n"), libxfs_trans_ijoin(tp, ip, 0); error = -libxfs_dir_createname(tp, ip, &xfs_name_dot, - ip->i_ino, nres); + ip->i_ino, nres, NULL); if (error) do_error( _("can't make \".\" entry in dir ino %" PRIu64 ", createname error %d\n"), From patchwork Thu Nov 10 21:05:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039324 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 330B1C4332F for ; Thu, 10 Nov 2022 21:05:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231309AbiKJVFq (ORCPT ); Thu, 10 Nov 2022 16:05:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbiKJVFo (ORCPT ); Thu, 10 Nov 2022 16:05:44 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8E864AF25 for ; Thu, 10 Nov 2022 13:05:43 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0bX3006962 for ; Thu, 10 Nov 2022 21:05:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=h/CLQBEMXu6DjOvpEu73/qh0MAXZ/7YUg42BgGuDNm0=; b=3G6y0Lzzo+6WBDI6BU6WSlb16d3c/Q+4Zmpw4nX2rqftpYhLTqoy2yNvlwg4r2D6gdrt QYrO7N6gnq2Il+4YtZXmLT6KfjIZPdH/v+5Mp5hQyXcMmrZcpy0p54LNn8WqcvMnIVZQ y1sClRIvNmxnC6L+4MvY5ZHluAnLGK2uk0s/19Yjbp6Nc4pp/KQrF3OFkW8fkjgQaS8M YEp7azupXjR26tDAs2fzRt9WU7sMkB+uxC0iWxIMwWjF9N+YpCLjv9TFjNivcEpNnGn2 Zsju7LWOjeaXhqeUoTN3p1bHq3NPsjiqRuo0Ei9jRf22Jn26fWTQtqBs5UQcqcitVwHq hw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r139-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:41 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKZ6DW009811 for ; Thu, 10 Nov 2022 21:05:39 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hatw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CPNJO6+p/JuXzYzZaUO4efgi9vIHjpXUqS/kSKuUQ3PaGnBGDq0V8p+MN9J3nbANcJBw1edTUVsxR+T/PL/QcFNbp8WNbKgj8tyMKj/GTSmxA27VUHT7vCaM9h/cz5eGQ6MmvOShUmFqNI7elJnZcidSiU63r3gIPBhEzIcfUCa4XVheqDWtOXl9LFdUuGVBuuKcyFzfgf5Cb05xtWgLnXNSJyPIfAsaRTdkDcvlHvbONiHpz5MxU7PsLkMluIzRP6rPYrERWcNmCYmSTIxmEwhKWEl4h9mnYIq66X+siRoZEWsSclzIwJyF51xDd9AG1pgnC4SXp2DvRhE2Jif02Q== 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=h/CLQBEMXu6DjOvpEu73/qh0MAXZ/7YUg42BgGuDNm0=; b=CfUtu+y1nYO/9kmkLyaG7zyHBj5uZSovQfvNj2i7gIS3zUNIQRvzwq27CcHZ80ZsUieLDboCOFHmVu188kDgRTO8iP4t8O+q9Sxj+LYLUA+/30py4KkjLslv4SyPTza0Oaew7Z7VRXY0ugPDrEpYpzgQeZS5gl+QdBCOGHzK1SGZQcNJMf9VPBWeZb6VJzbuytTWe/obGZJs9NnjCqrTHqD/eig8XWAtb2TxWjpq0NK2NJoEdsnSM1Pf79MWE+PRewWDZfa4zkConsCyQP210kGhUjGMf5Ce52HKg/ghZ2NmJbfhCD6gNvwtOkrm0xTUrYqWBn2p6+gvXjIsqB1cxQ== 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=h/CLQBEMXu6DjOvpEu73/qh0MAXZ/7YUg42BgGuDNm0=; b=sRgf8+vRsMrtDAoIGxVDhZOc4RVMn6eZSWoWtf7Vph778Jagxoey93qmuiRZOk8WUkEv10lPuAwn3dkrS0obknlwDFLT2yBGPoS8XZItZYu2OFMfq0oTc1umHwegCD/o6HwTQYgtYWShvzevI4/KX4uHViQT4Z7aL0wuHPk8QEs= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:37 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:36 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 05/25] xfsprogs: get directory offset when removing directory name Date: Thu, 10 Nov 2022 14:05:07 -0700 Message-Id: <20221110210527.56628-6-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR08CA0031.namprd08.prod.outlook.com (2603:10b6:a03:100::44) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: a67d0379-7461-40d5-3464-08dac35f5098 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6ACjK9g0iDn3R8WBwWArR3sV3VS+jb3hww86M3325K1+o2aKzqOKpelpb6Uvo3JutsAJXu3x2PZRElCo1glbG90EvAMsRGsYJCy6E0kPJcEf42AGEQGM8vGY2kjwENFVyC89af/rZmk4s6wM7HqTGX0q/4KGs3/KwqkR+isK07H48otTuaHIPcohSCNW0twQ2T4Afegm7Qr4VnxqoF1wYT9zJ7JCZUq3/2AqzbI94y44PlZTe7NZngkEU5a3igs0o0H0oxcj4GOWBqturfYw0PGdJOd6D3lH4Q0Wosj0+/sDGk7su0Jr3x9TM/v/hbLa+riDLV0IqGJYRuoywVZVWP85IQTVDLgjo+7CXWUOKC4oMZ8PJVrVdRxy4N1tUcFBBVT1iRZqmh6nHKCJ8qIuU4JEq1EKp/qMGSwv2mOzg567LUoUvJ9eAjq1KV7glp6h223SNOmxZ9YTqzwVeT4ZxEOhWq+3bz3t06d/bFTchgZQMxfJmZW2AJBFhKMTN8LtFvnQNUntHx3XfMenfo+xS7mDk6Nyf8+II1vBOvAQ5d+l7ZVLltd9I3CzGqljWm/Uvf58MnIi7q2aR4gZx/u3jIRrphxutTTkxnKhcrFbIz+iORa211ME9ZP4458zUzflCRTBrpsbaJzNUwYARaBGYvaPND0pKLXCO1PiB1rzDSL7jC5jvxUkVVX969i9YDDEcW8d/SObLg/r77J5fyJ4gQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: lEbtphV76nmA3pGy+gS5Npf6cmrrTc3el7YcUdUFCdheJkPgZQXyJ9g2C3MkyGCYesYR5RNpHl9fbsug5FbXTa3jC8LLlw96FXMMQ8m2nmoXBoqNnW3eZJkMs7gFyFHOs/tLkWPItbVTqDb2zqtiu3e8z632G/gTxPGeOGSJQklexs8lRt5TKWok6zZQP3fj8PfACkb8UFCtKXbFTl1FoP0jACzFKqGokVKeClMn0ZEidtiAFhv6NoSW1/LhsvsCJ4bs+AYycLFeeWnZrFi+MxCoApYRW+2DYdl8yH3NuIHC55TjzyIzSoGamxYa1A06gOkswTiTWOiHcw+A4A9W1RiQDjhT7g5bEnCIxWQ9dDhWYPTRwiqEX1itvO6x4G/SFzsDiFKbIGIMYlvzfXYIgrPVqxKDHcOog+kGWbbIbYXpKwWSROgyJLM8b01ujEffF06GSF3zxKRzvvBMNvYZ5aD4Ph2WttvkNI6bIG8J9kZDom4O6Fn8AB7zCtqDaA96WR8rfxc5lCAdRbpViLHkL5aNYwmKPqN9hlSBXIItQJnZKG3Nv52lgy3EW3gQO+HQk0r9P2HbqetUoat5s+p0s3tXxnAxTNnqZnw3r3Vb5hPyf3qYNLE5qwaxuLo4ChH1ZNBPFYTHva8bryGbWQOdhpQkWzhPCUyYA/BUwMnd0u5oBc35//w1LLtu4eEXmTlLBsEG7dek1F8GgRbcnhh6sq8AIwP2VBxH9DGxnOKr3BKjLHrxKtsWkcxaYoQe/uf9FxUkxQUg/aZGKAOOCWGtdK4kmmAZzX+EnTuGkg1QLhqTssnChAfK3YH+oFDuL2kYyywz5AwYGjbxuONhfDVT5SVXjt2qQU5bAZFwp/onpnVy23nXKseIpmoVl5VB7a2Dhi2kzbfkAKBA/CACfWGKvxWHC7oFyLQixNP2n50MTC9RZ2T7LQVwFPAEKapjvORX74ACHnBOYkAEckmPnoKhJvjfBaG4gbi4NswTIUk2nlxClmpzbWqXF8Ji6sXh8YI+MSBe32hbjiyTUT5RZBq1oCOmYsBbXPHVGy5vFkx9rZD7ukUKpQrbSSE4PwWaybntKGYAgTRHyht3Bg79ybSMuNePmrpKua/diJZEP4SIdw1+GABcAal9sHT1k6ZCOf33oR0J+m41i/nrA/4LP+Y/+slXZfaltk1u2qAMLWP6svCBZcdpMi3YnBBOwoFaMDlit4/g/HR+mJMqTG2Xj7oLmlSvjNc871Lsy9TirUcuAhj2ulhdCoQz4Wkcu17P68o5TDT5Sipom824FX7TaDtziMySnNICZXEME5BNvTCgufzypeEfoKRl1wzSAY1/6gSwM4367U1nvwrAU2EekLVgXpaivpB95UKpEkjEt99mUcq2I4lpZv04sedmd92G5tN3f744bC9ScSe7gQ7PuamIPEQu3bH/tGzfkbo0eP9SVOmK1TksizkjB7U0y25REr8YsXMdKhbuLZFRdVqJmfMQcWP57EDXfzoYtY8yN6Mn0Qp25EfOMjMrSDROK2OhA9keztCei1KsNqYwxBmClvbKqnUsmcD/yEZrLGBBlgGmmG+4U4N5+QIsCFg4N+4Nr/D1zEXb3Q9ZnhRW2R7N0Ae4WA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a67d0379-7461-40d5-3464-08dac35f5098 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:36.8745 (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: nWMMbTZeE6SQ+2RxqXe57JPep02k9bC+h4maulMyCp+yF9ycGbwgEbE/m/49u8ZuzhZgYdMd0lRTgVk9qc2uV7Zm2m6blAG8SOnCF2wcXm0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: 08qw6tg9i7N52btnI_wwfMZcCnAB2xNk X-Proofpoint-GUID: 08qw6tg9i7N52btnI_wwfMZcCnAB2xNk Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Return the directory offset information when removing an entry to the directory. This offset will be used as the parent pointer offset in xfs_remove. Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong Reviewed-by: Catherine Hoang --- libxfs/xfs_dir2.c | 6 +++++- libxfs/xfs_dir2.h | 3 ++- libxfs/xfs_dir2_block.c | 4 ++-- libxfs/xfs_dir2_leaf.c | 5 +++-- libxfs/xfs_dir2_node.c | 5 +++-- libxfs/xfs_dir2_sf.c | 2 ++ 6 files changed, 17 insertions(+), 8 deletions(-) diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c index 93347cf24660..01cc157e33b7 100644 --- a/libxfs/xfs_dir2.c +++ b/libxfs/xfs_dir2.c @@ -435,7 +435,8 @@ xfs_dir_removename( struct xfs_inode *dp, struct xfs_name *name, xfs_ino_t ino, - xfs_extlen_t total) /* bmap's total block count */ + xfs_extlen_t total, /* bmap's total block count */ + xfs_dir2_dataptr_t *offset) /* OUT: offset in directory */ { struct xfs_da_args *args; int rval; @@ -480,6 +481,9 @@ xfs_dir_removename( else rval = xfs_dir2_node_removename(args); out_free: + if (offset) + *offset = args->offset; + kmem_free(args); return rval; } diff --git a/libxfs/xfs_dir2.h b/libxfs/xfs_dir2.h index 4d1c2570b833..c581d3b19bc6 100644 --- a/libxfs/xfs_dir2.h +++ b/libxfs/xfs_dir2.h @@ -46,7 +46,8 @@ extern int xfs_dir_lookup(struct xfs_trans *tp, struct xfs_inode *dp, struct xfs_name *ci_name); extern int xfs_dir_removename(struct xfs_trans *tp, struct xfs_inode *dp, struct xfs_name *name, xfs_ino_t ino, - xfs_extlen_t tot); + xfs_extlen_t tot, + xfs_dir2_dataptr_t *offset); extern int xfs_dir_replace(struct xfs_trans *tp, struct xfs_inode *dp, const struct xfs_name *name, xfs_ino_t inum, xfs_extlen_t tot); diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c index fb5b41792498..43b9c18ff6be 100644 --- a/libxfs/xfs_dir2_block.c +++ b/libxfs/xfs_dir2_block.c @@ -807,9 +807,9 @@ xfs_dir2_block_removename( /* * Point to the data entry using the leaf entry. */ + args->offset = be32_to_cpu(blp[ent].address); dep = (xfs_dir2_data_entry_t *)((char *)hdr + - xfs_dir2_dataptr_to_off(args->geo, - be32_to_cpu(blp[ent].address))); + xfs_dir2_dataptr_to_off(args->geo, args->offset)); /* * Mark the data entry's space free. */ diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c index fd9c48d0879e..3a7e09756dde 100644 --- a/libxfs/xfs_dir2_leaf.c +++ b/libxfs/xfs_dir2_leaf.c @@ -1379,9 +1379,10 @@ xfs_dir2_leaf_removename( * Point to the leaf entry, use that to point to the data entry. */ lep = &leafhdr.ents[index]; - db = xfs_dir2_dataptr_to_db(geo, be32_to_cpu(lep->address)); + args->offset = be32_to_cpu(lep->address); + db = xfs_dir2_dataptr_to_db(args->geo, args->offset); dep = (xfs_dir2_data_entry_t *)((char *)hdr + - xfs_dir2_dataptr_to_off(geo, be32_to_cpu(lep->address))); + xfs_dir2_dataptr_to_off(args->geo, args->offset)); needscan = needlog = 0; oldbest = be16_to_cpu(bf[0].length); ltp = xfs_dir2_leaf_tail_p(geo, leaf); diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c index 45fb218f0571..ac6a70896adb 100644 --- a/libxfs/xfs_dir2_node.c +++ b/libxfs/xfs_dir2_node.c @@ -1293,9 +1293,10 @@ xfs_dir2_leafn_remove( /* * Extract the data block and offset from the entry. */ - db = xfs_dir2_dataptr_to_db(geo, be32_to_cpu(lep->address)); + args->offset = be32_to_cpu(lep->address); + db = xfs_dir2_dataptr_to_db(args->geo, args->offset); ASSERT(dblk->blkno == db); - off = xfs_dir2_dataptr_to_off(geo, be32_to_cpu(lep->address)); + off = xfs_dir2_dataptr_to_off(args->geo, args->offset); ASSERT(dblk->index == off); /* diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c index 56ee4ff4ebe3..b2b37821492f 100644 --- a/libxfs/xfs_dir2_sf.c +++ b/libxfs/xfs_dir2_sf.c @@ -971,6 +971,8 @@ xfs_dir2_sf_removename( XFS_CMP_EXACT) { ASSERT(xfs_dir2_sf_get_ino(mp, sfp, sfep) == args->inumber); + args->offset = xfs_dir2_byte_to_dataptr( + xfs_dir2_sf_get_offset(sfep)); break; } } From patchwork Thu Nov 10 21:05:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039387 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 85CA5C433FE for ; Thu, 10 Nov 2022 21:31:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231626AbiKJVbq (ORCPT ); Thu, 10 Nov 2022 16:31:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229923AbiKJVbp (ORCPT ); Thu, 10 Nov 2022 16:31:45 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2A991D6 for ; Thu, 10 Nov 2022 13:31:44 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AALLIKg017428 for ; Thu, 10 Nov 2022 21:31:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=z5L/Y9PZaoFrNemQYBeLF1b/E6XB+H0NtkuKE7sugzc=; b=oErFXtNVYH7piAIs53s8iCFTzdaBoVNlZgJZjYqt0itAU/Tk3+J2KWB6tsmlg96nrtBU c9rX9FQE33Gz6b0cG1t8BjiKcRvRGQjfcfxW5bKD7gU7oVBbgK64v90YqKFrRhVSgjaN KX1o+4XvcVs30rTzUHhNvX+dsPA6QIgBXJcko6Q8+5EZ3pnXU54qolm8jBLQ1DDUUq9Z CNR6jDG+wUNjzdbxtNDDtYEda0dgf2K281VpRyi4FSpCftzg1oV90nDBfRSeJyGlZCtv zCP5UgPOPiUoZTFYEZBNHLzaX6aoZ/hMR2KPR1NerxU56MRpu66vgFlY2XtLyhBBsNPd tA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r3mb-64 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:31:43 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKjfPj009709 for ; Thu, 10 Nov 2022 21:05:40 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hauy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i0vm0zqHlRQWWUehw2zSMXlLxPKSUY4QZ3ydmqYBwZo3A0M/2FSVtuKukDdHJ+MRs+E1/F4kUAHkNfkQMwwE1nrW3MoJGQPZg51NK3pUL+Vnh6jMBuF5BtgVQaZdw758Mu/HPYKP3v6hkegedoJ5vWHUke7/DFXO5F2ARu2YJo5SZSwUuya6Nwn0TtiHHGbR8PlZClqVoE1v4q52ZhxDgnsykNT6ysJNg9R6+4S/ts0SKu7L1R1/TWNs8uFcdL/cJcKZVuC+PNF382tFDEj4TMveFkQ/9pAtLJq5h6uysHY2RdmKDhxDBeYOte3SUEleGTDA/C+29ZFUQAbw0i66Ig== 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=z5L/Y9PZaoFrNemQYBeLF1b/E6XB+H0NtkuKE7sugzc=; b=fep460OG0/QJn8j0P1v7AT1x8JePV1IVsw/OMu6rTW3GpP9W5N53hAmbsStLDpYvJbhVK7s4MdW/+V6sUYMTocMve+fmfj33D8bviesoXz5EO1ZweZ6S3Ay5um4gXIMIGl1dJkyo7yaSMN7o7jwwWOe8UfQ8g+kFNMaUiiYPcgSRQtGmfIUgsGkWwfd8/yPSJZ1IOsSvd1ZCC0Gogcw8/vuhiGkmiT3ohgucQSd+3KmgJVTO9fPstYUXXRNJV4HN8x1VtaFffPv9mfvjTAfRETeJyutgyDStPPmgMUSN0nM5HbZNSTObEhEGj3NPisarCS55UueXSdGk7AZwxLKgmA== 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=z5L/Y9PZaoFrNemQYBeLF1b/E6XB+H0NtkuKE7sugzc=; b=vEYUkWEQmIt/WVbzB7Yaptfz8soFs1V8ifcWvqUHCohuLXmsBGcbsYupddkD1N8Pas4vMJw/yZdylwxXt1Imzn8PhL8HcMC2WX9bO9BRzu8rt0lFSZUYYcuK3BWrNPUuv5oEKCjGGPxm9W96xxx3/c1ZJZBDc/Q/YxIoWDU0s6w= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:38 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:38 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 06/25] xfsprogs: get directory offset when replacing a directory name Date: Thu, 10 Nov 2022 14:05:08 -0700 Message-Id: <20221110210527.56628-7-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR21CA0012.namprd21.prod.outlook.com (2603:10b6:a03:114::22) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 1eccf1d9-1382-4a77-ab48-08dac35f5192 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SFQwO0DjO1hJiaQCd40k9q8YivaonPmqcMZjfQmrkeHh4hDelmPtolMZKaNlLZGIO+2ZRb8dWMVTLsXq2lsY126jOI0MctybkQU01/TcMSQ4R/7Migj8QL8ZbvDrk5UnMZdBemYLYkjzt4EDqNtIZyn07WShKrtylv5OkzIHCccM0EowOcn/DnbIC7n3DT4eBUvMWWPQMtfg3xu33VF3qa8Vn9SX3B9/EYMJmOqUW9QXjPG60WgbuIE0G6XT0a+BOv+j+arTzkRhrEqHQEBS0/6wcr9n0PSYl2Cc0KCyHtz+Zv+c94KwpiQhjoFAnLmycLhuToqhmhORY0dekz9oHX1d/B1CDv/NPRX5AneAzRN6pkYNZeQr2saYXJpOc0gB5sa8vw8jpIiX1STZm0p2Mv/zk7nNw1/hWL1KWcs0kBL3ZQMbu4rRPeLY/qq36QFsjDXJDBUWvfCGInjxq4X/prIeTfAmxOOkDsR1Co0PPKCbsi3+nMVGFVf4/uUixcn0Q8wLttSjE9oGYmzxaRKQ7/L38mgFW5BV7scZT4rs6YRzhfnzJRtLJaQOEVRg0WaR9GoRSfP614qb7/5zmqo1SsI3ZYc7IyqFNkTfRHIOcaiyF20qk2JyaJXPyqkGxKCnKEhG1hKSv2oRFIn9KWe3vy1OBshtl6sMQfL30sB4E2XUgqyyez44Kq0qkWc5HylhtpyU8T51JBys4fPUBer0uQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: OV1oHgMOC47OR22uUYV1yur+9K/r5JMFeyHQNeP7ask57MMTkihpV3RJFS2uX1PdhSHGoWJfCrUsf6xb6kI2NXgtekx5FLEu2r1XWbZj58I3wIv8ciG+tje/ePnGj0mG5nEl8WlPJUAwukeuLY/X7uWHA8wDgG5c+VbIKQPaQCnRdbKT5EbQOhzw3HOBDIxXLBbDC2XeuQ0PyWLTaCgafWivwuZA7uz1b0I2/oGe25v9Tke1g9fJCWVwtWe31muizR2tHN7SXfczc+fTJ4u4ma9s7tV0/TR1hjl57Y+U4ntOm+nRvU6aTZ637pol7k5fmoprimStMSmQnL4F2WdGVdfq7EKio++QYjGEbdHEZSFQV4/czr47pkgUrlCD2Ke7Angx06jROho6tKBsp31kN+8v7aIFJH5iN4+T9ms4w1yYIKsIO4spun3BJQ85NbQNU1zrbmr6twgCNBjYixhM8wqP+6Ri51nR9Rx2O5Ay+YFNqTvf5KkFz9YmhgEAFcJKkkGgvPoBIFDNUI0hIAgvihtIFyo5Rs/m0idplrPz9VIlkbOOfFlANJBg7IgffVZ9SQbgyBcIlWSKSvzFKmiFOsR0Eer/jbwK9vioXgN69S2QDxkpn7Eh/H2bCGA9TvJw4wZfQZ6EpwogsrdZxTAEet9VXYDT9pQj0FKxjIIFTp/U6NqlVt+H/xj3qs2s8AaVEurJEbjodXTAHT0D8RGIEEGv07cmLSDor34y0LYsDcH2HCuIIC+2fQcmEXyyXzMEGah2TYZsfKAhG8RfJdLpuA+3AC+vQFFRco1tI8L7utku5zYVu6bfUfgIbVxAuK8jJ3d14LHZoXmLZcqwFs8YIvU4qCvqJrVWpfCfWOb0BhXlzdfDjADW+do6bkOtfk/kjoFMpcdnddB4PqT1Q5O9Pj94m/RoU1WbuY8uRrLGckQupGidBWUDRCVRFB6jSZVEoXelIVHJblzncl72iNa6gV+Sp+NQ/OqnChLacW4Dyj0ppd6MGl0wRUPaPS1VmaYT+6GWgFLYKwTYzbQj8FO2P8+wbZwO8jGYMNnlVDD6POHTgsDLNskRDnSRc6gRQoWZgXMYYK0sNx/N/tu0SZPTyX8dAbzZFM6e9P0vGzvV6lTQRdVcQFW1ejV3Td1Gy+hc/lYl1t95A6sw37p7fem53kNhBsB+hO/Ur57WpRoW4xYPSWHJVP1wau25qUFTtwuK7VDxrOtQfRIkZnn1Y1cDQSCIZ7Un3H3Xtqg47P+xo1JWIKNE1t6iVAazB/aJ1Mj//7YaC7FUSFTVKLUAii3p7AjOjSha2dfH2M72vt+Y/wq5x4yqSKch9EirctKbgWh4wBI016EVa4oayzObSHDkyyMB9V6Delx2UR+1NlYXQ1F/A5l3VpWwNB8T6zSbOzbclIZB+a8QouneKSgAi4inPShxLIhlE9yuUZntXPH6CnzSrKJofEArUmBmtORxK2YzztTZB95FAP1tJq+thFnsW9LAN5S1onJRdoOZFdcxrcpaxv4laHW0v81RQWXCJGtGAtSlaBQ41p78UXSPjvKh9SJlV8r5qiDvVq093K7FgtIC77oT4nrQBYe+F/gVt9zrh7x+BvOrtykLBLYtXvQNew== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1eccf1d9-1382-4a77-ab48-08dac35f5192 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:38.5316 (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: I9nmWx6GG+vODnDe3usjnloSOBLAl6eUiAZyEY3ZaIn0UVGDzzEzrce2qDcWDSE8YMVr9oz01T0cZQKgD8EoxZOLMkQw3xTmiMKPqwlrVJc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: nhiS4b8i4EqoSkoq3BTi2flkVs2ePnVG X-Proofpoint-GUID: nhiS4b8i4EqoSkoq3BTi2flkVs2ePnVG Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Collins Return the directory offset information when replacing an entry to the directory. This offset will be used as the parent pointer offset in xfs_rename. Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_dir2.c | 8 ++++++-- libxfs/xfs_dir2.h | 2 +- libxfs/xfs_dir2_block.c | 4 ++-- libxfs/xfs_dir2_leaf.c | 1 + libxfs/xfs_dir2_node.c | 1 + libxfs/xfs_dir2_sf.c | 2 ++ repair/phase6.c | 2 +- 7 files changed, 14 insertions(+), 6 deletions(-) diff --git a/libxfs/xfs_dir2.c b/libxfs/xfs_dir2.c index 01cc157e33b7..cba47701e3bd 100644 --- a/libxfs/xfs_dir2.c +++ b/libxfs/xfs_dir2.c @@ -481,7 +481,7 @@ xfs_dir_removename( else rval = xfs_dir2_node_removename(args); out_free: - if (offset) + if (!rval && offset) *offset = args->offset; kmem_free(args); @@ -497,7 +497,8 @@ xfs_dir_replace( struct xfs_inode *dp, const struct xfs_name *name, /* name of entry to replace */ xfs_ino_t inum, /* new inode number */ - xfs_extlen_t total) /* bmap's total block count */ + xfs_extlen_t total, /* bmap's total block count */ + xfs_dir2_dataptr_t *offset) /* OUT: offset in directory */ { struct xfs_da_args *args; int rval; @@ -545,6 +546,9 @@ xfs_dir_replace( else rval = xfs_dir2_node_replace(args); out_free: + if (offset) + *offset = args->offset; + kmem_free(args); return rval; } diff --git a/libxfs/xfs_dir2.h b/libxfs/xfs_dir2.h index c581d3b19bc6..fd943c0c00a0 100644 --- a/libxfs/xfs_dir2.h +++ b/libxfs/xfs_dir2.h @@ -50,7 +50,7 @@ extern int xfs_dir_removename(struct xfs_trans *tp, struct xfs_inode *dp, xfs_dir2_dataptr_t *offset); extern int xfs_dir_replace(struct xfs_trans *tp, struct xfs_inode *dp, const struct xfs_name *name, xfs_ino_t inum, - xfs_extlen_t tot); + xfs_extlen_t tot, xfs_dir2_dataptr_t *offset); extern int xfs_dir_canenter(struct xfs_trans *tp, struct xfs_inode *dp, struct xfs_name *name); diff --git a/libxfs/xfs_dir2_block.c b/libxfs/xfs_dir2_block.c index 43b9c18ff6be..c743fa67dbaa 100644 --- a/libxfs/xfs_dir2_block.c +++ b/libxfs/xfs_dir2_block.c @@ -882,9 +882,9 @@ xfs_dir2_block_replace( /* * Point to the data entry we need to change. */ + args->offset = be32_to_cpu(blp[ent].address); dep = (xfs_dir2_data_entry_t *)((char *)hdr + - xfs_dir2_dataptr_to_off(args->geo, - be32_to_cpu(blp[ent].address))); + xfs_dir2_dataptr_to_off(args->geo, args->offset)); ASSERT(be64_to_cpu(dep->inumber) != args->inumber); /* * Change the inode number to the new value. diff --git a/libxfs/xfs_dir2_leaf.c b/libxfs/xfs_dir2_leaf.c index 3a7e09756dde..136830ec4e3c 100644 --- a/libxfs/xfs_dir2_leaf.c +++ b/libxfs/xfs_dir2_leaf.c @@ -1516,6 +1516,7 @@ xfs_dir2_leaf_replace( /* * Point to the data entry. */ + args->offset = be32_to_cpu(lep->address); dep = (xfs_dir2_data_entry_t *) ((char *)dbp->b_addr + xfs_dir2_dataptr_to_off(args->geo, be32_to_cpu(lep->address))); diff --git a/libxfs/xfs_dir2_node.c b/libxfs/xfs_dir2_node.c index ac6a70896adb..621e8bf53ad8 100644 --- a/libxfs/xfs_dir2_node.c +++ b/libxfs/xfs_dir2_node.c @@ -2239,6 +2239,7 @@ xfs_dir2_node_replace( hdr = state->extrablk.bp->b_addr; ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) || hdr->magic == cpu_to_be32(XFS_DIR3_DATA_MAGIC)); + args->offset = be32_to_cpu(leafhdr.ents[blk->index].address); dep = (xfs_dir2_data_entry_t *) ((char *)hdr + xfs_dir2_dataptr_to_off(args->geo, diff --git a/libxfs/xfs_dir2_sf.c b/libxfs/xfs_dir2_sf.c index b2b37821492f..5858821c9311 100644 --- a/libxfs/xfs_dir2_sf.c +++ b/libxfs/xfs_dir2_sf.c @@ -1109,6 +1109,8 @@ xfs_dir2_sf_replace( xfs_dir2_sf_put_ino(mp, sfp, sfep, args->inumber); xfs_dir2_sf_put_ftype(mp, sfep, args->filetype); + args->offset = xfs_dir2_byte_to_dataptr( + xfs_dir2_sf_get_offset(sfep)); break; } } diff --git a/repair/phase6.c b/repair/phase6.c index f5f4fcea4bd6..93da70dd4f30 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -1122,7 +1122,7 @@ mv_orphanage( if (entry_ino_num != orphanage_ino) { err = -libxfs_dir_replace(tp, ino_p, &xfs_name_dotdot, orphanage_ino, - nres); + nres, NULL); if (err) do_error( _("name replace op failed (%d)\n"), err); From patchwork Thu Nov 10 21:05:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039355 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05D74C4332F for ; Thu, 10 Nov 2022 21:19:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231553AbiKJVTq (ORCPT ); Thu, 10 Nov 2022 16:19:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229962AbiKJVTo (ORCPT ); Thu, 10 Nov 2022 16:19:44 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35FC431ECC for ; Thu, 10 Nov 2022 13:19:44 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AALHxw5004036 for ; Thu, 10 Nov 2022 21:19:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=7NQ+nQvI6fMBSndorOhJwEiohmi4lRJ9962G6AKpj+o=; b=tlf/nyzN1DlVfuKd4nzMtKg6y2XdvSFtE3eyvS1G1gSnq+ZYpdUgO5sf/eu7eByPsS3P hFQBjf2caPjnDuNLS2AtqUKJtUtoI2piaBHFASfTc8IsyTa8aRmNTAQltFb9rS6uYBqG oJ8Ae53vMPSsNDm4/FdrgHKWo8fye7WkgCeLlwue7EoaWCcSObsf35RTQwSlHITMwuet IpJ6/7c9c1crLGKO4dMp4RPy7S/SGQaFwdnnu00vkLujvVlRSoyCNWiyuzsieuIUVMlg 6A7eFKeTB+rBu3aQcgPHl6tqhj8cvCsh8QrnVNRI6JH/nPKUwGYOBnJU+yJfwPvG3uzm 1w== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks935r0ea-9 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:19:43 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKjfPk009709 for ; Thu, 10 Nov 2022 21:05:40 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hauy-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:40 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HqQjgBM6qQIGVre/uJmTMsPs2kMOGVAqzvQ9P1s563Lw2hO06+rR+hYscc3P3luYMa1bTjyENN2R3+3Pm7c3M4FzeVNJzlbJqhbsuvoRNtoyYgaqBO9iyTxUHO5T3BJyaORk1jhuutWZK4E4O50qphcpQ4Xmx63Ylt830i9El43LaNGxor612JxnqJXXSWluF/2X92GIZYf9Zt4gc5tHqw106Ei8J+6tXHzKN2B1wPMhja8km2BEjmO3WVLQrrU2A6itt1s6Pxu++b7RiymPKcedsLzjPpJEGiabSOgdsR6uQGBBxxd4YYdAM6oRqMQrjDtgMwRn15nIdlhiBAnqUw== 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=7NQ+nQvI6fMBSndorOhJwEiohmi4lRJ9962G6AKpj+o=; b=DfJ0Uwha8Di4Lyce2UDj6w+AAQjPB/IZpk4C94HSAoO8c058uwmDNTLKGIM5lgmNeTKWDgmVHdI2MYyuCvHCTE7Kxq+QPm0ZQR8sa3dJkXNAtvq6vcOnjzVtiaMrBXhwD5rXJ7QMueq8fPrG2LrJdTANpLcpoRDoQ6rTscMhOGVvDGo6V15x1rUuMoQPLy7ncA0khCkYMsWuroORlnFePLL+EfaNEJIFAK6n8B6cfcslrQNMFOEqf7SZx4I3r+N8jv8abiiFhEgirPCGmdDWZqFdsGVgfKEpLoVblYU8QyCV8RiOexOI0Ut+Uor8LGbwUUBj23bARw+pkieGLhgQIg== 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=7NQ+nQvI6fMBSndorOhJwEiohmi4lRJ9962G6AKpj+o=; b=XxqYUj2qmskRXhwtjfS6VExzL+rHLb1KOKOZCRvDuR3fjCg/q7O2ZuNYOpc3HnCuOyLOZxokP19ajV4bCmo246539dSpNuNcibVvmMT5F4zWXijjG0zqeIgYDNyasQVbuYxd7/lC+GhDtuA8COdP3zeAdx3hIDSrFmBMu5r096U= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:39 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:39 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 07/25] xfsprogs: add parent pointer support to attribute code Date: Thu, 10 Nov 2022 14:05:09 -0700 Message-Id: <20221110210527.56628-8-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY3PR10CA0005.namprd10.prod.outlook.com (2603:10b6:a03:255::10) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 0a0efb7b-78d6-49c7-8a90-08dac35f521a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: iSnkaRTSPsJjVol9eJbh0knWuh/z2Azns+P7j9/VpcMGSnaoAF+HNHm21C000XD43/0tfDVoLROWvcHPhYFAnqTRitTDeFwuoer8ztswQnfLqGz3As2kubyxu6nccEoslpz6TpEjcEz2aqO9X4swWHhVue4CR78U2pd1ROUVshkPqqxv9tqW2I0pr4GBoeQuI6hmcBRsdSw1Jpu6Nso1lT8t4klIrvIqGCjjacSGHz0ngnHngNP9BaxVD+YkPdegx3E+dNVb96dA7Ld0iScsw1k7iz8MxC1Q3dJUcIeppUnza5F6J4ovJK2IbfAiNiFYccRa/TU3HNMZ6eF7XzE+Ul9NRBaGiOiYK4ESNWvOTORK7o9K0Bi1d6TWwup48FCw31rVwiU3FM+a5n2uSutTDuB+/7mKEB8i+EhUC3X+52P4wFBOQbAuqEwDdOvgCbIX+C50MYiXPxHD1DieQ/LslMYfjoTQ+pYk5i94yyLDjQwKDKnPX3Pz6a7ap/8u9qqwwi+VsQ2h1t/g1Vkr5nXUoKRd1YEgb6KNiHhWSrcYNqC8HW0VYfAPHzCHeKTW+zOJ6z6blmtFJUDSBpvc0SSvutbMMrI5JfhRwfU5n8gRosqau8Spgvxc5fJPleBWgSoTixIAHrrrFcfmrURCQGOk+95fvvu5dw1PEZ/USR2vOuQ8g4y31cVQJtfcfFz0sTFSrC3cElt1aKfWovY0nT6Skw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Oe1RTrT9oEq3nGEvlgGTwGxJA1Cs0O4JbTWbI9VrmO2Q0TXT5pAwxjZXkI78TQDOIvKKXP5/rWvlssbWn3dJmrA4sSQ0iNima35HSNJJEyv2oETcktdpJrmPM5SFDA5fEP5OT1emK/VMc9DgLRVjTMmGc5BTC+6L1FX3/iC4v+UUL3+LMljQy9Q8VSKv4R5vJ3jDeSBgk67zqnp53hVbzVw9hGEOQnHd0pI1fDatP/+AJxh0Nx9lhFFWYF7s5vjkhc0pLhttUrwwLhvrrT+9+ACJojy67iFjse9xtkj++/s++54CqiIpJRV0iwbeRwllqrsX7OpItLzhkGN8cnFgI21XqlIxpySKS9bqjLjGsz9gbtG5PdErMO5/4m4P3MUJB8XQiM7lYBpvxDY3FVH2IuRZ6NCbenXGk4PXPN+WCOBl8QtJg1BCxE5RQLZaxPrPJC93KenAdQMOR1WsJPVI2WkVRsLTC4GaqYzM91cwwgMFT+ULXHsTHlY5yxqklyZKcJRJnqjWsjpAeufhZRTg2vs20ZiwldcpQIldoAKlFS7HEtCZeZhJ268Ipa3FwEL2RceB2EazgG0RPIdsbyy8OcyvX2ms3lda6Lv8gWcnapn4aizt2OOgC7to/Bjmif8mY0rtW6YAbLkG1/BKb2THi4ThBAC6AA8gdMzflZFzhL1eA75AeJNXAFo+/YdA/IanR5/YUEoWjyL8fuAd4KZfFled8zfenhWCmoRuFd6TK1guKwckxkb4WWLXwmKxFGRYjPOLIQY/QeT81oEv0lK3fKRwNm2I+2MdEeMpgtSI98gtdgDFU6fgtu/eFVjvDSN9qdUodP5jXZTZMMwvyFT/Ag4gH+VAP6oLpqCj7wExhJ4GeVjhuq4Er3IN8EUe1BkwUj0ehpfoG+E58w5W6Zr/hJSpiwI4qH4FjyAv7fbR7BpePc00ALgJkdaTYbkob/kk5qMOlr3kZJt/uPZLJ2CIR9RKlDznZ58AcOJza8JfHViq2ZXGVdWtQB8kj4VQYJfhJhmJiGTsF3JtJacAWFinutP74wFonhGqVksYoRv/9ZPyZl6/K99SdGWB2xgBxq7CEXp39A3Tc5Rwb2WvoMKI7l7e1VAVbY1Jea3lE+rzH8Iee0qCDhwXmosXkY7y6aHNyxWhGTxQo4up7Afp3hn7ALPMh07rNlhY/VoQABEvQUsfsuD+OFs3F8zCCLNGg0E09iQsaaeCfsVsZkR56syqXLR9m6Semkhnh1c0gSnH1qry4WNHQHmmw337ldmoBQn8+H7CCwXHNd+NkP2YdFLNBlnqGAC+JdqhbGA40r2+GQRkAuWxAJk6oVKUkvRu1y57aaugIUzy+5BvQYTcoIB/C6+woOZG5CqYfQqzcfBseWrzG+8PXulVbrRQQIKOhqmnBO0nUxwm98D7VlQ3wBiA5VHlMxI9HTlVwSbFpyUmDt0hyLfKgNqOtZxLzczQlQh8CkpNkhVIAFNeL903mR+LK8Duiqc8mIJ5ngLjKNmzRQyKCQebYydzhWli5qgnipwAkhkalueaT2RqWoabgiWk27jdFCXo6vB18H5IZaz+tu5tbq1HQSCSxXneCzqaqgpDPXctTatgozzRbv4+ux267g== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a0efb7b-78d6-49c7-8a90-08dac35f521a X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:39.4220 (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: v8Rrf52YgD9KJV8sJcVq/MNx4BGzFuCDGSuSZHyDFWdowwG6uf8ILUNE/s8+mvsUEBZAcKgTFc0G9NsIEaF4xp02Nl1t7RUeYZ1ACrGM5ZU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: WaUtaEwohGK57t8IHYPeReZord_gnrZo X-Proofpoint-ORIG-GUID: WaUtaEwohGK57t8IHYPeReZord_gnrZo Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Add the new parent attribute type. XFS_ATTR_PARENT is used only for parent pointer entries; it uses reserved blocks like XFS_ATTR_ROOT. Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_attr.c | 4 +++- libxfs/xfs_da_format.h | 5 ++++- libxfs/xfs_log_format.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 2f6192861923..04f8e349bcbc 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -974,11 +974,13 @@ xfs_attr_set( struct xfs_inode *dp = args->dp; struct xfs_mount *mp = dp->i_mount; struct xfs_trans_res tres; - bool rsvd = (args->attr_filter & XFS_ATTR_ROOT); + bool rsvd; int error, local; int rmt_blks = 0; unsigned int total; + rsvd = (args->attr_filter & (XFS_ATTR_ROOT | XFS_ATTR_PARENT)) != 0; + if (xfs_is_shutdown(dp->i_mount)) return -EIO; diff --git a/libxfs/xfs_da_format.h b/libxfs/xfs_da_format.h index 25e2841084e1..0201d64b1f82 100644 --- a/libxfs/xfs_da_format.h +++ b/libxfs/xfs_da_format.h @@ -688,12 +688,15 @@ struct xfs_attr3_leafblock { #define XFS_ATTR_LOCAL_BIT 0 /* attr is stored locally */ #define XFS_ATTR_ROOT_BIT 1 /* limit access to trusted attrs */ #define XFS_ATTR_SECURE_BIT 2 /* limit access to secure attrs */ +#define XFS_ATTR_PARENT_BIT 3 /* parent pointer attrs */ #define XFS_ATTR_INCOMPLETE_BIT 7 /* attr in middle of create/delete */ #define XFS_ATTR_LOCAL (1u << XFS_ATTR_LOCAL_BIT) #define XFS_ATTR_ROOT (1u << XFS_ATTR_ROOT_BIT) #define XFS_ATTR_SECURE (1u << XFS_ATTR_SECURE_BIT) +#define XFS_ATTR_PARENT (1u << XFS_ATTR_PARENT_BIT) #define XFS_ATTR_INCOMPLETE (1u << XFS_ATTR_INCOMPLETE_BIT) -#define XFS_ATTR_NSP_ONDISK_MASK (XFS_ATTR_ROOT | XFS_ATTR_SECURE) +#define XFS_ATTR_NSP_ONDISK_MASK \ + (XFS_ATTR_ROOT | XFS_ATTR_SECURE | XFS_ATTR_PARENT) /* * Alignment for namelist and valuelist entries (since they are mixed diff --git a/libxfs/xfs_log_format.h b/libxfs/xfs_log_format.h index 62f40e6353c2..57814057934d 100644 --- a/libxfs/xfs_log_format.h +++ b/libxfs/xfs_log_format.h @@ -919,6 +919,7 @@ struct xfs_icreate_log { */ #define XFS_ATTRI_FILTER_MASK (XFS_ATTR_ROOT | \ XFS_ATTR_SECURE | \ + XFS_ATTR_PARENT | \ XFS_ATTR_INCOMPLETE) /* From patchwork Thu Nov 10 21:05:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039335 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6B47C4332F for ; Thu, 10 Nov 2022 21:06:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231840AbiKJVGO (ORCPT ); Thu, 10 Nov 2022 16:06:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231737AbiKJVGN (ORCPT ); Thu, 10 Nov 2022 16:06:13 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 79224C14 for ; Thu, 10 Nov 2022 13:06:12 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0bXO006962 for ; Thu, 10 Nov 2022 21:06:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=j0I83/LiO3C0WET0DDm0+GXdAajJb4OgV47KJ3K40HQ=; b=bUNk/QTeJhxH5PTlj21pq9cZgtaym0V/K2XQXTQEzJXEZ5myqdoTvFQWTfa9DTnKD94Z fzFGgAgJ6CGy4/MRpcf/3vHqx2akadLuTwTMxSy/QBhSqZF+J5SJ/+7tnUSLrqwzUt3B AtxUBJvgUCTg609vAKKbuLe+fWmO334RHGXoS1JBJ4wJbVl3TE9jpn3XzoE9p1xmtRuj KiQ4R+FS/CTEkS7X9HtYMLpQcL7YJ5lbIORZOgVqj6msAZ9N1txon8E9BDmuqAM5TAdy Kts/b6c8Ai3U/Izke4yLl6xmLKcogIOAetr3jYuLpY7NXHpjJSb5PtIrUIzOEAtgJgMN fg== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r13u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:04 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKYbkD014968 for ; Thu, 10 Nov 2022 21:05:42 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2176.outbound.protection.outlook.com [104.47.59.176]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpctfre42-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lPCo5NgzBrx+7nbQKWzeq4VJlHeWz2D3u9joQZIspGSa62bpuHdIlyeZhbazx+JJB+CPjuudyOVNdy4KazjsTyq6Q17JGN9N6R+SP6rYJKDpagQFuvwrJ8bkkjqBRznpGLoTPpuIJhkBLBqlRybEu2RYRjbPAy0SkEsfpCQdVuA79Dm9Y6J4qz1rKHzu8UhIN2JNO/Wh1wmwouQPADtfBeDCoopt88krOwYxWW6le8Vrnv72QQSDcULyI5gFAvNB4giKLOV9zgryvrasRxCxVrxSUHrsp7VUtEPxvaI/sXmJEDJUfG8nGT6g6Eg0SckyFrDAvHBL14tANjuu3+pGLg== 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=j0I83/LiO3C0WET0DDm0+GXdAajJb4OgV47KJ3K40HQ=; b=O2fDf5PrE7iv9wA+CcqC1q8WbbvmAbcNGeW960DxgT3L+2uE9Xi+yIjKyQgHHH879K8hJWoULiu3BxD3zYu9tX2Zh45u96i9o1lUcPctJFlDBPOrLgwvau2HcKfTzZFBcczewLog5HnyyOT/a/GhQDNQbJnIAh2SzJfgAdFJSV6X/mRPKdrIKW9HA1Zbw5xhQ8L4fP8pv85pQWL/Rs1y6figWcUeQpEiHsjZdR1Q8+H3FyPKPaI9YxQ9VO9Hwvo8HCxZNIT9izORS3mDZea5wjiBsF3jrobBQ+iP9br7mJ1InTxXwRAGmGQSvop7KNlJj5t8rUI6D6vtUn1jdzi99g== 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=j0I83/LiO3C0WET0DDm0+GXdAajJb4OgV47KJ3K40HQ=; b=oDS/bbiltRwn20YlQy1aTWPgrSQn6xYGolhI46nFgvIPThIFM8VUPaTM3adGyhapcgBGW6A0rYy3bqMxi1f5T2b0FhhFhSEIxCup8gf/t1buyscOTn60FAZWgJHqILjzQQsTv6q8u+9zVv40+q1hZf0N9oPqN9qzY5qh41ByK6g= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:40 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:40 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 08/25] xfsprogs: define parent pointer xattr format Date: Thu, 10 Nov 2022 14:05:10 -0700 Message-Id: <20221110210527.56628-9-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR02CA0042.namprd02.prod.outlook.com (2603:10b6:a03:54::19) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 9257eba1-ce39-46ea-53d8-08dac35f52ec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a4mxmVIihBRxUV4Z8sv/azXatlm7PPwIPAYWLuNInI9wnxmDQosYLbstI934+sYG8LD7LsVvhTwyEeHuHThton1xiSSck+NgkBFHYweOOFNK40zArbW/LjSOdR/jRF4wOomxG9XUdvHVvca2sX5KNqi3Bz29XMnu9mTe5K16d8spJZsjE+8nmmArZ3QmzCXR6VxAoqAZiRdVaL/M3ojsCQxWsCe9WXWbjhNc53csFoXKZwJRwnw7FG/3ljLpaMvNCEEMG/snQy0yldNkr3+4fGcKnyRrAoGi2kTiMp3XrJlZsFyGZTF5oy4AkSO+pBhH17tzfCw9vc2SNUHSsX33GBbyonlHcoLP+Wx2Jz+UAzm/Kj3D3001ZUmHQWbokt8XQI62z5rzoYQV1ZkKf7JxhjA85e+WiLraHnji3eydT9Q4jFQLZZDY0DuxQ5x5mPsMjapL4vN6N8zCtlfTRkS4caVxbJGgsd1uIWwD6amyfN5Hn5pKOJDjaLN/XxgpM24//G3q66xaskUJo0XNYds/xSQ45EHDjFEGPF7w6j8M5EOTtUb5fxKngT3xrOS8hOmeQMMI0T0TEC2EwNc6O6c39IXOeBcibYIRaGT5mLO0VAHCox2Ui2x4yieRhhsAdxsCwheMXH9tK9tXil6rBr1AU48HGr/tSI2BpDpJewFxHWuYahGWPBY9Jsn744M2TSeCCIPgVyz2/Uci1yLDsIoKCw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Z6DrvBQchi+MbuW5DFXhM5RQ/u7Zk1vGCJlMguqg5zTa5yWF36gxcKmq/0hEs9WWkJQB2q/4VCyzzja2O2Ho0E8uxKIPaElvK4M1Q6ai8sly5nslGxyLLLRbMUSeusYjRZ0jJHhrnK7u6QZq8hv+qrcHEKLTn4Tmlg71XlpN7l6T00bylGjN2L9iLx6Du1qL/t516M3C9IUp3K1qOxnbJ5gy4X/oPb4jbX5TFfnEman5BLSVMQfEXc++nY7OFX3vI5GB6QJFkQmeKWUxbPjnGKev5BNl2GVLL58oDCwBqr0+nx2FzVv2a8KP/FilOM9K4EL5TKOQruTJI9b79ok/5pmY2xZJip2i+cVosZKTcjC9DF6pmOhtaIHu7mmHor0SVPHlf8iwENaGE2IX/dTilUGDKMhH96naF9z4By6T6R27+LTKcC3bT8LQOCotQOAug9w/cwoyiCP0LFDt84e29b8htkJ5S8zIK1r/dfPhwboo3Bcq0NKu6mpOWG/RI/j20ZCiDsV0ugSdM5LZjlHoNNhUavZIbD3L9UGupmik20WUWWbG6f0U/hvlSamtGmTOTMN1/zWPEIS7TesvoJ1TeUdlGmDCLclPupVzuUBCuGgXEA+Ec91tBSzv8SgbTgdZK6hI4yvYRXkIQm4rxMVBEFgcpjYd2BN17YO54Gs0zlajYR2+/SJhu1uPCFg/LMwx+LLhKV5oEu9IPAfp0NzrzKl+nMMzPeEeYqdR7Vivv+jItty380lPRafpQXjgU8SBCu8N3YhLMFJZZ5fGvkcBCCB9vkqLJIvUuZ+Ga6XADHUnNktUeWEBCK442FVeFSRfRvsYAsXyQp1+P/T7c3tCtNEZkGqMJEOFUcmLOi7c5BuzAqgJcJwuP/kWNvFd1KskoqXVxfIaiYCECu5D/dK8yd4XxJEfaMUry6ndc2/NkOzjxFI/7TzX1UKl1CvmOxNElxeE9s+mr6Xda8PA4+ZMlSMTiJdcIiqTxPexk0p+u1CdPS+Tnogx6JJxTxi/6S2ZgTyzdfes+PbNUPTexjTnxggRGUv56b068wjipiMcAMAlfh7nJVHQ5axQUsEuhUJbsw/HD4gfSfZAgv3HRfjCWfFNXpenYVeQEDK3yDEcKWzmbfXfJdBPFPxNlC4179GDN3ani6e7sTQNzrHkkBHB8VPvSGnUDPPsR8ErKl4zrEFt1ucnpnn36uHkqb9bdBlQHqD1zNXA9LMLhGxoM90eokCJ4UCZt4d3fgwRAGjJn0stIk629+MaZpfaQdjTKWAQCfJ6v7z20jA1xrKkyXAGrV0WSqffZyv6zq5I+sxKL2svHoo+ei86tsWBn39KdoZSDJhoYA6lBWVW9CJxYhp5lYRT/qojXGU1PTW8oKQokpcNiAbYI/uXDVOh0ch2GMOhZFG5bJ33LrHaxsHYgVrjPy3LsIQmROqxtL5BKtJaODCC5fcllImETk/JWnGRxSeoizxUrEkwdOSvCfq1HC6Ke1somogQq595l5drORx7Rs7UuRXnzKxATMHHVec5V5p3dvK0BW5X0R/jhX6cDMC0EGmew8HcLwF7nG2fvag3A59Qxlipf4fBz1jMCyIIUiCvw4igDOfc62YSTDjqY3TJow== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9257eba1-ce39-46ea-53d8-08dac35f52ec X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:40.8281 (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: /xn67VHE8u1ae9hz3FDoGKHoVDtfjoeJLbZ+MEktu4e803hKVnMRtbE+/cxhWJJ8X+8Gt6/8sfmlsHWlDSQygYAph5aam9Is9ipThosgwEk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: sAcj6AxHRLr2oEZF365wV5R5MDJBAf7E X-Proofpoint-GUID: sAcj6AxHRLr2oEZF365wV5R5MDJBAf7E Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 059f7b9c5aedf18990aaaee05ff9938b8d87a5ef We need to define the parent pointer attribute format before we start adding support for it into all the code that needs to use it. The EA format we will use encodes the following information: name={parent inode #, parent inode generation, dirent offset} value={dirent filename} The inode/gen gives all the information we need to reliably identify the parent without requiring child->parent lock ordering, and allows userspace to do pathname component level reconstruction without the kernel ever needing to verify the parent itself as part of ioctl calls. By using the dirent offset in the EA name, we have a method of knowing the exact parent pointer EA we need to modify/remove in rename/unlink without an unbound EA name search. By keeping the dirent name in the value, we have enough information to be able to validate and reconstruct damaged directory trees. While the diroffset of a filename alone is not unique enough to identify the child, the {diroffset,filename,child_inode} tuple is sufficient. That is, if the diroffset gets reused and points to a different filename, we can detect that from the contents of EA. If a link of the same name is created, then we can check whether it points at the same inode as the parent EA we current have. Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_da_format.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libxfs/xfs_da_format.h b/libxfs/xfs_da_format.h index 0201d64b1f82..fbebb55b1621 100644 --- a/libxfs/xfs_da_format.h +++ b/libxfs/xfs_da_format.h @@ -805,4 +805,29 @@ static inline unsigned int xfs_dir2_dirblock_bytes(struct xfs_sb *sbp) xfs_failaddr_t xfs_da3_blkinfo_verify(struct xfs_buf *bp, struct xfs_da3_blkinfo *hdr3); +/* + * Parent pointer attribute format definition + * + * EA name encodes the parent inode number, generation and the offset of + * the dirent that points to the child inode. The EA value contains the + * same name as the dirent in the parent directory. + */ +struct xfs_parent_name_rec { + __be64 p_ino; + __be32 p_gen; + __be32 p_diroffset; +}; + +/* + * incore version of the above, also contains name pointers so callers + * can pass/obtain all the parent pointer information in a single structure + */ +struct xfs_parent_name_irec { + xfs_ino_t p_ino; + uint32_t p_gen; + xfs_dir2_dataptr_t p_diroffset; + const char *p_name; + uint8_t p_namelen; +}; + #endif /* __XFS_DA_FORMAT_H__ */ From patchwork Thu Nov 10 21:05:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039325 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53F3AC4332F for ; Thu, 10 Nov 2022 21:05:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231368AbiKJVFv (ORCPT ); Thu, 10 Nov 2022 16:05:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230435AbiKJVFu (ORCPT ); Thu, 10 Nov 2022 16:05:50 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 39103DD9 for ; Thu, 10 Nov 2022 13:05:49 -0800 (PST) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL32JP013905 for ; Thu, 10 Nov 2022 21:05:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=dPEzCE01wkNI6LhgGC0QCc4fud3untwFl0IL/SP5Xas=; b=OP92+MVxrDb4x0pC/dxu8UFPdSSmv1hKbkGhTVWqosfceNFWhAVvsDvYelmeJyP/SKzW ox+vU3dqEJvaiAZ+cHQSpVaykR9ia9bo6DanoUSc285o6NLha5Ge03qf7ljSnOd3OSRw 3NLuHcfzF5KEzmPGSfHdzjGqeWyRtmk6kHie6nkLKWfvM3fZ16/tDEt3HTJ+JpqFxi/K XhYN6/+dg963yMjphYoYq70KvXEQmTSFBbTYW1pHTp+Kd8/GS6c0MppD/ENC/ImgYX1Z cSuQ2D+WqLLdOPtfp2JN1C162svKn2YWK5jP9jspLrf4VzY498ZPd4tyg0GJDueW42XG WQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vbg083-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:48 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKeTiW038169 for ; Thu, 10 Nov 2022 21:05:47 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fjb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HKeWFNGMq9+UGvUg4EyrSkcP/AuAwKLLV4ZM4Y7Zna7zahtshUOaqkohpnOd4d9sBaivCnRrX0KPHWSuffar5QzVcsLBGLUPDagkXfOMnkxv++fSflUbMwTrejoL6ijM5+b1vAG8E67t4aE2Y3HTKXSNvbjCAvb5h937fzANOSHgWKpfVbA6bMCR88vghX3V2YLvPOvnux3idL+DBUUTUIuRhAMmKb1NZ///R92xdKPrzo2v7ShRKtiCiNBH4FPHOBgxcwjJkjXqr2vUD9nUlnjKQXrHNCRkdnuh+vVij0836mXrA7u5lTtwOGRl+CHdzyqqS6C+T8n++Qh15TKchg== 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=dPEzCE01wkNI6LhgGC0QCc4fud3untwFl0IL/SP5Xas=; b=mTy0mcn9tSQ5TcGBL1fekxWjttPowPUZCtDpd56YK87XVs0NWFG4P6037MaaSNSaO4wzmJKgDBQC9YiTT4tP60N9X4Sw9gK+Kc1CmTtBZTrh9TAJzIzRvrzKpidL6f+w2PEdfRRAz/uvCePl/aet2/H1eM+M3QFj2D7yKgrpFDkVJSX1RvwZH3Hqb8FB+8YdjlgQGSB5qlgtM7sGnadMxyJJJ2Z5EyjYRlHz7YJ/IIWSTDCnlUOMZU9S1UEya0+HVvUVgehVhDNyfeptbb+giPgB1Xpza22EjKJ3leyaMXiXSJ+dsCIYUkfLFUkcCjjNnVIFM1yDw0VEFD80aiwVcg== 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=dPEzCE01wkNI6LhgGC0QCc4fud3untwFl0IL/SP5Xas=; b=tVK5oU2I0C5ILzcqG+EOvImJjrHVO1X/NByNhEBwRS/9X+LEoXN3IjKUhJadWzV7+Tsf2fdLl3ZOwUY6yhf4m+fx5M+MocFUk+y6w4YWMrAX8ebn4/C9KF2VkYaQfictUgPdQsD7gW9cAJ6Uw5YO/9fLoDHZloesD0Ba65cqm6U= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:42 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:42 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 09/25] xfsprogs: Add xfs_verify_pptr Date: Thu, 10 Nov 2022 14:05:11 -0700 Message-Id: <20221110210527.56628-10-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY3PR10CA0014.namprd10.prod.outlook.com (2603:10b6:a03:255::19) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: de970e43-48e8-4590-e72f-08dac35f53bb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bKNelsHBcogL5ZNbJxdDR7Y3iLffLernJBU7LSpFp9lnJJDGR0Iw1OwN1b08MptUwv+pIAbwPUCHHa8K9ws8C1MP2gHokxkNgimxPNI90+5jKx/P/8zR76dB6OT567G09tTa0QoOFZSL2Ajn1NZe5xnIkYAP8FQQQlFPw/H5+twcnalfQ15n4pGlnnwQCmc0iVcfIr3y1gjZMm+e1VMaCU+vxeHWYWMNMBn+aaG0IPkwHGYz7wm5+fnL1M221e32y0ji+7ZhWcBYSgzoQ02o8D9V47U+vC9Fg84+hsU4KKfKDXTVD4P+snSVKwcRHwIaSZr24tbuwLga2PFD+efZZxITt/DgAo48KO++6pQzkLG7XbCT0OZ/OAUXnhB78UrmFs88JHm2UCpArAFvci1Gi44kz00oM0ze6vu/FSYKzg48UsbTsTT8FNm6Fp2jUoGTuKTbX20/vkn7umcgejDalVIui0/6vJW5kzYG6k08LL5dkazW0McaonU+lK5hsKu6qcAdnlSTdSKZO7AYTGhWVgNXiEhdFuiPghp91yLxzkrD5Il/DCWGXGUbtKhF5UEi7wCikFx/dBC4c4nfsPmZfa1wxGPb1XT7289y7jkPPFwJSeCIGAKNVqX8T8f4Ebk0+AbyVjaL58b9dSMaakCSbWV9/ZmX+YCdP9m8lJkMEDWNoCgYNR8wbvrchHSthOvG4d7PQxUBaRU0gRFCderhlA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PhJ2Ymmiig1M6bSMwCqzWfzWqZiyGs6HnbD06kHTETz634fxBsT2f2ODPvql/1fLcd/BouZxlWuyhKMkJKWaGj2kID8pDpTttlFGCksHBt+4fE2H7jZjYlsHP3wM8jLSAYo06EflDKOJEiIl1XYYDUZ/kJjgkCwTxhUz2AzIf3eN0FWEGfng3x24h05HnBcvMhNQpbMcQEBMhRWeIIU93Lxdhbzjr0uwpa5oBrkquF3c3UHYJtCm04tscsJ1nhsjJikCDZmlXOxuaEr44dUzkT94Wcz+HzJT7lktKLgfbOpHnJX+AtRDrnkMTe1oYxdwnOaFP2AQQtpbca+4h8eYN8YsbwI9gkYEXseu6+u+CDcfmWxhOFBBiZ75TINWp3TSuUEl8Sus+HeCWBZxJ4fjNF1/SW4cViVAaUQR8aPRYElVECYJRWxdnHlypt/hxuBpIwVCnV4gG0Ai7OhzpJ44CeqoMNM4NufskQ7SrFTalW4U+oS1EpjffP+9gY1wBN+ZPYSJrVsgil4rx+A2d/zLVcfXGdQ/PvPI3tWQA/eQ8biRHnWdh9kI17f+UtQptC/luU7LtQ/FtHllkGxJp0UlasB3uApcQnp6WfX4OjV0IAri/dAxLwjALgkKHG3XJlWl88P9x4gaSpC0MmEyZm2RbUwC0IujUHCi+0vygvtY5LSfjay2rc55qMaSlR/k+3cJW4UjB0FXio8ZlMdfpMbQDmvRclkl/VOKAsd9vppaR8TjCp1WaYXfYb1xwitukqv9NHdO6ERLKtna/4h6RjwrYXD44BqT2ITL4GP+E5ogfzMm0FA3S1D7Xu/I9S9bqZViqvoIKVcVcICpbAiytVWNPIA0xx2RK3nzxvKDjzE5G4hgSAO7EB3YLYYP4z5CM81zHVgpBiRLiGYfcJ/jAb4N4acUDMyY71TglkjA3YqeDdQ0/FUyVzgjqS1hyPjVGKV5umnZPGMxeWcsCKKlXP/p14FqdXpGriKcmAWFACVkHbE6Ng5GakrErxDfzCOedpeGg+JuMX5CJyIuWI6WDpITuJg9cYEOo/4UknX4IyFUJJncEqaCJOrXfFnv55NNScwfptuxH0F7SpC3TaS4WRDdwAV+wbpezySBd6BAOLtsUtgHhieddIm3LXxLxQzDISLqZU7IhsVIo9uBAZdMS+R3KtkSlFYSII/2x/YqZ+XtF3lSC5a50Dg5DHIzn+WwhGLTp/ObDSWwKWNanNpcicO9w1SKFEBFC9vUgoB4lsAmjPqNg24vWGlRzxCK6RZCX8XhUVqLnnYYLZQMtam1S+83L775tnjmOKYEjQIzcG7xuuP+EMlIolaPed2M4MdVA9OQ0cfs3hQMXWpyp+FYa4Bb4OW7GR7BzfIDsRV9MoJWb+vAokcyTGGA3TUGqx6UzGtKAofPgrOViQhwyq3xR6X6dKdecwvr86nCfP6nxqmCudUzK1V1+mIujCJY7Rg21Qv2SQT3uQzP9QFDloIz80LSXlhsVW8jpd2epRgoPXCE0wWE+QXFxQ+Zqt8Tkx7aN/0EV2cawm4Af+8brpTyiEf8lWWmisaOo4IErAQLOErxARPuRJBUD1Gobz2IbbKEXm1pLXBgjYq9zJpFeymR20fU3w== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: de970e43-48e8-4590-e72f-08dac35f53bb X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:42.2353 (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: VnANKCkItAow3npJ+RqIUC3ge+i1gAHSK6o4XgB37bipdmDGmo4GjovZL3v0qjt53OuZYfEE3G9zTuA+6ft98Ul7UpAjjgKCyt33C0PIgog= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: cxY1S0sp2898uhLQKVG1g5HoPhgZMWHf X-Proofpoint-ORIG-GUID: cxY1S0sp2898uhLQKVG1g5HoPhgZMWHf Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: b328f630fcee8dc96e0e3942355fd211f8e15a5d Attribute names of parent pointers are not strings. So we need to modify attr_namecheck to verify parent pointer records when the XFS_ATTR_PARENT flag is set. Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_attr.c | 47 +++++++++++++++++++++++++++++++++++++++--- libxfs/xfs_attr.h | 3 ++- libxfs/xfs_da_format.h | 8 +++++++ repair/attr_repair.c | 19 ++++++++++------- 4 files changed, 66 insertions(+), 11 deletions(-) diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 04f8e349bcbc..d5f1f488b4ff 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -1575,9 +1575,33 @@ out_release: return error; } -/* Returns true if the attribute entry name is valid. */ -bool -xfs_attr_namecheck( +/* + * Verify parent pointer attribute is valid. + * Return true on success or false on failure + */ +STATIC bool +xfs_verify_pptr( + struct xfs_mount *mp, + const struct xfs_parent_name_rec *rec) +{ + xfs_ino_t p_ino; + xfs_dir2_dataptr_t p_diroffset; + + p_ino = be64_to_cpu(rec->p_ino); + p_diroffset = be32_to_cpu(rec->p_diroffset); + + if (!xfs_verify_ino(mp, p_ino)) + return false; + + if (p_diroffset > XFS_DIR2_MAX_DATAPTR) + return false; + + return true; +} + +/* Returns true if the string attribute entry name is valid. */ +static bool +xfs_str_attr_namecheck( const void *name, size_t length) { @@ -1592,6 +1616,23 @@ xfs_attr_namecheck( return !memchr(name, 0, length); } +/* Returns true if the attribute entry name is valid. */ +bool +xfs_attr_namecheck( + struct xfs_mount *mp, + const void *name, + size_t length, + int flags) +{ + if (flags & XFS_ATTR_PARENT) { + if (length != sizeof(struct xfs_parent_name_rec)) + return false; + return xfs_verify_pptr(mp, (struct xfs_parent_name_rec *)name); + } + + return xfs_str_attr_namecheck(name, length); +} + int __init xfs_attr_intent_init_cache(void) { diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index 3e81f3f48560..b79dae788cfb 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -547,7 +547,8 @@ int xfs_attr_get(struct xfs_da_args *args); int xfs_attr_set(struct xfs_da_args *args); int xfs_attr_set_iter(struct xfs_attr_intent *attr); int xfs_attr_remove_iter(struct xfs_attr_intent *attr); -bool xfs_attr_namecheck(const void *name, size_t length); +bool xfs_attr_namecheck(struct xfs_mount *mp, const void *name, size_t length, + int flags); int xfs_attr_calc_size(struct xfs_da_args *args, int *local); void xfs_init_attr_trans(struct xfs_da_args *args, struct xfs_trans_res *tres, unsigned int *total); diff --git a/libxfs/xfs_da_format.h b/libxfs/xfs_da_format.h index fbebb55b1621..786b942db9a5 100644 --- a/libxfs/xfs_da_format.h +++ b/libxfs/xfs_da_format.h @@ -731,6 +731,14 @@ xfs_attr3_leaf_name(xfs_attr_leafblock_t *leafp, int idx) return &((char *)leafp)[be16_to_cpu(entries[idx].nameidx)]; } +static inline int +xfs_attr3_leaf_flags(xfs_attr_leafblock_t *leafp, int idx) +{ + struct xfs_attr_leaf_entry *entries = xfs_attr3_leaf_entryp(leafp); + + return entries[idx].flags; +} + static inline xfs_attr_leaf_name_remote_t * xfs_attr3_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx) { diff --git a/repair/attr_repair.c b/repair/attr_repair.c index c3a6d50267e2..afe8073ca8e2 100644 --- a/repair/attr_repair.c +++ b/repair/attr_repair.c @@ -293,8 +293,9 @@ process_shortform_attr( } /* namecheck checks for null chars in attr names. */ - if (!libxfs_attr_namecheck(currententry->nameval, - currententry->namelen)) { + if (!libxfs_attr_namecheck(mp, currententry->nameval, + currententry->namelen, + currententry->flags)) { do_warn( _("entry contains illegal character in shortform attribute name\n")); junkit = 1; @@ -454,12 +455,14 @@ process_leaf_attr_local( xfs_dablk_t da_bno, xfs_ino_t ino) { - xfs_attr_leaf_name_local_t *local; + xfs_attr_leaf_name_local_t *local; + int flags; local = xfs_attr3_leaf_name_local(leaf, i); + flags = xfs_attr3_leaf_flags(leaf, i); if (local->namelen == 0 || - !libxfs_attr_namecheck(local->nameval, - local->namelen)) { + !libxfs_attr_namecheck(mp, local->nameval, + local->namelen, flags)) { do_warn( _("attribute entry %d in attr block %u, inode %" PRIu64 " has bad name (namelen = %d)\n"), i, da_bno, ino, local->namelen); @@ -510,12 +513,14 @@ process_leaf_attr_remote( { xfs_attr_leaf_name_remote_t *remotep; char* value; + int flags; remotep = xfs_attr3_leaf_name_remote(leaf, i); + flags = xfs_attr3_leaf_flags(leaf, i); if (remotep->namelen == 0 || - !libxfs_attr_namecheck(remotep->name, - remotep->namelen) || + !libxfs_attr_namecheck(mp, remotep->name, + remotep->namelen, flags) || be32_to_cpu(entry->hashval) != libxfs_da_hashname((unsigned char *)&remotep->name[0], remotep->namelen) || From patchwork Thu Nov 10 21:05:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039326 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 504D7C433FE for ; Thu, 10 Nov 2022 21:05:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231641AbiKJVFw (ORCPT ); Thu, 10 Nov 2022 16:05:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231382AbiKJVFu (ORCPT ); Thu, 10 Nov 2022 16:05:50 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93C3B7679 for ; Thu, 10 Nov 2022 13:05:49 -0800 (PST) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL32JQ013905 for ; Thu, 10 Nov 2022 21:05:48 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=XGZ4HcbEdERnVUFzWosEIzrJ3B57Mog8WUbEUjM11a8=; b=AoBEFPgebaOq3U3kqRz58b2iu29Y53mfNd4XryuMgQKS7HgyIFuoXgdMHjCvNYhpAH1g bhcYVeitAklWkVV46Hqp0mMSibn0MVyt6kmLVAKLXLNfLobgmXk4N58m6cGXtaxl6oBF thxUV2pqF88C74pLyZzhO1iX0djDKifb9mFOKr6TVlUg60YMNY/Rr7pQJfwXHNyvHaIe v6Bpnd5uzBl5GWUHbhx2sV9rzJ5gr8yCQbOJSYereIDnHtQNXH8ZDTTMt5+hhoMJpqf9 a44da3pJ2anZMSoutHsDLMg44lI1gI87GM1TFT0y9mrU919LaIfh8HMmqSz/AMq99b1v NQ== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vbg084-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:48 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKeTiX038169 for ; Thu, 10 Nov 2022 21:05:47 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fjb-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mZIMhk8+XTRUFyXIdV5nMuGTGW715NOhiKdvjx0FUvc22Vzc0cIiqBBLlmPEQBY6VoMUAwyQgW3Qyef0exWxi5tx46pXlFOAJt3Eg0WpqDzFHU8tR2dSd4rpMuBF1YhDr8WNVQYdPPTIQbtRV6727G/i5MMtFKYmQwlBtYSKK4K21zbNp6IumK4UP858RY6DV0CmzLQ7TnJAlSI669j6bTFvDGUarBESv2cfcIVcAAXMUFSzw8A6IdTact4C+tLBUiM1rObshpIg6rYfAXNHM+pyFRNef9dfUk5E+EVmwiDsXxsXRVl1BjsTfw7jXZFrTVN/509qe+vFsbDqj39WHg== 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=XGZ4HcbEdERnVUFzWosEIzrJ3B57Mog8WUbEUjM11a8=; b=HpFoBnr2lmR5vJkxuYAiUySwCQxf/Q2MonAhmkNL3h/eIFxbu4gVjKNUF1TS5JekUpgVTxpj1jNRLGq4G/e4lanPpMU6vSz6rL3yBPNfWPmcptgTdGWCnpnuD6+kZcqDREju0BV5yLhB0CAjF/6nnkG0cOFo93kz0JOFn9mixLEbDlHrwAy7hOJhMFYWIpZGnLJGeAnc9wf9PWXDSv7X5q6X2YMIJioDl5Kpj74pz96p9tUmKQW90WOj29mxplDWGe8TQ608ShCdnOc+1FMfoXgenR92GbsA8Gn53ZKm9EWvpv6AuoDgzswYwfDFxwEjC6WM/LGev1Gaft+GW78fiQ== 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=XGZ4HcbEdERnVUFzWosEIzrJ3B57Mog8WUbEUjM11a8=; b=iis0IE64RCLvX0ett7vh6i5m3xiRhBzoRXnn7ec7/YQbRFU2cbHbPMYnHVFawIo6bGI6ZcHmPAKvXGfrAUSJxxoQZAsDHyK3aQXyQWvw71hP+iG0r09zwKaKK/VWktUDIYlk8iRChdfpEnzlXFdHOQhgFlnHz9H9fS/pq5xNRq0= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:45 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:45 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 10/25] xfsprogs: Increase rename inode reservation Date: Thu, 10 Nov 2022 14:05:12 -0700 Message-Id: <20221110210527.56628-11-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR21CA0019.namprd21.prod.outlook.com (2603:10b6:a03:114::29) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 24ce7029-dfb9-492c-6c95-08dac35f54bb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BRTd2zhm2CBqrVJgrQidRvO4KgRjukcUa1WSrumIk8kh3bU8CAhE0CpBX5Jve2Iew2cEDrOduWTIBomdDCHC6WnY32AieNTacf/eHHDQ0AvvC/ct0qIOsIRUmhoekwpsOoJufpfcF7QfL1+YwVIEqBGjMupT+C0NkwjUE0kAa/hc+fho3KeC+eF7HCOv3O33pgK7sxd63/OV4FgozDGVQ2TjvmgYEZop11B7yaeXLPHHAxSRo8Rx6aw42f99dPoY735UsotppqUQs9bgaXUCiZFRHDcF56LfSvv+BcqjAZTIZojsHvyKI7LYljG++2MTHy51TAbZX1MsyPCcxnE8IRmW0I5jr7OMaxiJ+tJPeRXC9umrmMuTdUVSDnafj+xKLKQYvpJBtXLcImAxGG6hq7n46MaaUPIBSDlq2MN37yE+uIQAUVpCGPK6h2UFoSCOrKMw5DvxrSaNQrN5yxpBhwrTdNDNv86pAXxdpZVGsQtkzUQp448iXgw6IOPlexsncehtPlQNUJtYU/+86GPsiOYfiZroiee4lWHHDkkUbTTXlVzQoOJwzpZH1Xu7PSFB8rECloWcLJ4e7rBoynymyosCnZoltC/n8C1v2l8QIZsMjxoQL42qOThOICyQUyuKUjBawIgGPY1nA5h+ISx6zIyspH3HyG2cytJJSRSakoG37e9DNRID1vj4mCrfJlDfCFAEnQHc4aSQ30sSIt4Baw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UzM0nE3uBukfjGV3k7wmjjeu3Z53Yy+cMXISmGU1X9AdFBWATjOFzRUW4d8UyqgeVwrABllfCBJH6hqGsOzBuyjJxIQ0+D3MhMjAaK42mDm7gcsRvM9K//V8c0BNTAgU3rUS/08wsIFN8J5A/qCpMz4uP4qSD7TSPWPiKc9bp3aW17tMBY142vzgJ3pxzcTMIpMfKwWfskBijgrOc9N7wveDJz+r9iz9j31Ofrjp/vnSb4soYdMWC1sdjt4VsxG5M4Xyu/vF6+7CyW8YxkRfrcmuaPy/HT8PhSgr1XHzKmwmQIj/vcv3P+5vIxEvTD+QzxBXajzBCTlwc05nqc8LjS8yo7Ih56mu4jmpgQI4SL2LHAgpHZqZmxe2TyRrHwFKHkzcAxJ7+q0yi/UyibD5IEEEApdLWAA2A5VdoqE70DZDwlHRC3MC1vmgmVRwJaUJsP0SzflyBKHa4PVieNLHo356TjqbtCpl1cT9Bcr/kzbmp/FANskbXUDj0S3dsB/QDQVg0Xv1r7xVPKAUmGwOuP/k9Qp/kFxBqBJA6mIPN9LLDnZhk2tWbgyzfA0WhDZtaoUHQq5s5a8+tuWvaM+CS91Vo9ChgtwhMhfiJTHkSkTsyMRupgprXgqL462cTUFsDDje5CRdHly7ULCBVUwztKbGulZ5l9slxrNfdfRSUulqPkh4KhuL1ej5Vr6npQUBH+P4jagKQ4k7gh9IS+a3MEyQMw0yLV+yrFvVGL6XwKvHWrN37kh6CLbSgEnrtVMBrRgEPoLXDt2M1neUgV4B27EdbmQ9hCObpjjrar55BQ4D2o5WmhVXcqNxq1NRgmORr0QX0fepkl6jfOAOXRF766jcw59+/TZknDiwW0WgUxhflQ36X20u6exuyfqXhhHc5gC8JbNwG0uJFtXQAh5Fxkz9BeW7cIgiGOGufFEizu+RvDQ1yVpPREpLse5kZXNjl4FsL2SI5pBKu2NO2pgMsgqibJZ2EWb5ILI0OCx6dpa+le2WMPT/6H+VyY4qb7ptIv/poHzHWyrQ3tRhKlnFEaRTqfdZIR+WiAh1WG8/r7/D5ok/9row2k1RElwlZaaTGoLMiQdLa3FEThfvMvHvU3KD6Q/x6g0Uf/P0TPjKKqz/+s0WX4goTU26TZyVTwOXCdA7Vy13fGL4afrmhkjz3/4vOb2yaf/Sv03J+tHmnQVu0lXGBpA856PY3OK8X5EsDN6pa6OWOg1DIoyR9/fSDEIRCaSYU65C4vL7jeQj0blc5azQ3DiQLlZi+t8UmDjWt4wcb0GKXA/bK8TUDjDx74Pmx4Bo38Wiy1naX5KYZHfjlwO5A7VVao/nFZOUSAUeRDNijuZaK813oQIfCCcRUZS6AXe11ZlJONyv3GP31YgeSocrPpqWMTR5LzX6jxvZoux9WKv23sXj+ufWIQ8vBmnyvdg1ILFvZIe0OpueG0q571L/l9blqKo4dOCmV5VIINlZhbC1V3LTDcYDXSlWwmc7ploN/PjpYjhj+8Y14Lezu6GmG3t4mxXMYyrmuT3JHXD7lFsTmaqL/1eHvbdantC8dkQrLoOg10umsalcT//sxSz7YBgqCs93R83vp9afnq3zFn7FVexKXhGJn22KHg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24ce7029-dfb9-492c-6c95-08dac35f54bb X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:43.8418 (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: Yfq7RM5J7n7qdmwlKMcrGo27irSsemJbSpdWO5x3FSSsctNNXjw7UeW2xaPcaqo7HQRPup/TKyz1AdGJM2x3KfMgPd5gb9T3Watx6SlWY84= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: EpOF9c0t55ZQ_yo6RssabeTXuhIJGLcW X-Proofpoint-ORIG-GUID: EpOF9c0t55ZQ_yo6RssabeTXuhIJGLcW Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 5350b9280cd22d6deab8b3f4d77c0a4f34ad15e4 xfs_rename can lock up to 5 inodes: src_dp, target_dp, src_ip, target_ip and wip. So we need to increase the inode reservation to match. Signed-off-by: Allison Henderson --- libxfs/xfs_trans_resv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libxfs/xfs_trans_resv.c b/libxfs/xfs_trans_resv.c index 797176d7d3bc..04c444806fe1 100644 --- a/libxfs/xfs_trans_resv.c +++ b/libxfs/xfs_trans_resv.c @@ -421,7 +421,7 @@ xfs_calc_itruncate_reservation_minlogsize( /* * In renaming a files we can modify: - * the four inodes involved: 4 * inode size + * the five inodes involved: 5 * inode size * the two directory btrees: 2 * (max depth + v2) * dir block size * the two directory bmap btrees: 2 * max depth * block size * And the bmap_finish transaction can free dir and bmap blocks (two sets @@ -436,7 +436,7 @@ xfs_calc_rename_reservation( struct xfs_mount *mp) { return XFS_DQUOT_LOGRES(mp) + - max((xfs_calc_inode_res(mp, 4) + + max((xfs_calc_inode_res(mp, 5) + xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1))), (xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) + From patchwork Thu Nov 10 21:05:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039327 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28F3FC4332F for ; Thu, 10 Nov 2022 21:05:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231675AbiKJVFx (ORCPT ); Thu, 10 Nov 2022 16:05:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230435AbiKJVFv (ORCPT ); Thu, 10 Nov 2022 16:05:51 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 382EA4AF1F for ; Thu, 10 Nov 2022 13:05:50 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL2xAm003525 for ; Thu, 10 Nov 2022 21:05:49 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=/MFjiq1URFRRzE3A8Y/bnsoS2I3yKUm3EY8PgZNK0+s=; b=G90X77FrbIasv/f7Gj8aSUMc55WHaPzD0qvD3sqjCmUJQ8GpRKhKdNerJGj1W2qNtbF5 oiGG7I4EQeHSf12xC3ptmvr+95tNxpmCmEMK9MkPyvXvjJFarHsjgX9YipdrC6wk1ObQ jpVa9TH42gzAKeTmMiDD29+ej8yx9C060O2SHDOvPtpWLtSXm1mfTT2ZUPcGd342ftT9 BvDZLQdVjtSo1S8SpCQyird7GUqRe33/Z1j9uCJdL6D9AXBlasneObgKUadGp5g+NfQ9 53E8aI0aDxAwhjCmGzXXBcWMkkXUuG6hiNFIj0PRfq1nckYxjzqRcfyOFhJqubfdE48O Ig== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vcg097-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:48 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKeTiY038169 for ; Thu, 10 Nov 2022 21:05:47 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fjb-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bPsaGCZLA9gZcLM0EF0UEDCkb/2laP6R4fmGPPJLExX+IaTU6epoym9pdVe3g9s7gxVSDODn9UDvvt1CI92qIqDTOPjCrSp7/2tRNDPM95hsiadT29xQhQe6RzcC1jvnFQ8B6J+K8/AFitzvAjnf29zhJ/dJanRI4inpUm3ZCa6h4qURR7Cwtsw7h4PxP0J6wOqjm0Ub4uBdCHTLF+/stNQxUsIBcssVD9RL0rWuxqyZ+n7nrenaR97P2EGbw97IuES786DNpYI+8URZaC1ZWM5efgCEsVKJrbKzvdzEdLqXbGthURG89wtIcOYQRb4Cz1uIbMw8NWfS7GqosXa4JQ== 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=/MFjiq1URFRRzE3A8Y/bnsoS2I3yKUm3EY8PgZNK0+s=; b=aMDd7MEoptG/J6j74ArWX0ybKmneX1UFi7k+zlXfmIh7DNlSu8ZCF5LFKGn7nQfID35m9COizg9tP/QPYAogHg7QSqPv8uHhW7cM28SnmCoyOxdNnPvyog2nIkPailUPiM5nElfU45v4XWE+t3fA4bRvhbpqrVx2bozF5psd8ua+HHxLfjVpgAq4p/uD7F8TG2HFrty7ehYrCt9e2GxKU3d3YKdPuhKY22StSTw85WOHsiT/2L4im9ugjdHROJdu6GFSWY/3jDPBm1yzJzN/fJrtAXGHhET9Ob4y8OOspHqzn8M533kTioVf6yNFF+UoRw7Qs29++bfIv6mkSnxxKA== 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=/MFjiq1URFRRzE3A8Y/bnsoS2I3yKUm3EY8PgZNK0+s=; b=hfCf6WYuCG1b2oiQYKgrC6FKF3FtOLu/1mBDkb+cnFLPG1JP/QObs3mtSmrIzAD0RUqjkRVRX4aUs+bjIXZexLpAl1NcNyXcd91vimEOtZ55IyJsNGbmEgf49P/TxnTOqVvGvusYRdVINKCDx+ZIO+EGMmFFwYS4zzwA9+VeSi4= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:45 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:45 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 11/25] xfsprogs: extend transaction reservations for parent attributes Date: Thu, 10 Nov 2022 14:05:13 -0700 Message-Id: <20221110210527.56628-12-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR02CA0055.namprd02.prod.outlook.com (2603:10b6:a03:54::32) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: b026f78c-702e-4314-2c8b-08dac35f5574 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w1NokF2XMg7mQAFz4I/HbnHUG55K0bfsVm5LVpeRCmUKlnnm+//aFKQhUCcOsWM89hqEanhCJdN1dif/l/iEgshV+CYD1fYwPcJVqsL4b1SRWPzVJT1uzZFxVvPnUBHw0MCq5BWHkxv3poY2wevP9Q/YQoXIR0xKH9v+6wq7ooHQyVeeWOoGMxMBVVsXFTV4/3JC+C3DnJd41bIpClVUNUgqURO1FBhX7dBZMnmAF9iw41YavCe1jCe/qMtEMezp4J00e7KWcefnbsiqH4WBwD2YONmrWWSy6IRsuy5NtKrO/MrMHjY5cDdLdWN3ByTkFVT7C2H80zsFhQ95kemXEKTs+LE++f5oR0s0d8BMlZf6movHxREIxCxjIpKNG6OgpEjfnuzWFTBZjpWO52b7/UCkcLyUu6P0NT2ubKGLUZrJSw6xoX74cVR0QHWLbq9qUY5HpsoCzKw7i3PXcM9Y0FjBt33j0Eam7kRLo7Xq/AmCIruJuDSu8EgyUL77i8jUzdJmzZvY5EWYESbwc4JbNWEiUreBy+gWcuGQcSOIvqMKrqwnK0AkfWOZVKw34F0/r+zwxuohccijKIeYK6BpIUmiLqHfBX8a2uR7zZN0dTo4OnWQw7F+vFrZAcRnv8tAzpX4vYkpA4mZuGrnfL2850eJ7usdc9JA0LsaAmEvCaO55Dq4VP4/8zrD+6Wzcqiu1fdNMUW298UCR8ocwOm3dA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(30864003)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: slky0mcttMdu7dj7dg/D3W8jtDBjPqJocxuTMa8lrA88DOiXTpcyyqu6Q/nYoRnS85vG1KzNARFBum7krZs+yFSpbVtq0szANXnI2SBzMqRr7tscGSKSpHi+ZSObXl3SuKm30WmIxnfuYmcfkbsh9lHJTastjf3bIPhvKsmBi9OJVz4h86Os7m3RpMIUHiKLp/vSwAZVVPBCuIE/8UAukfHhRsDEtsHgxdUhF6oniVSTe2+t2OVsci2YnIgRk6LMaWXcz9QMwzzhum1sRGudoOrpjmryADjzPr5qy3nErKvmeOVNXAPPjHfDmlEk/JDANW2DTaUuJyxvIhEPPN1HaIPDwXzpceetVB56/34BsjBL7nEvxFo7mfbfkLEBTS4KR3rD2DRQx+ofoFx6WK4Zr+A5d75yfQs2NGbgrASEp0t7UmTOkPNIyIRUBy+di7heH7TG5VwMOBlj8hG1mK6YJ6Uxhxn0Mb1NPhHIUGNlvHyDwZikmOIl2QczEJeX08+nu0Xgv10OPvZghqQSmCGX6CSq+dlgsC+OJjTz14LZR0rRYVOnaQ08rjubXxT72p9QGIsx1tx7E7YI546gnIvYJ/lnN+W9gzVGW6qDOamlRupfGwz48pivceuqxfsKWr+LgX+U96DxuHqLtcbcjRGkwggKX+FWApT4/ei5wylIpwZ8/wPEFWmBdMpc5A3163a04Tn9ANwZn0kJeazoGQqLiQchciVUycV5W97jn9+TXElNYjJ5hy7fYTEr24o/jT2zfVvN4kx9PUBoyuBKA9j7eKAhCjuTB9KLRut3JegbCrdheBf4MR73qtIAcY7ULUOPWp6/sgIydaNi0VhcuAJKw6dS1U/OqSkX/bxffKyi9UhJZd4ixysCq0j0kj5M/GzVxZWrzVo1vJuOVqr+Wt56QxdpkIcqJjUI+YGAvC1VvRLnJZbWTy3i5G9Z3g9+qT10eQDcpEvZxTiNgE6o1ohysgpKeYv1dS/9rMYKnJJnsVe/yJt7XcpbqHuetoZB0IQPgEAl9iwedIYPJZY0WmgQWl1WbjGLYnLOnC5Em9B0ZqmVR50WNRje2ZUn769isuQtO/FMwSQQg4N0aqHDg79yFO14WL6iEavpBD+9C4OKoaSrj0SY7Z3CjrjymNzyEdJ3om1Dm+kpB1aX0Ots9goKRRwor7hACWXvYSwgAn5Dd+xzXBN2j7ZWAvTEKH1CyUZWXlGJLdIbLd9mHEr62w2WWDBsotwheeAN3/fShMZbWFvHcyUL2nOPvuRKLml6fsW7wTy8tGlPVhhSlyJlSrmQmMTsPWzBFtqP2C533bzO+trjHHYDw4RQhD9y5XL9yFUVcSRBtpXrjt78u7Xvs/ssmEZNKrVnxuyzbXKzKshZCx6qGg78/NECq/g4uJjrsgBGX6gGLKakM36mTD7H+1+ddnCfORCmy4Gs2qGkOU7KpdmUQZxjsWvaPubzxClj1rU80Hx05gV1kY7zkMcrjgQIGe0apZ9ynYbSoOq/QOcOhC+bSI7ywHIKSkHsR3ruz3CMvtixVtLlxYa4u+WTCeyF02H7rCvdCQ3ghXP6eOSmVME7wrpHtll7Tqr1u54lKsmxywXAP5nyn7AAMrETgyXxfQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b026f78c-702e-4314-2c8b-08dac35f5574 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:45.0426 (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: ZGaMrC+dGLUnaMtSfyfknKV3DCQCdnWOldE4Z7XjT9KE9XTkvYbvhCWpVFkZjmqrHF3RdLzUNonWqjZ2GZiWAAtgSQD2c3r+rcETvaYZhDw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: K21GpLEy6WIq5Focxu5sQWjmQMLyneOk X-Proofpoint-ORIG-GUID: K21GpLEy6WIq5Focxu5sQWjmQMLyneOk Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 99c10e460207a624b3e243e4a3665737d436d08c We need to add, remove or modify parent pointer attributes during create/link/unlink/rename operations atomically with the dirents in the parent directories being modified. This means they need to be modified in the same transaction as the parent directories, and so we need to add the required space for the attribute modifications to the transaction reservations. Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- include/xfs_trans.h | 7 + libxfs/libxfs_priv.h | 1 + libxfs/xfs_trans_resv.c | 322 +++++++++++++++++++++++++++++++++------- 3 files changed, 278 insertions(+), 52 deletions(-) diff --git a/include/xfs_trans.h b/include/xfs_trans.h index 690759ece3af..8d5e59d8a5f5 100644 --- a/include/xfs_trans.h +++ b/include/xfs_trans.h @@ -58,6 +58,13 @@ typedef struct xfs_qoff_logitem { xfs_qoff_logformat_t qql_format; /* logged structure */ } xfs_qoff_logitem_t; +struct xfs_attri_log_item { + struct xfs_log_item attri_item; + atomic_t attri_refcount; + struct xfs_attri_log_nameval *attri_nameval; + struct xfs_attri_log_format attri_format; +} xfs_attri_log_item_t; + typedef struct xfs_trans { unsigned int t_log_res; /* amt of log space resvd */ unsigned int t_log_count; /* count for perm log res */ diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h index 6fd7ce42d3b6..b2bad05ba3b4 100644 --- a/libxfs/libxfs_priv.h +++ b/libxfs/libxfs_priv.h @@ -521,6 +521,7 @@ static inline int retzero(void) { return 0; } #define xfs_icreate_log(tp, agno, agbno, cnt, isize, len, gen) ((void) 0) #define xfs_sb_validate_fsb_count(sbp, nblks) (0) +#define xlog_calc_iovec_len(len) roundup(len, sizeof(uint32_t)) /* * Prototypes for kernel static functions that are aren't in their diff --git a/libxfs/xfs_trans_resv.c b/libxfs/xfs_trans_resv.c index 04c444806fe1..1ab3e5684a58 100644 --- a/libxfs/xfs_trans_resv.c +++ b/libxfs/xfs_trans_resv.c @@ -18,6 +18,7 @@ #include "xfs_trans.h" #include "xfs_trans_space.h" #include "xfs_quota_defs.h" +#include "xfs_da_format.h" #define _ALLOC true #define _FREE false @@ -419,29 +420,108 @@ xfs_calc_itruncate_reservation_minlogsize( return xfs_calc_itruncate_reservation(mp, true); } +static inline unsigned int xfs_calc_pptr_link_overhead(void) +{ + return sizeof(struct xfs_attri_log_format) + + xlog_calc_iovec_len(XATTR_NAME_MAX) + + xlog_calc_iovec_len(sizeof(struct xfs_parent_name_rec)); +} +static inline unsigned int xfs_calc_pptr_unlink_overhead(void) +{ + return sizeof(struct xfs_attri_log_format) + + xlog_calc_iovec_len(sizeof(struct xfs_parent_name_rec)); +} +static inline unsigned int xfs_calc_pptr_replace_overhead(void) +{ + return sizeof(struct xfs_attri_log_format) + + xlog_calc_iovec_len(XATTR_NAME_MAX) + + xlog_calc_iovec_len(XATTR_NAME_MAX) + + xlog_calc_iovec_len(sizeof(struct xfs_parent_name_rec)); +} + /* * In renaming a files we can modify: * the five inodes involved: 5 * inode size * the two directory btrees: 2 * (max depth + v2) * dir block size * the two directory bmap btrees: 2 * max depth * block size * And the bmap_finish transaction can free dir and bmap blocks (two sets - * of bmap blocks) giving: + * of bmap blocks) giving (t2): * the agf for the ags in which the blocks live: 3 * sector size * the agfl for the ags in which the blocks live: 3 * sector size * the superblock for the free block count: sector size * the allocation btrees: 3 exts * 2 trees * (2 * max depth - 1) * block size + * If parent pointers are enabled (t3), then each transaction in the chain + * must be capable of setting or removing the extended attribute + * containing the parent information. It must also be able to handle + * the three xattr intent items that track the progress of the parent + * pointer update. */ STATIC uint xfs_calc_rename_reservation( struct xfs_mount *mp) { - return XFS_DQUOT_LOGRES(mp) + - max((xfs_calc_inode_res(mp, 5) + - xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp), - XFS_FSB_TO_B(mp, 1))), - (xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 3), - XFS_FSB_TO_B(mp, 1)))); + unsigned int overhead = XFS_DQUOT_LOGRES(mp); + struct xfs_trans_resv *resp = M_RES(mp); + unsigned int t1, t2, t3 = 0; + + t1 = xfs_calc_inode_res(mp, 5) + + xfs_calc_buf_res(2 * XFS_DIROP_LOG_COUNT(mp), + XFS_FSB_TO_B(mp, 1)); + + t2 = xfs_calc_buf_res(7, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_allocfree_block_count(mp, 3), + XFS_FSB_TO_B(mp, 1)); + + if (xfs_has_parent(mp)) { + unsigned int rename_overhead, exchange_overhead; + + t3 = max(resp->tr_attrsetm.tr_logres, + resp->tr_attrrm.tr_logres); + + /* + * For a standard rename, the three xattr intent log items + * are (1) replacing the pptr for the source file; (2) + * removing the pptr on the dest file; and (3) adding a + * pptr for the whiteout file in the src dir. + * + * For an RENAME_EXCHANGE, there are two xattr intent + * items to replace the pptr for both src and dest + * files. Link counts don't change and there is no + * whiteout. + * + * In the worst case we can end up relogging all log + * intent items to allow the log tail to move ahead, so + * they become overhead added to each transaction in a + * processing chain. + */ + rename_overhead = xfs_calc_pptr_replace_overhead() + + xfs_calc_pptr_unlink_overhead() + + xfs_calc_pptr_link_overhead(); + exchange_overhead = 2 * xfs_calc_pptr_replace_overhead(); + + overhead += max(rename_overhead, exchange_overhead); + } + + return overhead + max3(t1, t2, t3); +} + +static inline unsigned int +xfs_rename_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + /* One for the rename, one more for freeing blocks */ + unsigned int ret = XFS_RENAME_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to remove or add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += max(resp->tr_attrsetm.tr_logcount, + resp->tr_attrrm.tr_logcount); + + return ret; } /* @@ -458,6 +538,23 @@ xfs_calc_iunlink_remove_reservation( 2 * M_IGEO(mp)->inode_cluster_size; } +static inline unsigned int +xfs_link_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + unsigned int ret = XFS_LINK_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += resp->tr_attrsetm.tr_logcount; + + return ret; +} + /* * For creating a link to an inode: * the parent directory inode: inode size @@ -474,14 +571,23 @@ STATIC uint xfs_calc_link_reservation( struct xfs_mount *mp) { - return XFS_DQUOT_LOGRES(mp) + - xfs_calc_iunlink_remove_reservation(mp) + - max((xfs_calc_inode_res(mp, 2) + - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), - XFS_FSB_TO_B(mp, 1))), - (xfs_calc_buf_res(3, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 1), - XFS_FSB_TO_B(mp, 1)))); + unsigned int overhead = XFS_DQUOT_LOGRES(mp); + struct xfs_trans_resv *resp = M_RES(mp); + unsigned int t1, t2, t3 = 0; + + overhead += xfs_calc_iunlink_remove_reservation(mp); + t1 = xfs_calc_inode_res(mp, 2) + + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); + t2 = xfs_calc_buf_res(3, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_allocfree_block_count(mp, 1), + XFS_FSB_TO_B(mp, 1)); + + if (xfs_has_parent(mp)) { + t3 = resp->tr_attrsetm.tr_logres; + overhead += xfs_calc_pptr_link_overhead(); + } + + return overhead + max3(t1, t2 , t3); } /* @@ -496,6 +602,23 @@ xfs_calc_iunlink_add_reservation(xfs_mount_t *mp) M_IGEO(mp)->inode_cluster_size; } +static inline unsigned int +xfs_remove_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + unsigned int ret = XFS_REMOVE_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += resp->tr_attrrm.tr_logcount; + + return ret; +} + /* * For removing a directory entry we can modify: * the parent directory inode: inode size @@ -512,14 +635,24 @@ STATIC uint xfs_calc_remove_reservation( struct xfs_mount *mp) { - return XFS_DQUOT_LOGRES(mp) + - xfs_calc_iunlink_add_reservation(mp) + - max((xfs_calc_inode_res(mp, 2) + - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), - XFS_FSB_TO_B(mp, 1))), - (xfs_calc_buf_res(4, mp->m_sb.sb_sectsize) + - xfs_calc_buf_res(xfs_allocfree_block_count(mp, 2), - XFS_FSB_TO_B(mp, 1)))); + unsigned int overhead = XFS_DQUOT_LOGRES(mp); + struct xfs_trans_resv *resp = M_RES(mp); + unsigned int t1, t2, t3 = 0; + + overhead += xfs_calc_iunlink_add_reservation(mp); + + t1 = xfs_calc_inode_res(mp, 2) + + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); + t2 = xfs_calc_buf_res(4, mp->m_sb.sb_sectsize) + + xfs_calc_buf_res(xfs_allocfree_block_count(mp, 2), + XFS_FSB_TO_B(mp, 1)); + + if (xfs_has_parent(mp)) { + t3 = resp->tr_attrrm.tr_logres; + overhead += xfs_calc_pptr_unlink_overhead(); + } + + return overhead + max3(t1, t2, t3); } /* @@ -568,12 +701,40 @@ xfs_calc_icreate_resv_alloc( xfs_calc_finobt_res(mp); } +static inline unsigned int +xfs_icreate_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + unsigned int ret = XFS_CREATE_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += resp->tr_attrsetm.tr_logcount; + + return ret; +} + STATIC uint -xfs_calc_icreate_reservation(xfs_mount_t *mp) +xfs_calc_icreate_reservation( + struct xfs_mount *mp) { - return XFS_DQUOT_LOGRES(mp) + - max(xfs_calc_icreate_resv_alloc(mp), - xfs_calc_create_resv_modify(mp)); + struct xfs_trans_resv *resp = M_RES(mp); + unsigned int overhead = XFS_DQUOT_LOGRES(mp); + unsigned int t1, t2, t3 = 0; + + t1 = xfs_calc_icreate_resv_alloc(mp); + t2 = xfs_calc_create_resv_modify(mp); + + if (xfs_has_parent(mp)) { + t3 = resp->tr_attrsetm.tr_logres; + overhead += xfs_calc_pptr_link_overhead(); + } + + return overhead + max3(t1, t2, t3); } STATIC uint @@ -586,6 +747,23 @@ xfs_calc_create_tmpfile_reservation( return res + xfs_calc_iunlink_add_reservation(mp); } +static inline unsigned int +xfs_mkdir_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + unsigned int ret = XFS_MKDIR_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += resp->tr_attrsetm.tr_logcount; + + return ret; +} + /* * Making a new directory is the same as creating a new file. */ @@ -596,6 +774,22 @@ xfs_calc_mkdir_reservation( return xfs_calc_icreate_reservation(mp); } +static inline unsigned int +xfs_symlink_log_count( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + unsigned int ret = XFS_SYMLINK_LOG_COUNT; + + /* + * Pre-reserve enough log reservation to handle the transaction + * rolling needed to add one parent pointer. + */ + if (xfs_has_parent(mp)) + ret += resp->tr_attrsetm.tr_logcount; + + return ret; +} /* * Making a new symplink is the same as creating a new file, but @@ -908,54 +1102,76 @@ xfs_calc_sb_reservation( return xfs_calc_buf_res(1, mp->m_sb.sb_sectsize); } -void -xfs_trans_resv_calc( +/* + * Namespace reservations. + * + * These get tricky when parent pointers are enabled as we have attribute + * modifications occurring from within these transactions. Rather than confuse + * each of these reservation calculations with the conditional attribute + * reservations, add them here in a clear and concise manner. This requires that + * the attribute reservations have already been calculated. + * + * Note that we only include the static attribute reservation here; the runtime + * reservation will have to be modified by the size of the attributes being + * added/removed/modified. See the comments on the attribute reservation + * calculations for more details. + */ +STATIC void +xfs_calc_namespace_reservations( struct xfs_mount *mp, struct xfs_trans_resv *resp) { - int logcount_adj = 0; - - /* - * The following transactions are logged in physical format and - * require a permanent reservation on space. - */ - resp->tr_write.tr_logres = xfs_calc_write_reservation(mp, false); - resp->tr_write.tr_logcount = XFS_WRITE_LOG_COUNT; - resp->tr_write.tr_logflags |= XFS_TRANS_PERM_LOG_RES; - - resp->tr_itruncate.tr_logres = xfs_calc_itruncate_reservation(mp, false); - resp->tr_itruncate.tr_logcount = XFS_ITRUNCATE_LOG_COUNT; - resp->tr_itruncate.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + ASSERT(resp->tr_attrsetm.tr_logres > 0); resp->tr_rename.tr_logres = xfs_calc_rename_reservation(mp); - resp->tr_rename.tr_logcount = XFS_RENAME_LOG_COUNT; + resp->tr_rename.tr_logcount = xfs_rename_log_count(mp, resp); resp->tr_rename.tr_logflags |= XFS_TRANS_PERM_LOG_RES; resp->tr_link.tr_logres = xfs_calc_link_reservation(mp); - resp->tr_link.tr_logcount = XFS_LINK_LOG_COUNT; + resp->tr_link.tr_logcount = xfs_link_log_count(mp, resp); resp->tr_link.tr_logflags |= XFS_TRANS_PERM_LOG_RES; resp->tr_remove.tr_logres = xfs_calc_remove_reservation(mp); - resp->tr_remove.tr_logcount = XFS_REMOVE_LOG_COUNT; + resp->tr_remove.tr_logcount = xfs_remove_log_count(mp, resp); resp->tr_remove.tr_logflags |= XFS_TRANS_PERM_LOG_RES; resp->tr_symlink.tr_logres = xfs_calc_symlink_reservation(mp); - resp->tr_symlink.tr_logcount = XFS_SYMLINK_LOG_COUNT; + resp->tr_symlink.tr_logcount = xfs_symlink_log_count(mp, resp); resp->tr_symlink.tr_logflags |= XFS_TRANS_PERM_LOG_RES; resp->tr_create.tr_logres = xfs_calc_icreate_reservation(mp); - resp->tr_create.tr_logcount = XFS_CREATE_LOG_COUNT; + resp->tr_create.tr_logcount = xfs_icreate_log_count(mp, resp); resp->tr_create.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + resp->tr_mkdir.tr_logres = xfs_calc_mkdir_reservation(mp); + resp->tr_mkdir.tr_logcount = xfs_mkdir_log_count(mp, resp); + resp->tr_mkdir.tr_logflags |= XFS_TRANS_PERM_LOG_RES; +} + +void +xfs_trans_resv_calc( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + int logcount_adj = 0; + + /* + * The following transactions are logged in physical format and + * require a permanent reservation on space. + */ + resp->tr_write.tr_logres = xfs_calc_write_reservation(mp, false); + resp->tr_write.tr_logcount = XFS_WRITE_LOG_COUNT; + resp->tr_write.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + + resp->tr_itruncate.tr_logres = xfs_calc_itruncate_reservation(mp, false); + resp->tr_itruncate.tr_logcount = XFS_ITRUNCATE_LOG_COUNT; + resp->tr_itruncate.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + resp->tr_create_tmpfile.tr_logres = xfs_calc_create_tmpfile_reservation(mp); resp->tr_create_tmpfile.tr_logcount = XFS_CREATE_TMPFILE_LOG_COUNT; resp->tr_create_tmpfile.tr_logflags |= XFS_TRANS_PERM_LOG_RES; - resp->tr_mkdir.tr_logres = xfs_calc_mkdir_reservation(mp); - resp->tr_mkdir.tr_logcount = XFS_MKDIR_LOG_COUNT; - resp->tr_mkdir.tr_logflags |= XFS_TRANS_PERM_LOG_RES; - resp->tr_ifree.tr_logres = xfs_calc_ifree_reservation(mp); resp->tr_ifree.tr_logcount = XFS_INACTIVE_LOG_COUNT; resp->tr_ifree.tr_logflags |= XFS_TRANS_PERM_LOG_RES; @@ -985,6 +1201,8 @@ xfs_trans_resv_calc( resp->tr_qm_dqalloc.tr_logcount = XFS_WRITE_LOG_COUNT; resp->tr_qm_dqalloc.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + xfs_calc_namespace_reservations(mp, resp); + /* * The following transactions are logged in logical format with * a default log count. From patchwork Thu Nov 10 21:05:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039329 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E3699C4321E for ; Thu, 10 Nov 2022 21:05:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231659AbiKJVF4 (ORCPT ); Thu, 10 Nov 2022 16:05:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231668AbiKJVFw (ORCPT ); Thu, 10 Nov 2022 16:05:52 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31DCA4AF1F for ; Thu, 10 Nov 2022 13:05:52 -0800 (PST) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL32JR013905 for ; Thu, 10 Nov 2022 21:05:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=xD5mP5dpC4+a1UPW7ituntmI7zdOU43lIZC3jbJvpNA=; b=vC9T5vOWBzz3apxbiWRskcfGFbFE2fgNVh8HeWOG2/fiz/dwq8T9O+xjnNw5H90qESCj 6QsjVHBKehtt7aNeboGEWFP10G9tTuXMaPF32XjiuW1x/GhKTlnM8iea5oxSyOmddxlx ZUU8iUZc64M//OLbJ5MsuAyF2otVixAGxDIKbkyjIaX1+zyhrlnc2BUvlM9EnlCu6OJ8 Jw8vV7ZtfED/Ny2zxgdWn9FTjk6bFlPesL2TOxdtLXOZloJij7YOWz/WCW4Eysa7UToP vSj2N6SUwEQct7rvJpE+oi2NlgU6jmc968SHebEYVb5CYKqdl7yISM7e64CRtlongxtf 4w== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vbg085-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:50 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKeTiZ038169 for ; Thu, 10 Nov 2022 21:05:48 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fjb-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=akSDgHw9ECEi1+0b0Di9FxpTTHE1w1lFcN+oVYNp9tF/Kb9DWF7h8HKvEjEiK0JrjNWlve2eWP2z1jKBqAKA9Ua5lfzGUJDRHfgqBvirtE5DjeWiToH5FIDNIGwAMg4NaJCnTPIimqwEoy6cYTUaPJupeLHYbh/opvRpGZoTXBUtDEhLlHkH6+wF62I0v8NTIlCeTue37YbND8z1chQXN5XRyI9sPxDUUyd9AoPEBa4f+15VBE1mBttrVA9Y8ngSymRGgIiT46l6Ptygaz/Yqd6P6uGfpaPL/fQxo3kHC5mxG91tuFaC9wh/GuPDcwcKavnZXvPcEFvqV5CnNBRL9g== 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=xD5mP5dpC4+a1UPW7ituntmI7zdOU43lIZC3jbJvpNA=; b=nk/RBDvFK4PiGbmmsUevUXvfSmVHL1nW8OPmLJvftriUcD/63VN4mtsQTrftQNz4VnvOMx1TEVIL4AWxF0RB/8MTgWG8kKzcpZTlOy51LB4e5Cx8j3T+6SX+Y5qiO3JjUnY40QY9EzOLSSVbLS8NIkIw81wRKYJr7BvX9TBIkLntpefCTZXiKfTRh2eVK39y/sQyJ302aQLjYnOe2MTmtjbgGRfcX2NZHbIa6a91WxDUB/tY6ea9hx8nzOIoMybssu1mJ6nBHnbzeeZQmxlsFGhrEVvbumnJej0NYGGzbRs5B6K16GFWP30yrg1NlQUgelEN2jvZN3ZNYjvSW0wTdA== 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=xD5mP5dpC4+a1UPW7ituntmI7zdOU43lIZC3jbJvpNA=; b=OZPFCxy2FN2fnPnoid2b3rbSzSrTJRLEMHwLY4u6yGedo4vrBFAjJrufzQfQquEZ+mAaCcZwY9l8MftP7d5c26yaBoV+RhkAo5dAoyd3qX38rf/8Hg6wEYMy/viunTmHYSiUARHvIt5aymVGIUM9Yixlv5iHj0pvKACFkgG2bHk= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5553.namprd10.prod.outlook.com (2603:10b6:303:140::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:46 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:46 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 12/25] xfsprogs: add parent attributes to link Date: Thu, 10 Nov 2022 14:05:14 -0700 Message-Id: <20221110210527.56628-13-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR13CA0102.namprd13.prod.outlook.com (2603:10b6:a03:2c5::17) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|CO6PR10MB5553:EE_ X-MS-Office365-Filtering-Correlation-Id: 41c21e10-a742-4ce5-0bf7-08dac35f5652 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MxJ/ZnKIFzqpITQNjXM7Oxdkt+HXzBfnmXCQJkwd9MSL3KytabuzdMDg9qPvybCSQbcGc71EZfGfNyGuebMCaDp2ay4QX2vWO22X/lAYReS6XPrHiuL4XVXpZN9e6VeS8uwZ/beHCYG9FSzSps87xGzgkWvjtUjOla9Y9zdwbpa+JooP+07FHg7aFYieG7lnHYqOREIDItnenrBhEQhm4d9JwYY7dSrE2f/e0jWwLYQxY2PMq3UknZ5AAuF6YxVOgWpjjCO0kTwR8ZzX1hD7dsdS5oD524u4dieOnZUKx8SR+pHba6t45Ap5WlPo4PemZh56Tp448rHtT4jy6FW6uwQhHEjNBCDPXUAGAfVM9TxlmgPZ/DegdpLH+bcBKQlrIIGBfSlBNIyUfybtetdVTYedgg514nN2WGD9poQNu6vJoK/7Eo1YkNvuhtKcl79KdFbmLKEXfV6PXCRb8R8d3MLUKkeIaque7H4MVmrYs+rtOsr5MQLfDAZ/f61Vvl8XlyhaKKqXblR3Uck4FMBwQzrA6D8pvs0ZMYFIfeOWtxLCUHEQlzbO/Q/Yaptwii9saqAgqo09ka7ESn2XYGfV/TkoYKJjtt8apCbYVzb89HNRhYRxkWk6SngOshcz+yeDgRjRV1hdZ6z0ZDVHpjsQPJnht+SnoVvlE7U5JAHE6lH2zTbH6rOr+FdBJxNtBh/SsTdZPWNYB93O57FiTDFrcg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(366004)(39860400002)(346002)(376002)(451199015)(8676002)(6506007)(66556008)(66476007)(316002)(66946007)(4744005)(2616005)(186003)(1076003)(6916009)(5660300002)(2906002)(478600001)(86362001)(36756003)(6486002)(41300700001)(26005)(6512007)(9686003)(8936002)(83380400001)(38100700002)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UqE9tm0pP350JDE51udI4ExlHcM2I26Xn6nbX57VM4ES0jWv63MRsUY5/MnER+VaQsNLJREK+AdqO5ovRg8CRtyXuzVffULVLQF+1Y/bjsvktMRXqS8uSOquQ8TzFh5E8ZzZvXIlde54nqFQK7pheJjb+Eakso9ABlGx4d70oRkSg3ZmvhM+N+3HhWZBkM5jRHhuBFUtJT1PLg14LnKBy1s27FJZNdo7yeMYAFrKTMC2otrly7RuFm6RKPQTbwaQswin+cEwZKa0QlrikP1HuRQ1N26Aw166OSuniDn0+oLZ9B2irURp51Fi4NNoLZAtrV2ixk40nCrKwDrJZubiHVCzv9B49N3V7JlNHX2bmwBtZ5QhZARX1k+mZqJNLOvynXe4+VTK3B40k0FcWMDsTNQGHFp8zkpoMJ0N6AB5RwKmQQjp1RW//yG18htEYmJjNHUlBRiQIta7h684g21R+oYP9mRLEn5oSqJbBHvheD6kfeV3Xc5XtwZRMWCAcjRDWduoVVWGGoawFA8bmYH2ZPVO7yBm/n1lWmsf/T5HMPz27uNSoMV/fO8B5U6YXa1XsymEfWMAJlZ/lFq6cg3JJ2E1TAgGLoFBE5mIAlSUZUjnPUJUqf0pobXx8s+rzId44pVw+wMn9xbwOpeilb4chap9GMdYNrf0Avg19skZl8ghDZ5EDswOWHDYv+j8w5cFvD48n4edl66tH9BUWR0j8tALN7MDEGviN2GoQKdFpZmnHoKv/MxEmMQ2TFAc7m4yqrvDCyUj08vv8tRkDMaoi3DKhi1Bz7x2S97ZR3FZiyNvk9856CpCdoK1boe/B1GB0OST/5+FbUouSB3Etma7Rl2yZfdi87JE3xYN6u3FfWyE0R7Mjw+Lpl87zlW7/HKAiey3f0BdDTtZ7qfqO/rk5HioHUGTeU2kGtOCa1x6traRbx+Zr3QVJtSdI1Uq+WUfpzr9FM46F7mgF9j4I1TWKCcPryrGeTg5FSb3qmQLB6Ceqz8RiBeA9FMp7DO/KDPlyUaT3jFiGYma7jLqWMPyCfyJVYPIGa/tW8Cyp1ct2OkO3XYiXQFKgbF6pgN9n3qalmLv+Z10oAqiZ/sEipNVVy1mdO/RxMj4H3m42OFT+cAd7HBewbX+FaqVSrmwkFwUx87MzHeFUAsziSlXiODh5phMqXuMpK+uFU6zkXNH6EE8y7o5NPdw8gymLaIhkW91wHTkHGETjfLWFDrf3NyDbP9V1716MAUKNbrwppjsDNHZ7y3gMJUNuIDdxhIpzmibqqHwE7Akr8Y5AcKsw+jRC7UXvjOAA/B/QhtOIfR0/T8jtojaarMe+qnM8jXz5Sc9jQUY3J3+AqKokZUSmmHxET0ylx0/rHWtVmUhe7Uj74YtY9BznMLadb4OyJT+mdbCA791yoy9unlZfGgoF7n5VRJMio1JaVfwYyXr9VCSgtlfWRb3O9PB0zNwMf2wdtDKGi+DlQ+J+frhKCERAN27l9NQ6/hfD/O4bRiGA8qAcJwLWmpx56JV+hwESXTAyAZcH8IEtsNBUOxH80SmwwHWtpFyG8u5DP2XFmu6Y0KxK1imuRlRlnTfNDfezM7T4ykLenzd1/x5a3lKj0pHd7gSPw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 41c21e10-a742-4ce5-0bf7-08dac35f5652 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:46.4498 (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: RenqjuesNTbmumOqzt6pXgxsY1UeH9dqkedi1dfR5GntVrlOJlTvdj0VVbDv4ThWcguMVOv2K2uTPgCPLZUHyqY1zOXH6e/1BH6RGLQONMI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5553 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: QR9P3OYiJDjHP5rF9_1AitOETo-JT0fN X-Proofpoint-ORIG-GUID: QR9P3OYiJDjHP5rF9_1AitOETo-JT0fN Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch modifies xfs_link to add a parent pointer to the inode. Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_trans_space.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libxfs/xfs_trans_space.h b/libxfs/xfs_trans_space.h index 87b31c69a773..f72207923ec2 100644 --- a/libxfs/xfs_trans_space.h +++ b/libxfs/xfs_trans_space.h @@ -84,8 +84,6 @@ (2 * (mp)->m_alloc_maxlevels) #define XFS_GROWFSRT_SPACE_RES(mp,b) \ ((b) + XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK)) -#define XFS_LINK_SPACE_RES(mp,nl) \ - XFS_DIRENTER_SPACE_RES(mp,nl) #define XFS_MKDIR_SPACE_RES(mp,nl) \ (XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) #define XFS_QM_DQALLOC_SPACE_RES(mp) \ From patchwork Thu Nov 10 21:05:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039328 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1AB35C43217 for ; Thu, 10 Nov 2022 21:05:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231734AbiKJVFy (ORCPT ); Thu, 10 Nov 2022 16:05:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231433AbiKJVFw (ORCPT ); Thu, 10 Nov 2022 16:05:52 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B6E2D7679 for ; Thu, 10 Nov 2022 13:05:51 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL32KR003559 for ; Thu, 10 Nov 2022 21:05:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=LY2usPrVONXyKe6jy28eJcjMv4eVCJzM3cZMl+XrCjU=; b=l1Wc4V6ThUX9VUdTu4JR3aX0Qrl1K6+gJIaLuu8JBSYKbELmuGCa8xDGlDxwDre4Rn4o wPmTunPJ0TYPxwoB4yIF17yyN98JFXzCrYKLs/flhW5hJteHaaJuN1Vf22LR/0y/qll2 J2XhliJ3cT6KH+3IGgCagecz52tLrAtSuO1WhSgzZyaiMuiXErIv2F1GTWhQ5ycgKpRY a2NAlflR5bM9QH4WlgVBj4fcrlZjk0v+qyWDTSglJc29yNiTOhMOFP/RzJFWIOJxQ7wH rail9c+OBb7YdBmxVLRctQjr81dePAds/sA0ifyoGkNp9KVPeuaqh9bLSYhYcmnyw6dk ag== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vcg09a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:50 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKaOfP038098 for ; Thu, 10 Nov 2022 21:05:49 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4fmm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jggBOXsM6fDN8a0u2qhXSDk0Fp7tG7uWn+QDSRqFLmkGbKvzie0q9vEBH9lFDOyqo6DXY66XL6Lu3cxolp3faR4ttgOvZLabpB0FoacHvbSFISVEchwa67m2FPPgr2SOTHP0Q4WEah1UXN/KeSKIOAkcwlZJfbGEMW9p6nXHwOLsYSjibmdhHEhw9s7gnP0MOmN19vVZnF7ZesWgO6f4Z2m9XgbABLc1I7ARYpkl1x+R80g8qrxcbyNU+HrDhy5kvdstFRlH76odjifoYQESlIwFzNrW9rzD58+8vy500fr8MjO5d1oGKgQbnBu9wyO9nYFIVLcjYfrMd5Uz0YnPKQ== 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=LY2usPrVONXyKe6jy28eJcjMv4eVCJzM3cZMl+XrCjU=; b=ij4iGpBq0phO330FpfGkjXuZHzCk59hvtaZf6WH/rW84tU4fZS6tfTpw1KlskBnkjrCtRiiRs1YRftsJaVRtQkaOREy3b9V4RbSlQ5wryWppwx0FuF2LHhpDuAblH4DjhCpPYDq+0L6RQ8SC7P42DcXxdKHn8J/Pq/U/8KyRG1har+xIIJKtXqfOucyWbuBA1aGPBxzwtRFX3s5LPZxrXySViRu/qK8f7sGFc19CAYXKtn2+wRThjfTQx8Lp2D3V9MeU5m7W6KB7zmw9zPBdubTjHPCbQI4QkHt4Cc72ImUzjSF+HDlyKONrta97npPcKWBexUN8uccekB4pIzQOtw== 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=LY2usPrVONXyKe6jy28eJcjMv4eVCJzM3cZMl+XrCjU=; b=cHETvDU6wx0OMbKDskmhTKkRJ9jeZ9ZZwBMGR8lDhXlwXeYBewaQG781YrkBomjBRx/WfznXfP7Uc5Vm0f3+OI4PtS4IqzxKCe0aJ8jnTULxJLTP0FaJutT+PBX51uOkPtny2Rgv7wJtKgLSeg3ehKQmAupbXwhjO9UtXffYQqk= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:05:48 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:48 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 13/25] xfsprogs: add parent attributes to symlink Date: Thu, 10 Nov 2022 14:05:15 -0700 Message-Id: <20221110210527.56628-14-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY3PR10CA0022.namprd10.prod.outlook.com (2603:10b6:a03:255::27) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 9c21b16c-c146-4f51-af10-08dac35f5753 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yjGkYSGg17/a+6iPKxq8Tqnc4g/oh8K3cBjTMB5v+NEu683+oVBOu7EQ+Nmmyb/Wjvco23YG+prRsuCT0TmprzpojGQ55AWQiQAx9PEo+PcR9CY/qIyPjYD/h9CV9kvxTEqj9zuo2EXTEFKsLBNnDR/7a37EFO23YCaR/sw1WNnhwJDrk9Mn69nqpmcDnNptO/pRK8gnbPBe26Ghun/ha0JNd5wqF4r9ZRiLzUVtFOBkyFz8liWPq6TByM4ftu5sPf0EeyJfS8m7APaRX5yrqFf39gQM7hXTenFrUKTYUI7OfJp491FUAO357UBJgqcu8ZtxDdW9igC1j9j5BvMAr3cCvjdJPpFuOH3EUc4Aff4f12rLsf5/LuodYDQemIAS25bAZNoX93fNjWnDHHHV97bUtvNWG+Gwhgb3yZGIvUXd/Mtqz4iZUFz/ZTtLwS2CQaAhzt5gPX2fq8lBDapVaxnfrhpkqatLDDaeyb51Hwfq2Vel6nbPOzW4U7FN/0D3wOO/VayKB2v5dORfd9dmWa2E8pPT8anEDIcMwm9RUMsMoRZ+RBJiV4g/odEeRm2yim0I3sg4xIsKYBC/OF+pBlInkIRfpgSOCZqRx7gw7hUM+b8iZfX++CBwki/CNGGY25POBNXyHNemNs3xviGGuSV268iUGPkDsoalRk0G29n4FoBLpQeg0Nl6l7BVbO8N6hvaKw57OaGTYtYLzz0crw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(4744005)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hAFba3mdhhg8uerPt/BiO3LEVhNd0yaGfKzP3U33egNtE17y4Q4Dkm4x3AUZK/w3GrW9rvWml+6PqC7GVOzMOACFbD2rg//grK5QLa+VJKarA+CNf21ByD9/YO9T8NCT803mPHf5kEeQBnM5xUth9/H8NEeeZJj9WC6/TAjhiu0bSke7JuXL3I4sXlt52HUjuOfew0c9FJnk9pPcxNtdM2hCoW4aiek6jVmm3dGtAhfwhDQS/QNhtPY6g1DI18p3EbxgmoElA2awsFohmJeN5VN+tFHLcCMMB356z2ahDupUl0C+Ukk/3FKlnUYa+qN5K/53j44te9rgDyzx0DfXAmmT5j4gSrziFDdWLP7pKdop0u5ytr9vNeZFSCBZUSn+HkoAN5JTNlmH3UKd/4rnROaPoG+TZde+s5Q6M9tprSKq/zeJLSg3LR7rJJZzpmTgaxroxSAfanLs2yfXNItBKdo4S1ThOVv4QrH3x8jxeXlwuJnq8JE4pJN7j6YnS+oRfb/2MJJP3BJlpdvIRs5Fm574WwAe7MOG20HVh6/KTL4RyFMof6nfs1qGYOSmuIjuwNY3jyOWUnFk4512HTLDKpleKNH5VvRag5sR38PnVk5DPTUf8QE8vtpOJynhBHgni6rwN+VmX8CiVdmkqryoibCzJT66kddRhOkXX1L9H/T1xX9H3FBks06pzHWmIA+YJid42tfi4evhfWZByCaCIpotXs2QUFGU2S2IaQNZUtzw/10L8+D7zGqHpF5rplKP0VxN2fJtdLv4VxeNVR4KxO0ZnQQ9vtiXRf7MoQ/anpUgizmzqGQLkJ+t1sTdiJeuWYdXOpozQdtM4JytEfdQAd8E2F+wqML3eq2fITEu0wrAHF/E96BQihLHIjWFImkUvUBPPkX2e1YbAlc2GaZP8HaO7fzmrR9oROA6+GkjflNsZYFxfYLNRp7sca3R0StjLpqRIHCEYSRmiqjJf4Rv6c+NeZnegVaK4C+pJSzy09K78kqL50jjLcHW020b4pp3B7K2znRltKhh+f3psrLS0Ml2HaHTVLwasZH74cAvpHFq/epgotSv8p/nWnqmXO5NGQ87OYLqfFMDPUXBdNrOICHXP4Z6qzaqAds5iDkOdV4TxwMtq/qMzr7uke4pV0hbkjHJpQI7fI87l6nBjxe+6XhMJdC1FiV0CtuAxrc/tfdS/qC21V2pgtxE7w8RMx6A/aU2U7YUMNoZqR+B66rsgqWvmK1AZKuU6TLwSSjgd7UH6eO8Fmb9RTOI7uAPVMlK61XCv9sIp/ez4M1EDhith4NUWubgFBMNBQ6O9XcCKJEahJ5zPXu59gvQS92yitwkBy0RvgUaC/BC+WOksqgaFmzkrnIPhSu6GIf36d3ewyBacM0WBXVSL3wGubPY0eNCsTeU6nY6l5Zc7fcaj+22XCMMlBws7tf9G9KaDgfhph/22xk5dB7qYloeiszjPPDMMn5DPHQlR5qAy36QE9KRBqJZ66QlfXxtQMSgf++qYdPm6gbUQk5PypwneOM2slQezHis+/xFl+FLtFNtkd/ZqFZadc4MiPOcVZxPCw6/yr4/fccxamQDpBvC9ncbAjJDefPbgZLBRHVkonjKL9PDQg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c21b16c-c146-4f51-af10-08dac35f5753 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:48.1539 (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: plOxcpBmzecSYRJ2Ur4gleDV/kFaSSIanxt5hEM1Tfv9GIKHlToyWv4nLSrE27imHBwKAmQqL1doPiZNTzEvnAsfpsRkMg4wAG4er6z2tW0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: C42btKS6_5mTduYBMWwYrsRmhNY9Th77 X-Proofpoint-ORIG-GUID: C42btKS6_5mTduYBMWwYrsRmhNY9Th77 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch modifies xfs_symlink to add a parent pointer to the inode. Signed-off-by: Allison Henderson --- libxfs/xfs_trans_space.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libxfs/xfs_trans_space.h b/libxfs/xfs_trans_space.h index f72207923ec2..25a55650baf4 100644 --- a/libxfs/xfs_trans_space.h +++ b/libxfs/xfs_trans_space.h @@ -95,8 +95,6 @@ XFS_DIRREMOVE_SPACE_RES(mp) #define XFS_RENAME_SPACE_RES(mp,nl) \ (XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) -#define XFS_SYMLINK_SPACE_RES(mp,nl,b) \ - (XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl) + (b)) #define XFS_IFREE_SPACE_RES(mp) \ (xfs_has_finobt(mp) ? M_IGEO(mp)->inobt_maxlevels : 0) From patchwork Thu Nov 10 21:05:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039334 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0FBF0C433FE for ; Thu, 10 Nov 2022 21:06:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231831AbiKJVGL (ORCPT ); Thu, 10 Nov 2022 16:06:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231777AbiKJVGK (ORCPT ); Thu, 10 Nov 2022 16:06:10 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C40414AF22 for ; Thu, 10 Nov 2022 13:06:08 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b6j006965 for ; Thu, 10 Nov 2022 21:06:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=/BFdHHVim9wiwtUmjR2DdhLeZr6RBKMox6U7uu8ndlI=; b=wOS4/Hpb7z6aPlDZwNK4vvtNp9W2C4gfIXG8KVhtyOsVtfCR639Y/Gp9mqMAsa7SYBqv GDfEWjFSpZ1wnU/wwVGIule92pqCjBd7hwoGbristNF9vPQBtji+GcLjsGuKezeyZizk mR5fQu65EE5+m255MlN3pmmmSsdPlXJM3rj3XrjflBmq/YJNO8u1ZmDj32fHRKC8tNF8 qBGRLPQwXUAz87kAHH2SncffVxiquweM7wOkQ3XcH7Y+wFJWf4YMWhA22PFh7rCMvFgu 0on9GUnsx9Kii20mOGCG/bcspEfd8X/IPANI32M7ragyMF54Qe8jzs6PF2w3wOJuA2rr Dw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r15q-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:56 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKajiQ004079 for ; Thu, 10 Nov 2022 21:05:52 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2170.outbound.protection.outlook.com [104.47.57.170]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpctq0gtw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EmUhLoM5X9HRIK6ZURFFc/cmAwRSf4pcapgUhHQ5imi9gmG12mj6977W+9Yo5M1GZLzjBRfAtQFHtw6/mWMg9wY/pPVaZ6SG6IkuW9h/AvmBqt00JFpObzD+mLHhdJ0FwJqUUo/27ix+22VpfC3PLCyGOqOD0xjiJOjrRIi62BfjTmTMskDEufU72Baao+hFO5fWRgLQOfTAr6iDcxcnS/53/JXpcZuT5YJShlMgbB+py8Uppwrb0Gxu/PmkJXtFXhjv4ULnC4uxbbvsWifwuMHNWphWneY3K25CMmH6if6hd/VPeeA8Q9/mGgPOGRSOIWbeuvaMpVgYiNmHvwzlLQ== 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=/BFdHHVim9wiwtUmjR2DdhLeZr6RBKMox6U7uu8ndlI=; b=RrVotR66yw56CUzSrlC68+3cEQEsfyVqZ8/swWXkUMpOfWdhtsgjTZOnO0Y882vZvEgkeu6hbb1s6fJ1k0hkR9xEDCqDZ4JQg6NzDn+MZOLJB+ceYQvPi9RH723h8AV/2Ct/HQ8yJ0Xf2pEnkAz+dQOSAGEDenernVnoN3ox1ZJ/5bHu/bZZNs1mo7W7AVd6YGlGU1+gZSWgUmz4msEeJSdUPJHWSpNwQImsi+bx+x9TkaXx03bU6O61C6Dqt0cAgaXpGdkPtfdgYbbTxVajgm4cYBw62m0v8UmMZVEYf9y93+8snBC6/TGUqsmtsqbEk2DZ5/lSbFveocJ+bBpGoA== 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=/BFdHHVim9wiwtUmjR2DdhLeZr6RBKMox6U7uu8ndlI=; b=e4na4hjxuCxMsGLjkmkGbCOtTcm2U98HcdCRLo5XNH+a6aV7cdtHsB4D+q6m14uew2FZxibs6y3kjefrnjUIAsAIaxpNA4plKNeI2FGPsOZWwAlFW89FZujDEagDaxV36elyc7O7AYIWRke/HKI2PGcWvpb8pXd3vmN94X0/DkU= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:50 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:49 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 14/25] xfsprogs: parent pointer attribute creation Date: Thu, 10 Nov 2022 14:05:16 -0700 Message-Id: <20221110210527.56628-15-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR13CA0106.namprd13.prod.outlook.com (2603:10b6:a03:2c5::21) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: 93bce6e1-4d19-472b-11cd-08dac35f5823 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7NFCSRm1+jv1eo6pYMlq1VTnHCFYCirzprQ+T9IWD1qMxmgY/+cBi5NxFD24weMZ/VrA9DQHlKcP2uyD6CuOsIty+uBwk6cbX+XFdAV2x37c/GQM0wdhfHGy1BgnKtmFu/sDbHbQ2AiKZPMDeFTNZubWxkRCQpnNcqFajpHg2JI80fMd1j2O22pJkVE53icxemnNLF3rtIMXrRzuE/GraHUB+/TA65WOOVt1GeMDg6ptK0/DTioj7iWR4r6NEBtUD3lZp4m2NmVmNNG55xeCBdJUVV7O9PoJ9LRstsTzrGgUDNz1MiRzVU9p40K3vcVomr2nk8XHBEidQZUpJ6aHO+1ohYV8S/WvoLRG8RqFYZnck473w/OgOhwDrcY5zZdPtJGOSPeiOX6R2Skp6+KnDJFBzCZX50XcckcMGNaXjGBMUSv3rWSmWQ0wapYkN8xMEHOiX77Czs2HC8z2ki21FmgMO9Py3a38Aohh6D8eeERPGLNKu3XgRoTNYBppeHMCahr4Cu9Y9NJtCO84viM88iZJ2ECZHTeGtX7FORxpZFseC8jTmjkCP2R15iSauVabXjPe7ARlGkXmaePaj4ls+83EAliWv0SmfryfiepYw++pc1m0uEQRYYUGYCXxl/9wLcpZL4dY5nezkED/pLCkN5giAP7JEXS10OjLJfWbbSWeiIj/pRBje9hyotmOYdomGcs2RfcTosyvlVvPaBAq7w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: K7B5O9SBJkeawKsoWXl0NkTJXHeiAqu0Q8533RPDesRe9TNLH348h7ppLnpCoBgtysnS4vHC7qfI35M2cUvy0/lx6r0x2dg/Lr36mYSN9FJJAOQGcFIZgupKDovxb6DHbeLhvpgmV/KxzwjSoSxxsPoliGtnab/fFYUmXRzwAa8XR23DWnq4afEHpMSiF3vEreoplNy5yo3D+NZpVFIAkr4TFnZevfR2WBWBYL2c9+ll8EEeI4LAplk5jAZ98ArB0YJuZa0NoVPSe8wDv6fr7vjMnlVJFuIHKw7wfvGyYS0ijGr8tBNppgOuLZtk0M83mURkKXrhsCMXDSwjI2V22eQMeBemQtBOIGYUAyAoo59Jw+xC5WrncvBgOBXOFhQmADAWcTbsjAqQRnRjFhIlt0dSDDvPfoi0nhYnZnilZ/pn64GStyd4NRxpBQAQFIZn/nyB9VEgP+4fh+WlXevNbp9byDM0yR9C2P4CG0NcGQjYkKCHFJqHYDU/DRy7oHkkTWzMCp/aC3LID2vT8b1DSiLlWGqKWn5B/ual1XzWpq9JfLeQnw+wqOuzoJOWDABzkUw4BlStO4JBQfp4gSixfWd13lMPHvLQzbv48rkpWKyZ9oOEBlyaugugpBvQEL5m9VJumfFfprq1+mIx97dG4nmHSfn2E3PpneIcnLNOmJOsbIOhZK7EWZy695xoqX8sk7aTZX36dAR+NW6PPlzBCStV68cN2stfpw3n5jKHP2S+PJIumxJljduATEYsZJsjvkUo4QXpil5iBRqKpogHVIiMV7r2T2Jn8pt21D4eZzz0riGJwqXp67ioziIVvB5iNnUpi0CJXm/rwCVQk2kD6rrAe5fzEjZc9rnf2eeFYtKXxCSWuIhc96hhy5MMWLrWY4fRAfMA7GIuL9eMey9thKLBI0QiiAPBSA9JpUq7zL6WAZdoQYVtfKJlg3nCCKbtxewaQdeKUojWptV/2qPfVWDWYwr3KeTyFobbzTz7MZX5moroMXjvHArWcwU8nbreI8fMHQPNiP2p7w+fZd6HcZDs+1BpDd5gHPTdZnrPigVchBrocA4vzUs04ACly+vMZLZ7MaAMv+lopXi+2+IY0t+TIR5/rAeUNFmdtUBYEt0PYwNcxt956cftoQSyKBkGaJVEwqH8hUiGlaJDiPRDNRlHa9PFKjXr4m44Tp8BxXyF8v7juAAheFhCGGwEBVS/gu9wQGR/6DghI56NVQyvwtniK4AWRT23WykF4at1RnJjg/SDOZ9Po8RkwZ/wHyx67e3LrpcourX/igRqCTwg6XjwIpmAEs+PqueH4Joh4eKoHmGRDn9I5m4pkqV1mLGoByltSleyfr2/8bzEd+ybyljP+nkv/mIUsD8AnNlGR+iNaVXlqoWoPTrURQgQ4fwXM+8OizaPLObET7kXD/TASDQcAky1Y8iYK/uAxbhrVsNkZfr6u95fcyK6CrrYflBYZAVgiCHj5MVXfbD1VTE5Sfg2nZrWsDzlYSD9/EIL4yOgriJMrJbI1R5kQfCR2HT2ZBk0upi8xpS0U1bfbmw+IzjYXPYjgaKY0rk/0TY4x+vq+92y9JFVFjvoghjXYOmdiZ4prAy3rgurgzA5xrZ9dw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93bce6e1-4d19-472b-11cd-08dac35f5823 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:49.5292 (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: ZHOtPv98ZEjadId2PU4Ra9rA1ajAEvY9/fSh97herewQ6GmqUCM8iD3wdBvCcNn23f186bItZpZq/Ewfrx3vbylFG5ChfW99fdlRvMU23P8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: Mt7RdN-khbaeCw3gyW2gogVpsSDPQ4zw X-Proofpoint-GUID: Mt7RdN-khbaeCw3gyW2gogVpsSDPQ4zw Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: bb5cfa7e0c8eff07c62b1a28e0a4ea1d2561e0bb Add parent pointer attribute during xfs_create, and subroutines to initialize attributes Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- libxfs/Makefile | 2 + libxfs/xfs_attr.c | 4 +- libxfs/xfs_attr.h | 4 +- libxfs/xfs_parent.c | 150 ++++++++++++++++++++++++++++++++++++++++++++ libxfs/xfs_parent.h | 34 ++++++++++ 5 files changed, 191 insertions(+), 3 deletions(-) diff --git a/libxfs/Makefile b/libxfs/Makefile index 010ee68e2292..89d29dc97aab 100644 --- a/libxfs/Makefile +++ b/libxfs/Makefile @@ -45,6 +45,7 @@ HFILES = \ xfs_ialloc_btree.h \ xfs_inode_buf.h \ xfs_inode_fork.h \ + xfs_parent.h \ xfs_quota_defs.h \ xfs_refcount.h \ xfs_refcount_btree.h \ @@ -92,6 +93,7 @@ CFILES = cache.c \ xfs_inode_fork.c \ xfs_ialloc_btree.c \ xfs_log_rlimit.c \ + xfs_parent.c \ xfs_refcount.c \ xfs_refcount_btree.c \ xfs_rmap.c \ diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index d5f1f488b4ff..edf7e1ee37e1 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -884,7 +884,7 @@ xfs_attr_lookup( return error; } -static int +int xfs_attr_intent_init( struct xfs_da_args *args, unsigned int op_flags, /* op flag (set or remove) */ @@ -902,7 +902,7 @@ xfs_attr_intent_init( } /* Sets an attribute for an inode as a deferred operation */ -static int +int xfs_attr_defer_add( struct xfs_da_args *args) { diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index b79dae788cfb..0cf23f5117ad 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -544,6 +544,7 @@ int xfs_inode_hasattr(struct xfs_inode *ip); bool xfs_attr_is_leaf(struct xfs_inode *ip); int xfs_attr_get_ilocked(struct xfs_da_args *args); int xfs_attr_get(struct xfs_da_args *args); +int xfs_attr_defer_add(struct xfs_da_args *args); int xfs_attr_set(struct xfs_da_args *args); int xfs_attr_set_iter(struct xfs_attr_intent *attr); int xfs_attr_remove_iter(struct xfs_attr_intent *attr); @@ -552,7 +553,8 @@ bool xfs_attr_namecheck(struct xfs_mount *mp, const void *name, size_t length, int xfs_attr_calc_size(struct xfs_da_args *args, int *local); void xfs_init_attr_trans(struct xfs_da_args *args, struct xfs_trans_res *tres, unsigned int *total); - +int xfs_attr_intent_init(struct xfs_da_args *args, unsigned int op_flags, + struct xfs_attr_intent **attr); /* * Check to see if the attr should be upgraded from non-existent or shortform to * single-leaf-block attribute list. diff --git a/libxfs/xfs_parent.c b/libxfs/xfs_parent.c new file mode 100644 index 000000000000..80318ae5745b --- /dev/null +++ b/libxfs/xfs_parent.c @@ -0,0 +1,150 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2022 Oracle, Inc. + * All rights reserved. + */ +#include "libxfs_priv.h" +#include "xfs_shared.h" +#include "xfs_format.h" +#include "xfs_log_format.h" +#include "xfs_trans_resv.h" +#include "xfs_mount.h" +#include "xfs_inode.h" +#include "xfs_trans_resv.h" +#include "xfs_mount.h" +#include "xfs_trace.h" +#include "xfs.h" +#include "xfs_fs.h" +#include "xfs_da_format.h" +#include "xfs_bmap_btree.h" +#include "xfs_trans.h" +#include "xfs_da_btree.h" +#include "xfs_attr.h" +#include "xfs_da_btree.h" +#include "xfs_attr_sf.h" +#include "xfs_bmap.h" +#include "xfs_parent.h" +#include "xfs_da_format.h" +#include "xfs_format.h" +#include "xfs_trans_space.h" + +/* + * Parent pointer attribute handling. + * + * Because the attribute value is a filename component, it will never be longer + * than 255 bytes. This means the attribute will always be a local format + * attribute as it is xfs_attr_leaf_entsize_local_max() for v5 filesystems will + * always be larger than this (max is 75% of block size). + * + * Creating a new parent attribute will always create a new attribute - there + * should never, ever be an existing attribute in the tree for a new inode. + * ENOSPC behavior is problematic - creating the inode without the parent + * pointer is effectively a corruption, so we allow parent attribute creation + * to dip into the reserve block pool to avoid unexpected ENOSPC errors from + * occurring. + */ + + +/* Initializes a xfs_parent_name_rec to be stored as an attribute name */ +void +xfs_init_parent_name_rec( + struct xfs_parent_name_rec *rec, + struct xfs_inode *ip, + uint32_t p_diroffset) +{ + xfs_ino_t p_ino = ip->i_ino; + uint32_t p_gen = VFS_I(ip)->i_generation; + + rec->p_ino = cpu_to_be64(p_ino); + rec->p_gen = cpu_to_be32(p_gen); + rec->p_diroffset = cpu_to_be32(p_diroffset); +} + +/* Initializes a xfs_parent_name_irec from an xfs_parent_name_rec */ +void +xfs_init_parent_name_irec( + struct xfs_parent_name_irec *irec, + struct xfs_parent_name_rec *rec) +{ + irec->p_ino = be64_to_cpu(rec->p_ino); + irec->p_gen = be32_to_cpu(rec->p_gen); + irec->p_diroffset = be32_to_cpu(rec->p_diroffset); +} + +int +xfs_parent_init( + struct xfs_mount *mp, + struct xfs_parent_defer **parentp) +{ + struct xfs_parent_defer *parent; + int error; + + if (!xfs_has_parent(mp)) + return 0; + + error = xfs_attr_use_log_assist(mp); + if (error) + return error; + + parent = malloc(sizeof(*parent)); + if (!parent) + return -ENOMEM; + + /* init parent da_args */ + parent->args.geo = mp->m_attr_geo; + parent->args.whichfork = XFS_ATTR_FORK; + parent->args.attr_filter = XFS_ATTR_PARENT; + parent->args.op_flags = XFS_DA_OP_OKNOENT | XFS_DA_OP_LOGGED; + parent->args.name = (const uint8_t *)&parent->rec; + parent->args.namelen = sizeof(struct xfs_parent_name_rec); + + *parentp = parent; + return 0; +} + +int +xfs_parent_defer_add( + struct xfs_trans *tp, + struct xfs_parent_defer *parent, + struct xfs_inode *dp, + struct xfs_name *parent_name, + xfs_dir2_dataptr_t diroffset, + struct xfs_inode *child) +{ + struct xfs_da_args *args = &parent->args; + + xfs_init_parent_name_rec(&parent->rec, dp, diroffset); + args->hashval = xfs_da_hashname(args->name, args->namelen); + + args->trans = tp; + args->dp = child; + if (parent_name) { + parent->args.value = (void *)parent_name->name; + parent->args.valuelen = parent_name->len; + } + + return xfs_attr_defer_add(args); +} + +void +xfs_parent_cancel( + xfs_mount_t *mp, + struct xfs_parent_defer *parent) +{ + xlog_drop_incompat_feat(mp->m_log); + free(parent); +} + +unsigned int +xfs_pptr_calc_space_res( + struct xfs_mount *mp, + unsigned int namelen) +{ + /* + * Pptrs are always the first attr in an attr tree, and never larger + * than a block + */ + return XFS_DAENTER_SPACE_RES(mp, XFS_ATTR_FORK) + + XFS_NEXTENTADD_SPACE_RES(mp, namelen, XFS_ATTR_FORK); +} + diff --git a/libxfs/xfs_parent.h b/libxfs/xfs_parent.h new file mode 100644 index 000000000000..9b8d0764aad6 --- /dev/null +++ b/libxfs/xfs_parent.h @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2022 Oracle, Inc. + * All Rights Reserved. + */ +#ifndef __XFS_PARENT_H__ +#define __XFS_PARENT_H__ + +/* + * Dynamically allocd structure used to wrap the needed data to pass around + * the defer ops machinery + */ +struct xfs_parent_defer { + struct xfs_parent_name_rec rec; + struct xfs_da_args args; +}; + +/* + * Parent pointer attribute prototypes + */ +void xfs_init_parent_name_rec(struct xfs_parent_name_rec *rec, + struct xfs_inode *ip, + uint32_t p_diroffset); +void xfs_init_parent_name_irec(struct xfs_parent_name_irec *irec, + struct xfs_parent_name_rec *rec); +int xfs_parent_init(xfs_mount_t *mp, struct xfs_parent_defer **parentp); +int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_parent_defer *parent, + struct xfs_inode *dp, struct xfs_name *parent_name, + xfs_dir2_dataptr_t diroffset, struct xfs_inode *child); +void xfs_parent_cancel(xfs_mount_t *mp, struct xfs_parent_defer *parent); +unsigned int xfs_pptr_calc_space_res(struct xfs_mount *mp, + unsigned int namelen); + +#endif /* __XFS_PARENT_H__ */ From patchwork Thu Nov 10 21:05:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039336 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DC8FC433FE for ; Thu, 10 Nov 2022 21:06:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231737AbiKJVGQ (ORCPT ); Thu, 10 Nov 2022 16:06:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231849AbiKJVGO (ORCPT ); Thu, 10 Nov 2022 16:06:14 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41FA05FC5 for ; Thu, 10 Nov 2022 13:06:14 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b6o006965 for ; Thu, 10 Nov 2022 21:06:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=bisSlqZ0JPhpWwCtmLUn+PlJ2Rlgy/CxbnYC2+xFTAQ=; b=Z3ow52OMtqauFQkrRMtKx3Y3zCg82dUDVn9f8m+99B0yK8vULlae4/NifMhuq0zTvkyZ xzgbafBb74Qi3e9FFkZWb8p6PE+fxi7B6Tuh57+ofjdQp7myCXzptKYh4+7UJymlaSB3 oxAeb/UVuX40i/DjWB4HsT+FNz3gTbD1NMmAeBIWVnMC1YOPq5r0rHsnmfhKSaTbBxSM azc2pVY4GPoo9f9azP9srxfnWbyiR8iuyRRFDZuaCZ7AoE4U/kFmI3afYjKmw1d4yphR 17F/Ro9KM3E+eMwOcGrsa/fC9jpdOT5tNDRaPrBjN2414vRiS0YZxtmefA95goi57+ut rQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r15v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:05 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKajiR004079 for ; Thu, 10 Nov 2022 21:05:52 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2170.outbound.protection.outlook.com [104.47.57.170]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpctq0gtw-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A0hgrQ8lq0VADLyYNRNxIaJJm2+EIaD7So6QaI54mzvHE0i7iRO2w2OZ3JmKIbU/JomXY6t7Zv+6W+ppKUOS3pz3rarP0lpmKcwG67SHl4kvUcJbcMcGomfo91UHQd0YINz56LhE+D7wIA4LlRZIBJNcF9DhmoChsRd/BL6EOdKFQ7eSo7bLtj9K/TqmfEwYuo7g2ddRPCVGy8nY/TtnyfRjt8E58MB4JWb1ny/PCQq0xUiZ3kM1ddcXiZEruoPCw5fE62SW7fFZPbl79HLVof95mC456sQqmlISl3vGdZjnWrQiS541op/TyCaozFtk4CYe/aj9D3ayr6NBiBUGVw== 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=bisSlqZ0JPhpWwCtmLUn+PlJ2Rlgy/CxbnYC2+xFTAQ=; b=kHkJaKWW/4Wk5ouOGeX5p/36acgGTLv9E87sNSF598dxng+0QMgKdKt5PVcRRi3R1yPP1cLv7Eo0Z2cSOkNf/Q2B/ubW4SKjdHBxBEA809X6HNiqfCX9Ogi70GOB+0AH2QQEA+9mbPt3SkkpRrgbOg8PN++TTluwUJTvfz4iKTw5m15OTm4XVy7OYsolpZmu4TSBRaLkd+4D/Hw3aPE4ptotvdTSo+rPNhTPGZpu7kzcjr/qHD9xOQylHbDo7NCR4glrUTdUFlrylqX/Lnnl4JWSCrN8BkuEWdL7qfKq4n0SNGuJ8zXtt8BM0VOSUbM+0nl73z0wMWMDxk1eohykxQ== 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=bisSlqZ0JPhpWwCtmLUn+PlJ2Rlgy/CxbnYC2+xFTAQ=; b=BBY0ezcq1+EOSrEoHRSZTX8WsbVkjnLC5Kf66odLbEo72G5a16ZS2Yey2cxVUPJax1fmOvkTJmML15ftRenM7wNkJNZUHCGQeSjY8hfzsvi8Uos50rMhZ+wjAr8SiVyO+tqv4Y0X6T2uRCfGc83b30frVnVZOUvoZxzaeMu9HSY= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:05:51 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:51 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 15/25] xfsprogs: remove parent pointers in unlink Date: Thu, 10 Nov 2022 14:05:17 -0700 Message-Id: <20221110210527.56628-16-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0065.namprd03.prod.outlook.com (2603:10b6:a03:331::10) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: 2572b676-2699-46ba-1d7e-08dac35f590f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9Wq/cBWnBxmCRsgb6yD3Jl1qysz5LzsjMYDMpb6/Qe1K8vimThP+p1ZlSL1hgW45yPmMAG4TDsNRWaeW+1xtwpYgv9xVuUpOJV+9737kEF0JehT5Wy7S/zn24hSh8nZe6ALWx5aOevxtt91K6IeCeupKWLZCXZHPU7FCT+SpNwfFSrGeWC1zWTRC9GmXJSleGaxLSsQq5EjNWKZZsnFte3W2hyCwoaDCOGbpib0IWs1wDYRzc3SMKgW92B4zKqhaoT4ZJGLXH4uEK9YVzYoC9pgaAEStXPkp8rmkGQdMO2n473x4KFVdlFkgjp/fgkWYZhKn8AT5g8JSPft1iN1f5Ec6Qhcfr9uKy210kVMrz8A+vSVLZE9LjGJYCC/xUzhu8js5pZUOsYtjff3TgcKZs6AwM+eKNJim80cxq1w45wLcVUzq9z7+sww7qNN869NHppeafTiQr6bsLV3piEtKufGdlmT2XfwcUDsrr7BIEFPtAzXxzLGJJLj0L7W4eTV3gpOMcm8/jyXXMia5jKuqh7ODJh02KitAeqdX6w7TOT1Qnyor3R1IqDazSbtPUsrpCZKcrO70EyDU3clmirvkEnfr3/klAQQTBpKP4DoA6W13/e0MsAjM7M3HMXaEFlyOXNVKdwzctJItbg3OoI/5N0Lhp3BP40ytvRgb0bpbYmcBASs4r+7eQJr/BvSNAc3bzgD6x6c6x5qBJXqfX+/uyQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HH+HNwXKuUC+axDHPL5K66k60cF5sZf6HRwXqCSRdzD0/dWyzhBx2mZbb9NU/tvMMsdeAkupi++bJjD8wNxr2HlU6MNDAhosiHrn4emdN3Y8CBIkwaCV9xUA9S0mZvVFvKA7acn6Tae+iHkBkP9WeOL6ZsmIYykIfA48PcNRMpdQMfM9xv8hNv/lfyI7nqE/CEchO7vaHalH6oTDA+VQjT09xDNhTtXjtXjZg3qvo/XJsoydhajF1pbaMe1Ww58R6/nWPZCL3rwMDTQFsS5jP8Urz9M0iVIakca9m07xJySgFU6dm3Z+OZjf6kMW9m/zQN4u0MugVX+1VPNJO4Gs4Q7X2ZOvnf8O14bup/jluk6Lk2uQY2Ai+vlSR5Qcwd20W2pbkzzaOwpAVRXiLCcxDKeeTLJOn2vURQGQXm6ADxVs2B2jLaIxOJQ7d/7uyoQQjKv/u/9ZD7HHJVkMpF9JgngKL0tlvkmpRWW0JD20/jdpKryyaQGo0eF72vPv/nWYeNNMSYyhh649jKTLx8x1FCzDMetGZS/fKbyDLKAOTa5BGp+3QPga8NxUygneoMPPzmsWtrzdPcs7wqt4cGnP4jdj5kwGmlaxTimq/YYyTs+E61TvMk+JnsL14045q1pGHYh1WSzp1y47Oj1DdUm1ku9HHgDoq12feb9/BXWjKMC1+Hmi0M7CES8tDHwSJE6ByjaMApwTEnWLZkreOO1u4Z/YT4idQWMaE4ZpHcv/n4PuMd9fbhJSK4ymLKuRS04YWja+3drqnRqbVPcrDW5iOcdYURll5sX+C1l7MeypXfP58arb1wE0n5kq5CJG7LRrXBceovGMlzr+Qfj/J24DbOC+DNNIioHfgQUT/+tu+OtURBJQXXowAMKtwDLCkoT/Y0GtKbaWV4HHis6YmWquMQ2MNLmkmgfp1IkEXTJpu520rpXbMcCzVFQjnjh55wG5/wyjvqYpcyeQYI0AfAM/+CAuYOnlZbXWF7uZc6Bi5LoY0GiDUEvO9MRUgPS8mfcExBAIRUFHgWQC5+KCSqpZULhlxDn1IWMpggJUUsU0ocARIbonFpTT/U7lWOu+f2pe602vC4YISVViBFX4xWiywSnAbY0dPnoyyjcwwCgOT83tGxxI5xg8tpkQMu7Zukq9LIs96QZT3XBYbLn1GMEqA11bHTYiqVW9Ccln2wCoNDOlQSS2x7eIhIAj0RYkGv4I2U1l9nT+hZKm1ZNM83iIktYltvC6b/aj5krIMTiYD4zMyHYtO3WX5dMg4amOFyU/OXQYAwd4FSUNtwrLTebRXkPdxdwyhnPTbcoStSI17rfDxJ2sLMJ9A1qrCRgbKJnim2bnqkmDAk5bCARcgNqW8yL62tUmVaYVbS8J31IJMHrfvudmIUzIdqBmZ1cfhJVoyFlmrWXevktlux+a+fFuEU+VWEsIXyLHovJhWlI/Z1J0IXrRNbMcH/EVjZXNznubfZvMwnEWZFB5wVm8s3+Yz0S8TYZSUJ4dlbYM0mUg0nKb+AbqoeQrZSUoNHlyylCMWHIPB8sZmFAsZkxoLm5jn1ZJo3iwQqcjzECi8Xp1UVfQHMIdEDs0ixJH6pEPATokzNUDIk3jlXomp4k/WTDchw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2572b676-2699-46ba-1d7e-08dac35f590f X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:51.1537 (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: c0ij5r/+jSn+FzessqhfPJ9MoGps14FILuF+/SkmT4te9Pv4N8tuHLGBXHUsG0Ecsh1emLsTOS7vFazwu3ItVyMXmMj6JOCbR7e4eXMMnd4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: 0vofcaJs7TYp3pmCy9_KsVrpPpXGNIJs X-Proofpoint-GUID: 0vofcaJs7TYp3pmCy9_KsVrpPpXGNIJs Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: b9ffc3d05531820aea30b2caf3368c312d8b2508 This patch removes the parent pointer attribute during unlink Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libxfs/xfs_attr.c | 2 +- libxfs/xfs_attr.h | 1 + libxfs/xfs_parent.c | 17 +++++++++++++++++ libxfs/xfs_parent.h | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index edf7e1ee37e1..04cafc5f447b 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -944,7 +944,7 @@ xfs_attr_defer_replace( } /* Removes an attribute for an inode as a deferred operation */ -static int +int xfs_attr_defer_remove( struct xfs_da_args *args) { diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index 0cf23f5117ad..033005542b9e 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -545,6 +545,7 @@ bool xfs_attr_is_leaf(struct xfs_inode *ip); int xfs_attr_get_ilocked(struct xfs_da_args *args); int xfs_attr_get(struct xfs_da_args *args); int xfs_attr_defer_add(struct xfs_da_args *args); +int xfs_attr_defer_remove(struct xfs_da_args *args); int xfs_attr_set(struct xfs_da_args *args); int xfs_attr_set_iter(struct xfs_attr_intent *attr); int xfs_attr_remove_iter(struct xfs_attr_intent *attr); diff --git a/libxfs/xfs_parent.c b/libxfs/xfs_parent.c index 80318ae5745b..4da2e1b1a1d2 100644 --- a/libxfs/xfs_parent.c +++ b/libxfs/xfs_parent.c @@ -126,6 +126,23 @@ xfs_parent_defer_add( return xfs_attr_defer_add(args); } +int +xfs_parent_defer_remove( + struct xfs_trans *tp, + struct xfs_inode *dp, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset, + struct xfs_inode *child) +{ + struct xfs_da_args *args = &parent->args; + + xfs_init_parent_name_rec(&parent->rec, dp, diroffset); + args->trans = tp; + args->dp = child; + args->hashval = xfs_da_hashname(args->name, args->namelen); + return xfs_attr_defer_remove(args); +} + void xfs_parent_cancel( xfs_mount_t *mp, diff --git a/libxfs/xfs_parent.h b/libxfs/xfs_parent.h index 9b8d0764aad6..1c506532c624 100644 --- a/libxfs/xfs_parent.h +++ b/libxfs/xfs_parent.h @@ -27,6 +27,10 @@ int xfs_parent_init(xfs_mount_t *mp, struct xfs_parent_defer **parentp); int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_parent_defer *parent, struct xfs_inode *dp, struct xfs_name *parent_name, xfs_dir2_dataptr_t diroffset, struct xfs_inode *child); +int xfs_parent_defer_remove(struct xfs_trans *tp, struct xfs_inode *dp, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset, + struct xfs_inode *child); void xfs_parent_cancel(xfs_mount_t *mp, struct xfs_parent_defer *parent); unsigned int xfs_pptr_calc_space_res(struct xfs_mount *mp, unsigned int namelen); From patchwork Thu Nov 10 21:05:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039339 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76A46C433FE for ; Thu, 10 Nov 2022 21:06:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231886AbiKJVG1 (ORCPT ); Thu, 10 Nov 2022 16:06:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231897AbiKJVGZ (ORCPT ); Thu, 10 Nov 2022 16:06:25 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0151358BC3 for ; Thu, 10 Nov 2022 13:06:24 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b71006965 for ; Thu, 10 Nov 2022 21:06:24 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=Di06yN/J5gxhRRjbBdXnIYzpKmWO//LWU7suDDP27Hk=; b=nXdEzWeoAG2nay4kb3mH/hdLru0dHNVUosd2iL0pBmHB8nGnIttwrIM3NKzJHIKk2UjQ C0tyQoc/qY0w/EHDXmhUgIML+wHxXoxL3tMAPufD5sSqVJyppVPWC2xZTdWHtP77T6oC 1ElZxJqLtab5s3lFszHZ3w+lF6USAsSjYV4ZIXA8T1jVLP9pAxTdHBA623O1Lo5w8E9O oCNoB4PSjhErORskkkLIk1moBbrUimQ+iRij3lQAzuqFFV86PQbFH64GoFjAiro6UTNZ cpFawSLDkw0U4ZiM0GXoH8wX15zc/kNmDIOf2m9KfRHjnqbHZEhRGnQQFEbImHTun/6/ 8g== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r16a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:13 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKhsFf023087 for ; Thu, 10 Nov 2022 21:05:54 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2172.outbound.protection.outlook.com [104.47.59.172]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcysesn3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:05:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K1M4JDryrSYLYNAN4Igfm+jfnafXnWet8gvBRGswvETovOKUwFNNINE6c9Lt4sbfZ7Mk8C4Q/Npii9gCLS9SwmuFIX+w8HzCEbRojfhDFeM2zIN/vRPqSYZ5jySQYziq8wgaahe5Acsob2tCaaE6z8hofwZKUMZrJ2hoVhXN+55KVf5/lMq743CDGmEOYGKABdJaUUfJLE95c8ymal2H9xlSGrzLdeel3cXhoKUcKt29ZiecWqAl3fU22Ua9ZCUmByn0Z6hBZjsqvOOpVedm/uFk34Ncy9u8OgNbFRI3+OSpvH2iuItV7vY7h7CURsahqEV8Ljhm0NvQ7i6whG9g+Q== 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=Di06yN/J5gxhRRjbBdXnIYzpKmWO//LWU7suDDP27Hk=; b=lVrI1vXzdh/abyv3xjmKFoOp422YlGj0KXpPr4BjtT6wlMcRr8+lntt5PS4KhmmRrQAoSknZzPS1s2PefelVk+1im/jf+WyMer0y90e52hgm96BGR3GZXMKk3GQUJGUz1J6yARBcLlZOVednIhROJik2nFHSf02oVBvrpBE4RJUKJXL2YmZuTh+EQouF7VX+FLXyc0TNhxeDsQ3WHDKTPFguZQ2yofQ9xKyCLBZDfIbOSsG6BioQYT6yF0y8cYPW1VD2V4QThVB+4aGCc4fOyXBvVwKu1sqZVLIb8LigM7P43rkgyh8FUQcSphFubiZyJx6j3dHmdHVxzjZPUy+GAQ== 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=Di06yN/J5gxhRRjbBdXnIYzpKmWO//LWU7suDDP27Hk=; b=RCta4PFk/fEwz1wq71QFQpsNxTb2mgKxdW10B5MnZE+utr0B/6KmQPslg0ucOmt0hp1/V5oUi4EOOhgWuZn0ljP7+UzH62UcO1/jRkZfkKbEnq7Abd6oDoyLwqcoqDpMkvrrT8PYzChQgimkSRNjl+4JQeqk7oLbdfVKBXd2Giw= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:05:53 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:05:53 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 16/25] xfsprogs: Add parent pointers to rename Date: Thu, 10 Nov 2022 14:05:18 -0700 Message-Id: <20221110210527.56628-17-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY5PR17CA0039.namprd17.prod.outlook.com (2603:10b6:a03:167::16) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 89b124d2-81cc-43f1-92fa-08dac35f5a28 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WU4wBklfVVsgCBpuh3XKWLNGWs+anoVkJfXXABh44cbDyXrX7HEXq8SOly5WSJZkP4HFymv8YbxJSnWYKZNgFsog6z7hQto1WCOcZ9DnuNouPcA5iUFyfFDBsivYrXTtAvjQP/O6anpyPxMjAAmhuNu2pc0DMBH0oksdimi2Aus3wETc/GwQFTfL4nFK20jXQAJITLp4zPgAsCwzoBQFY+s2TYpywUVJ2zeo+Mn0K00TKWOP3cnm4Yy/yWDF9lvIF80PhNYjf8bPQYMpmsYryB1V6z55Ee033+gTqZMoMUmgISeD7ZjCHbpAFGUinxmD6vwbyd2xdS7p4aSQnJrLdQ/qYCe68yPGFc66DoBBXt8P3b7TEY8ZJMwcR2Zg2LngAKrH61ygl6RaiHJKcXYWU3PaTenLKSj4ceZ0F42dMaetl7QZIhCK4xRbiC3EHJtEtVH3SpqgxFi+Oc80+KAxKKr/+8DDcIbxmL654lrU20n1/ni01p/htBBqHUBCVi3YyQmdraxjl2MJYQRt0o3ugndahZkguphJFJm1URsjCTk1V2aDCMvz08bsgBlEHmG3KhgqDxQ3Qtpzg8o29roCJxcc1yJ+om2o1j8uK56MXd10MEYincpJkpR+vfKKx6qoY1R6YggHTMKXwIy7k6DKPmFBK9ZHjFZ35rR4QLh/wClXVpeccUz78lsZu8eD2Z4dMc4uLdpN58MDqxLRHYoJEQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8qVzSBT8+lpqpyFYQt4N8H+d81nSDmzUIstEB638O3OINekOuCna/YGC7CF/S2Skxd8M25kajRG03BnpI4rqeef5gZPeK9bF/WSqfq1ruwmffbKwYmO11Io1c01ZV4EbGktYHGJIROsFOXZNOH7oc2HTsFJ0nNcF9DoNmkduJqIB4ZLNtx2YDquAT3cE1OnlSx8lp8xC/7v9Yd+tnEtz1kXfNQBESEutL1qjoE7FenO31FlsmE41bt6wUsRtu8Oug6t7bCq9sMaoJzXVVNYHRCBg/vs0jM6UjTn/TrRVswB4OUx7eU5wbsFQa9UZsQvz2qBhRsYcaEUVgPULb7iXvRqFc+BkA8mcvUSLEPtwmiehTfYQyhv8eaeB9bvzwse4f76VjL2RU7O4BPl2Iw+jDl/PpHbMmJAEuhZVx3N8zcj8KlB4JgAdHFCJFsgbDy8GMj8FdTmadAgNdlYp0zhqDFQUapiklJ7KKt+NEiv623jGKgbjIBeWm8whDYrvqeznaPuzT80+jfQGUW/DvxN7wzqIVPP2vHfJVCACdf4o29qPaQKRjAeNJJKdFqZhpu5p2QMnpogSqjv00h7PK75pwsPVBv3PdyMwGj6FG6Jcepgx3r4Xxs0MyDMLhmr8W30bOUv9qPJsZ7CwkOWQDj+Wj9N5odhge6BbaywJNnEwXNnmOu/Mk9S+RuOScAt01ChisBN5psAvBeIGP35oz8n19HPjrf3ZNhi2XmclG7ebpqvoaKgJcRNEdo92ZQx4BfteK/UEc1yNgt8kaWhGqCHKihPIC31HEmB+tAKBpUhjSw/iBPDUy/cGRHDuc8y3UXRoGC5tihlaQKg6ofgmMcNP36CnK89VTL8D3kpMZM8oLKdI4EgxTAej6qFnWfW13lb00h6yzaTrLTyHiJydCoR2jgREasnX44gl7I94Z/U/60KjnBc0pYg4s7apasFDiZQndpSo3l3Q88FSS19aNcxkIluTj6+CCafCL5/gqCd0gGW/NE1XLRP8bA8GgqqRhBWpNnFeIqEr2NCGEdcw4bBYLGSli1CFzLKQk6pnSvRoAffANgxdq/6x33R7eC2IjpPVxIFpuSQsS+nWS+Am6u+z+mV8iwnlswkMjld12EhkKpvhH+QD5T5XOfbOz4a2csnkyK5e6CXQwFadnAdDolBBFc2rLky/u2NED09Bb+1acWdsp8iiQMxkYt+ScJRqPLlw9b4vB+CgIHyMdNwpdyEaukgOcqBLb77cLd2RFnKuuVRLJKxI1Ap1W0G8kvVsWP2OMESlO5ZlP3Xlo2d/jE6Bk7Z6k9ftFVZ5G/bkMnev1vuKMYfIY5hKbua4sJW/H1Stu/xMrgEHoVVvkJQxzLv53O2epp+Ezsuu7ZstXUpSKvLa/uKJEFqfq8SzUvA614HYHWqror6Bc30bKki2ONcNzXkVXCgQaMGEZKzCIgu5qFbqXjPjjtEH941PAJ6f4qrZ7ZST2tg254xL8cWZ+9DqlHTmr244ulbSxOGslJGbB8QGtR3p2m6W/k9h8wUskgWXh/jj5MfZMD5/l98wp2Lgo6q+G3Hff7qJbwbgLnDLBhZDlcFXY4K6RtKRPlVW2bvyNVZTaYZ3kD0gWCiV/BngOg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 89b124d2-81cc-43f1-92fa-08dac35f5a28 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:05:52.9045 (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: iKlp0xjvvr6ZVDm1Vo1MQRnLIjlxZq6JckGBVVmMM7YZ8mLFuZG/ubLxk6WGb/mgtqorTgzjlm27M4+NXqKSf0idjA8ywTzB4lzSeYKVQUM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: D3Bbc88SMjT7cU6yk1Ckh_F5x7mHYcgk X-Proofpoint-GUID: D3Bbc88SMjT7cU6yk1Ckh_F5x7mHYcgk Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch removes the old parent pointer attribute during the rename operation, and re-adds the updated parent pointer. In the case of xfs_cross_rename, we modify the routine not to roll the transaction just yet. We will do this after the parent pointer is added in the calling xfs_rename function. Source kernel commit: d00721b30fd1923f6e9e9c1ca6f2a74cfc4ed5d3 Signed-off-by: Allison Henderson --- libxfs/xfs_attr.c | 2 +- libxfs/xfs_attr.h | 1 + libxfs/xfs_parent.c | 31 +++++++++++++++++++++++++++++++ libxfs/xfs_parent.h | 6 ++++++ libxfs/xfs_trans_space.h | 2 -- 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/libxfs/xfs_attr.c b/libxfs/xfs_attr.c index 04cafc5f447b..0cb76f8f37b7 100644 --- a/libxfs/xfs_attr.c +++ b/libxfs/xfs_attr.c @@ -921,7 +921,7 @@ xfs_attr_defer_add( } /* Sets an attribute for an inode as a deferred operation */ -static int +int xfs_attr_defer_replace( struct xfs_da_args *args) { diff --git a/libxfs/xfs_attr.h b/libxfs/xfs_attr.h index 033005542b9e..985761264d1f 100644 --- a/libxfs/xfs_attr.h +++ b/libxfs/xfs_attr.h @@ -546,6 +546,7 @@ int xfs_attr_get_ilocked(struct xfs_da_args *args); int xfs_attr_get(struct xfs_da_args *args); int xfs_attr_defer_add(struct xfs_da_args *args); int xfs_attr_defer_remove(struct xfs_da_args *args); +int xfs_attr_defer_replace(struct xfs_da_args *args); int xfs_attr_set(struct xfs_da_args *args); int xfs_attr_set_iter(struct xfs_attr_intent *attr); int xfs_attr_remove_iter(struct xfs_attr_intent *attr); diff --git a/libxfs/xfs_parent.c b/libxfs/xfs_parent.c index 4da2e1b1a1d2..f9513cde3b01 100644 --- a/libxfs/xfs_parent.c +++ b/libxfs/xfs_parent.c @@ -143,6 +143,37 @@ xfs_parent_defer_remove( return xfs_attr_defer_remove(args); } + +int +xfs_parent_defer_replace( + struct xfs_trans *tp, + struct xfs_parent_defer *new_parent, + struct xfs_inode *old_dp, + xfs_dir2_dataptr_t old_diroffset, + struct xfs_name *parent_name, + struct xfs_inode *new_dp, + xfs_dir2_dataptr_t new_diroffset, + struct xfs_inode *child) +{ + struct xfs_da_args *args = &new_parent->args; + + xfs_init_parent_name_rec(&new_parent->old_rec, old_dp, old_diroffset); + xfs_init_parent_name_rec(&new_parent->rec, new_dp, new_diroffset); + new_parent->args.name = (const uint8_t *)&new_parent->old_rec; + new_parent->args.namelen = sizeof(struct xfs_parent_name_rec); + new_parent->args.new_name = (const uint8_t *)&new_parent->rec; + new_parent->args.new_namelen = sizeof(struct xfs_parent_name_rec); + args->trans = tp; + args->dp = child; + + ASSERT(parent_name != NULL); + new_parent->args.value = (void *)parent_name->name; + new_parent->args.valuelen = parent_name->len; + + args->hashval = xfs_da_hashname(args->name, args->namelen); + return xfs_attr_defer_replace(args); +} + void xfs_parent_cancel( xfs_mount_t *mp, diff --git a/libxfs/xfs_parent.h b/libxfs/xfs_parent.h index 1c506532c624..9021241ad65b 100644 --- a/libxfs/xfs_parent.h +++ b/libxfs/xfs_parent.h @@ -12,6 +12,7 @@ */ struct xfs_parent_defer { struct xfs_parent_name_rec rec; + struct xfs_parent_name_rec old_rec; struct xfs_da_args args; }; @@ -27,6 +28,11 @@ int xfs_parent_init(xfs_mount_t *mp, struct xfs_parent_defer **parentp); int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_parent_defer *parent, struct xfs_inode *dp, struct xfs_name *parent_name, xfs_dir2_dataptr_t diroffset, struct xfs_inode *child); +int xfs_parent_defer_replace(struct xfs_trans *tp, + struct xfs_parent_defer *new_parent, struct xfs_inode *old_dp, + xfs_dir2_dataptr_t old_diroffset, struct xfs_name *parent_name, + struct xfs_inode *new_ip, xfs_dir2_dataptr_t new_diroffset, + struct xfs_inode *child); int xfs_parent_defer_remove(struct xfs_trans *tp, struct xfs_inode *dp, struct xfs_parent_defer *parent, xfs_dir2_dataptr_t diroffset, diff --git a/libxfs/xfs_trans_space.h b/libxfs/xfs_trans_space.h index 25a55650baf4..ab2a07b70e3e 100644 --- a/libxfs/xfs_trans_space.h +++ b/libxfs/xfs_trans_space.h @@ -93,8 +93,6 @@ XFS_IALLOC_SPACE_RES(mp) #define XFS_REMOVE_SPACE_RES(mp) \ XFS_DIRREMOVE_SPACE_RES(mp) -#define XFS_RENAME_SPACE_RES(mp,nl) \ - (XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) #define XFS_IFREE_SPACE_RES(mp) \ (xfs_has_finobt(mp) ? M_IGEO(mp)->inobt_maxlevels : 0) From patchwork Thu Nov 10 21:05:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039340 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45613C433FE for ; Thu, 10 Nov 2022 21:06:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231765AbiKJVGc (ORCPT ); Thu, 10 Nov 2022 16:06:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59246 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229536AbiKJVGb (ORCPT ); Thu, 10 Nov 2022 16:06:31 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C97765FC5 for ; Thu, 10 Nov 2022 13:06:30 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0b79006965 for ; Thu, 10 Nov 2022 21:06:30 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=0eSwMuWNKeFoDRrYUb4vEDWDCKm8Mp8tDBZ5j9ICFQw=; b=k3qRA6RHxgePKOChDjzAOx2cvaCbvZISi7bY0NEVDS7TRXTI5SaztAVl0p0+K4SUbqGd fE7usQF9R14WIeM8jjxmyPQp9wE+JMI/thg5+NLl9qEekvG+nR78s8bUm9l79i6Fv4RI /FvQaoWVJ/QFoQd+WNDvpt9jBWK+SgD78dR2H/Yj14NuKyQ605h4WG4Mu1Y0gB+Yo88N d2a6ghnkhbZwL3k3puVSJ3gMBPTIo8XE+UANgTCdZDOfBo1kZNqqLynImG4fZT1PkLxc y/mGR161ryMs6/laLOmNn7OcLeyz7NNY/V4SiARz6pW2TDDJZaFI2WmLMNUbPho44ZCy 1Q== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1a2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:28 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKhenG009770 for ; Thu, 10 Nov 2022 21:06:06 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hbcx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cda0PZ+0vzZVTMVHmdFsDZRlosu8YPW8ULIRAYdwSG4jEmDnhGrGi57mZPYxJCBnzP29qgGMEnf6vSxU+sZKWinexK4jE5erIESFQ1FkFDdFVlTRYSAwZPK2VYVOqQi62+eZyJgyUvnDmOgtS3aVlN0s/nG8kynyyI4uCz8gOXykNyyJDswxR25uzOxpRR5GBow49nTYGr7CZbG9Ks4okqWfDwPVGYa13EcPISU1eX4ky+Iu62mMWqv+ZAefg7G/0wLIh7f1QHO3lOxQ6q6C78UMvfEm6R2d5iqIpePYDK02YG80Q50jkxQSYxuoJJTdHGLMn6cq+Wr2MFM61UUq6Q== 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=0eSwMuWNKeFoDRrYUb4vEDWDCKm8Mp8tDBZ5j9ICFQw=; b=WgSrJHNBu9XBojbaiX5mOUzZbfHb7Pq9auQ/0teNzP1QMogOoNlphkFbID+UbqYvUAwKINEuYMCbu6zA34uSkuCshp1zuw3uZSZEoL2CWOcrw4Xs7zXxLBWLH38wjHBUr+ILmp4fkmyUxGlvdh2e07ZBhiGa4scoUuuuDAbfbnlbq3L+vnmwxC32uRqxDF98i8EtchNOgZL0Aqc6P+/ChegxS72oui3z3LABn42JMZ1Zn+75cXfOh23IlIMZB+EifjVEpBbE4PNVKrnZnt38tbbE/T41q+qZc9mElnp46bjR80rrVq7RslfxhAMU50kvUE1WxlJ8EZsFOWBzlW6Y5Q== 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=0eSwMuWNKeFoDRrYUb4vEDWDCKm8Mp8tDBZ5j9ICFQw=; b=LLOl5bsUKx+bcCs1qVwX7T0tK1yZlfM7HMYa1b/ZuJypaJRatlafMSTFt/OK0Lcatx+kvnn16r9XR6htZmvH4OODuQiEOiTR4PMsjdO+HDHpCwtAnYX1bZwj0MwD45bLNRjxnSDCEzczk++NMcaiAUCx4Wxb7e4Kl8lPjRvw3LE= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:06:04 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:04 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 17/25] xfsprogs: Add the parent pointer support to the superblock version 5. Date: Thu, 10 Nov 2022 14:05:19 -0700 Message-Id: <20221110210527.56628-18-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY5PR17CA0067.namprd17.prod.outlook.com (2603:10b6:a03:167::44) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: 7b152849-b0cf-4ac7-630c-08dac35f610f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6Y4IoBLPqg7XKgb0/+QIuL7h7jSPeaIwkHCBcXlkqNBR9loTbd4++LEK6FjjiC8Nb4Q25GrBC4NrQZvxQpoqIY/GfVQTbWFYn3lvttEAhvWVuPZvgWWBjP2wfR4q6F6hM1o8tJN7TKAYyATF6F7W1Jzm3gBCOk3skHCJAOKPFM31kywXa7uMDdS/DfeWC4h4GJGGMW7BkOrs+I+k7iUdRy0kinvdoGLRhHsNmX/10T/0jmNjCfGNwLluKyRjYHPb+DqLymp35K3vF2uLyqs2WgJdEbLhGE7gkVmxws7h3ucYmwwRO2oWCD6QsuAJ2mtOsEM+JTKPweiVLX15vzJ4uUbKVSCLCuJoi2CtW9WjnYd8+3bYW4MWLKHmjGArc5pHbeUJJDzF1s0Hwq0M6MB6rGpiNRV2P91FyE5YT9jpBQ3zCfC1rnGhrs5y4SIoUCaFerw8Q+1tnoY97oWIReCGNuERR/rc99vgvzZyDvn/qluKl0rooy63VamCeJ07a4XmavvpVCVZFzWgxEzZmzEAklYVlz8vmranCJLM03vLop4NHVQpJfvBrkvpU4GOia8YhNerOLAneMceQyG7FJq4LG4Qd3U19VGdbA41dKdormy6rCtI+Vea+j0dQdIUCruQTGCNLCBmHfifWLmHTL+0RnmUKKfkKIPGxqkZB7zxnjGhseTkeFXMFILajbz/uBa/BQITQVaO+xi5WlBI9PAAaQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kNvELKtVcz7pWCiW8EArzTOE2HWC/rILqkRsy7hBgN0nQnJ7sOURzZOXCxuV2pjocdESL9Dr8rMRRJVvqh1kkOJ2KCP44x7VCwRprJxvbxYqj+jborLwuWHD6SLD9lJMukGgU2bkibMND1o4E+oZpw31eOKYN5AASB7/nR9/zEmJw+jwI3ADMrFZC6LVaxvJriw6taemRfXbZ59s+lEHsZetDEXlMJFiVuGUJhdGQrukH4Ex6UzIuaUb06BOFcvza+wQ+tfVyNyLVQVQDgvF6D8mwukrQrDOQllW+sC8FRZLzEwwDA7PJOcPIYBNzLUHCGQEB46D0uK3DEsUq8E6trwt8rOYf5AYa/4Xhq6ApJg0aXEXTrIwCpktfPG833+aujwqMjHO+z2BWKJ8vzza3cQCOUvWMAqOoWsfr+tXG1Xd2WwZnbAsb/qicLKT+8ZLq3F1nNj8cu0PYSA+0VV+UazNAiFLoIwBlkYVBEkslbz0QSHrZ5o22AS3N0hnxQPzJ0Bh+9LcPtvEO+0IFlIb0ZdZoKOdbHVrHjybau2WhDQjRHITXx4i8NAZHwThSRVh7ctyBDKeMFP1Hd1VKWQG8ytgQ0gUqlORv3AAuc+XUR4q3lk9jLA8egIpx7LF/nyANRRiu9+mIZYiYqgvYLjojONiwuBEk7NtFJnXm+64nb9A91IwMxsJGsb81xFCTQYRH6hE6jwDxYCtlbqPsNKyijaF8mOlyiyIz87Tv+lz3f8FeRrkvWAVAhzI3FaLxzbxebuoqjtmB8Zfi1DszBOS+iTVGbhxRO7bb1FuKm4dc5JvNUD5bzZ5+tLiRyU334LQA9XcZ1lqPaVxGoA/pOUWngC4rvbf6WLTw5Q3IblHwrdixdFIeFcrcxy6xRKiF6JwUDXs9AqG1ZzT1cEELriUcJY4dmnHY0YeXBCzK9zfQe8V42kIjBPNZLm1l8EZUe2HpKl3s82WdLtiSWHXWovvd19pHesWB3naFhe9Iu7jLl2kDAiBQsnZQCLWzUuMI3dxeTHRkmXq56o9KIbFk2xx7nzR32IjJPGqP6Vb1P5mJV5K4MBY7hPuBxhGTpeFZenLSYkD078QrMOE05fLanvTDqaqGbzIGHFazMaBSd4M4VlTrvwaWSNVgbk2zlJsmfTjAvTPH0h/Qnru4BuzP/XUt4IS0yyCCNYa4E7JYgVsfxFoIGoU1ngJ2H0QB2AjbL0V8s6dJcRsh+4AoCfCBDbAN93QiNXf7Fnwa1szfB9oigt5XeLS9NVgaw+6df/hD5eWuQG5cp6IL8LSsOR7N18ZGS6oBzhCStelnkGpuZAZPDTTkOZ6YGOxfUnoX8jVhiomnd3HAxPv6QJ7ZfaYGvLjp6OFPWDny3IWEl3iVGUTv/QbXvELYHIst1SSbNNhYhMU7hSM32wqKzQKN93pqOmc5w/nSoFQsdN7gQHykrELBE5V/WpEQ6sPPF1AyGWECDFM3SkhF3G0Nx4verFU31kNllliIHKOrivFMtQCqZvcPqVlTjbfXRBdvY/Jc25FAsXkzcYUupbLeSzFJVab9If2NhzkwDO7nkA+yRBL+PPdywB9EGEuAkQFRlfyYK0sniPl+kbEXBXRufuQ+EvV7kiRpw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7b152849-b0cf-4ac7-630c-08dac35f610f X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:04.5147 (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: /wPcuQvnGlXXptGZgEITBzUe3irJz9PPSK/1M9z7esnf1gE1S1WzRYouLHIJFAUCoY3pF3xylBfbAj4ESKVxpvbkBIIhI61/r5spklinAko= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: JzUf6OijUOhFbiwAYd3AW5pJoqgAgMsh X-Proofpoint-GUID: JzUf6OijUOhFbiwAYd3AW5pJoqgAgMsh Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 724321b7f1c737ce880ea0e6fa4422ad13c4d440 Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- libfrog/fsgeom.c | 4 ++++ libxfs/xfs_format.h | 4 +++- libxfs/xfs_fs.h | 1 + libxfs/xfs_sb.c | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libfrog/fsgeom.c b/libfrog/fsgeom.c index 3e7f0797d8bd..3bb753ac9e39 100644 --- a/libfrog/fsgeom.c +++ b/libfrog/fsgeom.c @@ -31,6 +31,7 @@ xfs_report_geom( int bigtime_enabled; int inobtcount; int nrext64; + int parent; isint = geo->logstart > 0; lazycount = geo->flags & XFS_FSOP_GEOM_FLAGS_LAZYSB ? 1 : 0; @@ -49,12 +50,14 @@ xfs_report_geom( bigtime_enabled = geo->flags & XFS_FSOP_GEOM_FLAGS_BIGTIME ? 1 : 0; inobtcount = geo->flags & XFS_FSOP_GEOM_FLAGS_INOBTCNT ? 1 : 0; nrext64 = geo->flags & XFS_FSOP_GEOM_FLAGS_NREXT64 ? 1 : 0; + parent = geo->flags & XFS_FSOP_GEOM_FLAGS_PARENT ? 1 : 0; printf(_( "meta-data=%-22s isize=%-6d agcount=%u, agsize=%u blks\n" " =%-22s sectsz=%-5u attr=%u, projid32bit=%u\n" " =%-22s crc=%-8u finobt=%u, sparse=%u, rmapbt=%u\n" " =%-22s reflink=%-4u bigtime=%u inobtcount=%u nrext64=%u\n" +" =%-22s parent=%d\n" "data =%-22s bsize=%-6u blocks=%llu, imaxpct=%u\n" " =%-22s sunit=%-6u swidth=%u blks\n" "naming =version %-14u bsize=%-6u ascii-ci=%d, ftype=%d\n" @@ -65,6 +68,7 @@ xfs_report_geom( "", geo->sectsize, attrversion, projid32bit, "", crcs_enabled, finobt_enabled, spinodes, rmapbt_enabled, "", reflink_enabled, bigtime_enabled, inobtcount, nrext64, + "", parent, "", geo->blocksize, (unsigned long long)geo->datablocks, geo->imaxpct, "", geo->sunit, geo->swidth, diff --git a/libxfs/xfs_format.h b/libxfs/xfs_format.h index b55bdfa9c8a8..0343f8586be3 100644 --- a/libxfs/xfs_format.h +++ b/libxfs/xfs_format.h @@ -373,13 +373,15 @@ xfs_sb_has_ro_compat_feature( #define XFS_SB_FEAT_INCOMPAT_BIGTIME (1 << 3) /* large timestamps */ #define XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR (1 << 4) /* needs xfs_repair */ #define XFS_SB_FEAT_INCOMPAT_NREXT64 (1 << 5) /* large extent counters */ +#define XFS_SB_FEAT_INCOMPAT_PARENT (1 << 6) /* parent pointers */ #define XFS_SB_FEAT_INCOMPAT_ALL \ (XFS_SB_FEAT_INCOMPAT_FTYPE| \ XFS_SB_FEAT_INCOMPAT_SPINODES| \ XFS_SB_FEAT_INCOMPAT_META_UUID| \ XFS_SB_FEAT_INCOMPAT_BIGTIME| \ XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR| \ - XFS_SB_FEAT_INCOMPAT_NREXT64) + XFS_SB_FEAT_INCOMPAT_NREXT64| \ + XFS_SB_FEAT_INCOMPAT_PARENT) #define XFS_SB_FEAT_INCOMPAT_UNKNOWN ~XFS_SB_FEAT_INCOMPAT_ALL static inline bool diff --git a/libxfs/xfs_fs.h b/libxfs/xfs_fs.h index 1cfd5bc6520a..b0b4d7a3aa15 100644 --- a/libxfs/xfs_fs.h +++ b/libxfs/xfs_fs.h @@ -237,6 +237,7 @@ typedef struct xfs_fsop_resblks { #define XFS_FSOP_GEOM_FLAGS_BIGTIME (1 << 21) /* 64-bit nsec timestamps */ #define XFS_FSOP_GEOM_FLAGS_INOBTCNT (1 << 22) /* inobt btree counter */ #define XFS_FSOP_GEOM_FLAGS_NREXT64 (1 << 23) /* large extent counters */ +#define XFS_FSOP_GEOM_FLAGS_PARENT (1 << 24) /* parent pointers */ /* * Minimum and maximum sizes need for growth checks. diff --git a/libxfs/xfs_sb.c b/libxfs/xfs_sb.c index fc33dc4a2a68..fc222fa1e0ac 100644 --- a/libxfs/xfs_sb.c +++ b/libxfs/xfs_sb.c @@ -171,6 +171,8 @@ xfs_sb_version_to_features( features |= XFS_FEAT_NEEDSREPAIR; if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NREXT64) features |= XFS_FEAT_NREXT64; + if (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_PARENT) + features |= XFS_FEAT_PARENT; return features; } @@ -1185,6 +1187,8 @@ xfs_fs_geometry( geo->flags |= XFS_FSOP_GEOM_FLAGS_BIGTIME; if (xfs_has_inobtcounts(mp)) geo->flags |= XFS_FSOP_GEOM_FLAGS_INOBTCNT; + if (xfs_has_parent(mp)) + geo->flags |= XFS_FSOP_GEOM_FLAGS_PARENT; if (xfs_has_sector(mp)) { geo->flags |= XFS_FSOP_GEOM_FLAGS_SECTOR; geo->logsectsize = sbp->sb_logsectsize; From patchwork Thu Nov 10 21:05:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039341 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05957C4332F for ; Thu, 10 Nov 2022 21:06:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230247AbiKJVGi (ORCPT ); Thu, 10 Nov 2022 16:06:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231849AbiKJVGe (ORCPT ); Thu, 10 Nov 2022 16:06:34 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 61D134AF21 for ; Thu, 10 Nov 2022 13:06:32 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0bY2006962 for ; Thu, 10 Nov 2022 21:06:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=4M+pBw66Yvqg+vEgnEQ3LeOltQ4xPCg9tq8L0ftRoJI=; b=ACCEFOUQM+qGqr+Im1vw8+r24LiK+Nf0ndWngSFdE7vyXZV6pIzwwbvSzooyePhpGtxZ LTj5SdpMWD9oE1wNKOJY7XPSfrsSLPQJqLqki1ryZPkfWh8C3woFZRSPlzDQrfoClC6T DUOOZZeQ7ixyfIRb6YN4b8ZICD3JWqnfHg5mEXx3tMkpKtE+azRNr72zJlsy1INWkW6x n5cKE6RW2/crYnle0KFc/rgm6MVjE7l5nyi6BGMllsisjri9VekyqwAka1kTQnyLqaut Y2gI/J0ap2tW4CXoQBueXQjgydqJX8gNmmRgqO52hA9d9GsJTlhp/jJc2gwXar/wYAGg jA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1ab-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:29 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKdQqg009706 for ; Thu, 10 Nov 2022 21:06:07 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2177.outbound.protection.outlook.com [104.47.57.177]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hbdr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IRbpN/rZcWLsgBHQiALdDaSpdVwzmJRLIsOkprKJ0voBt/qoLA10xWFrzN+CdLd2Guwrd0nwI6V39QNeZryHA5zrx8bltiff6/YdkUhBuleK23JzS2oXHD0arqe64EM6sImJNvAjsjD1l7uoVJlAnVcudMxR8F14FlTzZU86USEdho0tWfSiGJ1p0hDntPakRLss0zIKeQW6e0U3FJk+rma0GejEVj/rXzzDCGwluiJsqCKCGyLl8wELQaIhzdC/p61MOkp5P/4rheIi3QTtPhRsewF5ree0yEW/CWs7EXcN44sJCuuWSb4MFw+xlab31+oqbdFbiQnh4GOzMK4Rhg== 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=4M+pBw66Yvqg+vEgnEQ3LeOltQ4xPCg9tq8L0ftRoJI=; b=Pz5lxWfGrRI6RyaAXd8sp1SEYzpXJz6CV2hAL8gSkPZGI14Ez5aKVQaZN+5I1U1jOmF3nHs2Ycrfp5khTnE6ja4IaHFotgXBhIMA1iX82qTVj5cIEO6T4Pjc0B+7VmjW82nE6N5asglSbko/70PeWLSbl82S6a9s1ulk1fraFZmCg+qATHCt9R2kM0AU7Ays/M63lARXEvx8wIHD81cDSlBKGgAIz7Ad8hyLG4nJnKiYoKDExNgl96g1kaa3nts+9LkukZZ6Gp7tLJp5+mqRCYvHn+Fh9x3jBJtDAQiD0TOSe9lIHSzoQBoFIFBig9bqseTOBtvB8CcAyAD06D5Jmw== 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=4M+pBw66Yvqg+vEgnEQ3LeOltQ4xPCg9tq8L0ftRoJI=; b=cE+2WnKPcED8XATwsfKbqQn4EZudqYZO5l94ypCZIB6DhdxOxUBqVvhWGmzRsc/ddaB7FdA83wcfVT1tbxMJ+jI4QxGHn9E5iRAqFZNAVgYArmiM8Yxg0I8+AKhHZ2ZQFoWiaZDVigcKXHIbe4AQMdLTBpY9u47U25/Et69NTzk= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:06:05 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:05 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 18/25] xfsprogs: Add parent pointer ioctl Date: Thu, 10 Nov 2022 14:05:20 -0700 Message-Id: <20221110210527.56628-19-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR05CA0121.namprd05.prod.outlook.com (2603:10b6:a03:33d::6) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: 037bcca1-5e8d-40e8-77d5-08dac35f61da X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zE/dDKXXrg+GRM7+rx1JDVxQg2FUzXd1ExeiC/Wwryc1m5Oc80snWbdTcWAnm6AOTTQ7SzbduckmC0gCXdeXrVXfTryHWX+K58nZo5mWyxrXGLymjLAbR9w7yPXDocPwlsJmdWYxd34O+wg7tVKmA1yTH4H39nAcLGKgpnpKX+yrTNIESafi0+igbe103o0rTdoFAF7g+uKA+HnvMgcdoBtourfiid/zSGn9NFr2Az9YYWmPri7s7aKioqFuq2X/4gXhf9435ae0fIRzJJK8V4OuU+unlsUxNvJNvEfJUxSM9dxsHUCL4qAtQIOchGP+COK1S8BkS5ijejiptDwmATO5I2xTErpfmd2DiTdUvTANyAYlqZrv0ORaKi3HsVQYM+vKnZKOO4bsvxbPDI4QdMXWTCaPyOVBzWt/tO+taSefzUnK58Rbzh7lA313CCIuwdWfZFcTvgjnHG+6r32aqoxdxmeDhh3jpT+n8B9O4ns9TQA/rzojEZ0yQy2net8xzpmIfVo3aRPup/13Wq16rmuoeQHWvfOwBx7bvifMjCsJKFcaTVbREfLtx3fP6AmZM2n87ABTzjwax6NDV5Y9U32D5BPfjCHG8nrNMVya5hTWH0ZctKDkLqdoTxBgXhY5xKialTjGSR6ZBsRTHEnbtJOabXJqSKQkDElQ1Dn4rRMGThhnjQJHRAv5WTFZt2SGq+QLdWBU4fkzXF8HeaLpEQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: f+kMWY5lnEl3n4423d7uN+kfjPT9CNF47BIEmfGaOF8cqQcBs/TdFEFTgMN+56siKrrClCgdJJKV+1c8SuOeL2dy5RGQHSW0qlfSEtH5s1ZUEsgmwXkL2ncYxo4og5Qv1yTX/+IviKhA0PYVdx/WiWiK/yx71ocBpLvKSmSDLeguTXlxTXyIOQrlD9t/fnA/3mtMLHX2ug0ruJ/Pom9JBHKk/vsvkdIMaRI4r7GEavb4dNhRhP5J2bXqh/T4F4uCkHYqwuULmVQ1k/FcAWTNpz64GqkD2waohIKy7WPz8Yw25KoTGtF0sqIM6WSmydR+snSZ3uxzHxCb6w/uvB9tjskwbQgK0j+7KDbreYi4loUv3WT8R0TJsj2GM/JvkZIsg6u2I9utA0drpk5d2y2OinBziuP8yMpRpxMjwPtDjCWTSKNj0IztM7isgRG6wMpyAD4OlqDdCK4MGq1YuB8s0/mN0gOwcBWLxrb4+4quFobNxO3qA9RZesUrfTpWUistAG+OvHwUuqjxxzTRMpUNbaMAXGV3m2AnxgeCADnCo078G3eNIM1T97KKtfgx48NULliyu7mzHJskXYq36e6dNTUhuN/KH4TLirix268+zzVlVjEzo2CgGpTb6mt+NXTFcWXBxtCmXnfhT7poVZ9uRawaax7Hea8Ka6O82r0XUSqgL6xzA+EP8ljikOm8jmbCkpNyJlAgdtEe45S6F+407wf4CHRkEwWnTTTmQL3drtZePgCvYl5I26eRafIYMz4m3Mw20Lf/cLVyyEpab9Ao1fpt1o9/8E/1Bi5znhSCHKWoZBqSqFR1diXPhzZ0rEP/nKSFcNWWFefPD07zBoFqqwNFgnAG+7ZkXRwxd9FTk2cCuSDuWzqqn5VDlIczhm43/sosftlsnsFdIun4jgYrPi4RyrjChX5ptW3zMQE4+h37S0KR/A+0/zkRtsyStJPJ5EfxWlTP0zIiTuYUaLUCmD8rxcNTy4NunSMmdAZpta6y3FIqCn9DKOEJUfNc9IJSWsVnGfmfWzNez9gZYcAgv5phKJCc3ceK+hhoUYC8xNGukKvVt9pOiaywSAwLPTH1eDAJeuqkFhf0osAcmHggccmowbMrsIEe9cvo/BKqZMnkVa4SBwmvJD4vK1jouYtyrYe4NYJssavUdBDwZHXYaL+03hyteoCQV/+Z79GPM3iE9lUUmbfhSKT2stMpy5eLE+cnb4tvz/Nf+13m1BPb1CHdaQs2Z5Pqw6cDcAydLiyeViLx+GP+WsxNrjQphGKZFMg7IrfLIZj3H7lypXq/eyna/p3mGg4dGuKEif8RPaRnQz8MXHtfy+8UFxiHo8I6xHXOVkR48l0LWyYYau+A3ag4szcq28z3yeaz+fSLnNSegHirwKyX5Sl5KTNTCNqWpvVzgBuWOl9MeVwFnPE5tVWBTHU1tv2S6NkUX9+hCZUUrQP5IuWHWw3cKFnIbvA5sotEP85oHTfBXYLbzrsm7cCqhElizMm42DduuGqhbiA+jI2BmWY+2C6uRU4l4iUky8UCoMOYtNkBwlopTDrzHxVVrcJArHxalHUXM0dJntrbMrt5Rm5J9opAkWqOSoHEhoNT2/j1tdaWDn6eAAQp2g== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 037bcca1-5e8d-40e8-77d5-08dac35f61da X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:05.8155 (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: jLHLYr0N3VayBk/5l0q289buEOQB4ldnd+dpJgPhKvnYs/L4N174406PUZcSeyLMZAn36zBw2dkpK0yXLVazBBdcb3sFJrSAg3q5uNZDsVA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: tYAHDjDeXbQRk9RiWwE3o1nfvEgtKgSt X-Proofpoint-GUID: tYAHDjDeXbQRk9RiWwE3o1nfvEgtKgSt Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 5e5cdd593342c5ff8aeef9daaa93293f63079b4b This patch adds a new file ioctl to retrieve the parent pointer of a given inode Signed-off-by: Allison Henderson --- libxfs/xfs_fs.h | 74 +++++++++++++++++++++++++++++++++++++++++++++ libxfs/xfs_parent.c | 10 ++++++ libxfs/xfs_parent.h | 2 ++ man/man3/xfsctl.3 | 55 +++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+) diff --git a/libxfs/xfs_fs.h b/libxfs/xfs_fs.h index b0b4d7a3aa15..9e59a1fdfb0c 100644 --- a/libxfs/xfs_fs.h +++ b/libxfs/xfs_fs.h @@ -752,6 +752,79 @@ struct xfs_scrub_metadata { XFS_SCRUB_OFLAG_NO_REPAIR_NEEDED) #define XFS_SCRUB_FLAGS_ALL (XFS_SCRUB_FLAGS_IN | XFS_SCRUB_FLAGS_OUT) +#define XFS_PPTR_MAXNAMELEN 256 + +/* return parents of the handle, not the open fd */ +#define XFS_PPTR_IFLAG_HANDLE (1U << 0) + +/* target was the root directory */ +#define XFS_PPTR_OFLAG_ROOT (1U << 1) + +/* Cursor is done iterating pptrs */ +#define XFS_PPTR_OFLAG_DONE (1U << 2) + + #define XFS_PPTR_FLAG_ALL (XFS_PPTR_IFLAG_HANDLE | XFS_PPTR_OFLAG_ROOT | \ + XFS_PPTR_OFLAG_DONE) + +/* Get an inode parent pointer through ioctl */ +struct xfs_parent_ptr { + __u64 xpp_ino; /* Inode */ + __u32 xpp_gen; /* Inode generation */ + __u32 xpp_diroffset; /* Directory offset */ + __u64 xpp_rsvd; /* Reserved */ + __u8 xpp_name[XFS_PPTR_MAXNAMELEN]; /* File name */ +}; + +/* Iterate through an inodes parent pointers */ +struct xfs_pptr_info { + /* File handle, if XFS_PPTR_IFLAG_HANDLE is set */ + struct xfs_handle pi_handle; + + /* + * Structure to track progress in iterating the parent pointers. + * Must be initialized to zeroes before the first ioctl call, and + * not touched by callers after that. + */ + struct xfs_attrlist_cursor pi_cursor; + + /* Operational flags: XFS_PPTR_*FLAG* */ + __u32 pi_flags; + + /* Must be set to zero */ + __u32 pi_reserved; + + /* # of entries in array */ + __u32 pi_ptrs_size; + + /* # of entries filled in (output) */ + __u32 pi_ptrs_used; + + /* Must be set to zero */ + __u64 pi_reserved2[6]; + + /* + * An array of struct xfs_parent_ptr follows the header + * information. Use xfs_ppinfo_to_pp() to access the + * parent pointer array entries. + */ + struct xfs_parent_ptr pi_parents[]; +}; + +static inline size_t +xfs_pptr_info_sizeof(int nr_ptrs) +{ + return sizeof(struct xfs_pptr_info) + + (nr_ptrs * sizeof(struct xfs_parent_ptr)); +} + +static inline struct xfs_parent_ptr* +xfs_ppinfo_to_pp( + struct xfs_pptr_info *info, + int idx) +{ + return &info->pi_parents[idx]; +} + /* * ioctl limits */ @@ -797,6 +870,7 @@ struct xfs_scrub_metadata { /* XFS_IOC_GETFSMAP ------ hoisted 59 */ #define XFS_IOC_SCRUB_METADATA _IOWR('X', 60, struct xfs_scrub_metadata) #define XFS_IOC_AG_GEOMETRY _IOWR('X', 61, struct xfs_ag_geometry) +#define XFS_IOC_GETPARENTS _IOWR('X', 62, struct xfs_parent_ptr) /* * ioctl commands that replace IRIX syssgi()'s diff --git a/libxfs/xfs_parent.c b/libxfs/xfs_parent.c index f9513cde3b01..2605704f854b 100644 --- a/libxfs/xfs_parent.c +++ b/libxfs/xfs_parent.c @@ -28,6 +28,16 @@ #include "xfs_format.h" #include "xfs_trans_space.h" +/* Initializes a xfs_parent_ptr from an xfs_parent_name_rec */ +void +xfs_init_parent_ptr(struct xfs_parent_ptr *xpp, + const struct xfs_parent_name_rec *rec) +{ + xpp->xpp_ino = be64_to_cpu(rec->p_ino); + xpp->xpp_gen = be32_to_cpu(rec->p_gen); + xpp->xpp_diroffset = be32_to_cpu(rec->p_diroffset); +} + /* * Parent pointer attribute handling. * diff --git a/libxfs/xfs_parent.h b/libxfs/xfs_parent.h index 9021241ad65b..898842b4532d 100644 --- a/libxfs/xfs_parent.h +++ b/libxfs/xfs_parent.h @@ -24,6 +24,8 @@ void xfs_init_parent_name_rec(struct xfs_parent_name_rec *rec, uint32_t p_diroffset); void xfs_init_parent_name_irec(struct xfs_parent_name_irec *irec, struct xfs_parent_name_rec *rec); +void xfs_init_parent_ptr(struct xfs_parent_ptr *xpp, + const struct xfs_parent_name_rec *rec); int xfs_parent_init(xfs_mount_t *mp, struct xfs_parent_defer **parentp); int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_parent_defer *parent, struct xfs_inode *dp, struct xfs_name *parent_name, diff --git a/man/man3/xfsctl.3 b/man/man3/xfsctl.3 index 4a0d4d08d083..7cc97499e0ba 100644 --- a/man/man3/xfsctl.3 +++ b/man/man3/xfsctl.3 @@ -321,6 +321,61 @@ They are all subject to change and should not be called directly by applications. XFS_IOC_FSSETDM_BY_HANDLE is not supported as of Linux 5.5. +.PP +.TP +.B XFS_IOC_GETPARENTS +This command is used to get a files parent pointers. Parent pointers are +file attributes used to store meta data information about an inodes parent. +This command takes a xfs_pptr_info structure with trailing array of +struct xfs_parent_ptr as an input to store an inodes parents. The +xfs_pptr_info_sizeof() and xfs_ppinfo_to_pp() routines are provided to +create and iterate through these structures. The number of pointers stored +in the array is indicated by the xfs_pptr_info.used field, and the +XFS_PPTR_OFLAG_DONE flag will be set in xfs_pptr_info.flags when there are +no more parent pointers to be read. The below code is an example +of XFS_IOC_GETPARENTS usage: + +.nf +#include +#include +#include +#include +#include +#include +#include + +int main() { + struct xfs_pptr_info *pi; + struct xfs_parent_ptr *p; + int i, error, fd, nr_ptrs = 4; + + unsigned char buffer[xfs_pptr_info_sizeof(nr_ptrs)]; + memset(buffer, 0, sizeof(buffer)); + pi = (struct xfs_pptr_info *)&buffer; + pi->pi_ptrs_size = nr_ptrs; + + fd = open("/mnt/test/foo.txt", O_RDONLY | O_CREAT); + if (fd == -1) + return errno; + + do { + error = ioctl(fd, XFS_IOC_GETPARENTS, pi); + if (error) + return error; + + for (i = 0; i < pi->pi_ptrs_used; i++) { + p = xfs_ppinfo_to_pp(pi, i); + printf("inode = %llu\\n", (unsigned long long)p->xpp_ino); + printf("generation = %u\\n", (unsigned int)p->xpp_gen); + printf("diroffset = %u\\n", (unsigned int)p->xpp_diroffset); + printf("name = \\"%s\\"\\n\\n", (char *)p->xpp_name); + } + } while (!pi->pi_flags & XFS_PPTR_OFLAG_DONE); + + return 0; +} +.fi + .SS Filesystem Operations In order to effect one of the following operations, the pathname and descriptor arguments passed to From patchwork Thu Nov 10 21:05:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039343 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 97045C43219 for ; Thu, 10 Nov 2022 21:06:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229982AbiKJVGj (ORCPT ); Thu, 10 Nov 2022 16:06:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231873AbiKJVGf (ORCPT ); Thu, 10 Nov 2022 16:06:35 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E69EF5654F for ; Thu, 10 Nov 2022 13:06:34 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0bY9006962 for ; Thu, 10 Nov 2022 21:06:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=VS6yeFSWejYTGTeoPTEA7ZHQiXWHfuo8EVwUd98ue58=; b=pLcON5n8QBElAj5Y7boiSTgCyzgwRO03sxuqRmJHMKQmJfiUXdiCcaIuAXx3uakDTux9 vYy4o+4a+trCu8AMMiFhRL/e1voF7P08m3Zk5FZRtuV3pyzuntyAtvCdhQuDaH5lJje0 pCXKdDWIqLX9O7FrfrSEXWppCTi/oIgmQEttlDxiZggqXpTbA3jBTOmourC0xPJQJyXn a/eCDcSJ5Dau7aQVtSdsXOkoxWRKHA8Cxwd/AyN7TRXFEzmu4R18a2bPnmfnE4wFL6M9 jj1FS7K3kmy5Xxw2r7rXwueVWgU5DlEZJuAXqcd3uCBrGUio7RVx78qhWMILjYKlfw1N gQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1aj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:32 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKpxba014959 for ; Thu, 10 Nov 2022 21:06:09 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2168.outbound.protection.outlook.com [104.47.59.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpctfrek5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dV8jKMLGIiLK7rIjbHyDiWnczOLVb3thHvPYP0GRwxpRKyHb2f0AHn33WlvLRJd2ww0lrnfSBGTBa+aIesFEdVuO5a2DOAloU8CXZsnpNjQELIhOeSs4oApcmlfEEZFBQV/N5QZAL7R+BJUmue26UavyDDmx7uy2ym7WdiW+9baCpT6mbJ07J560PCntia46+pqlUy40UntV8GHFQNbgF8wibI43sPht1D/ILQFeQBNCLnfUkTZHjSy0o/alrf4jKtdtbXfI4krEIA/MRpv/TR/l5vFNJAvv6vKQ+2n2EcrhBQz5o95M6HIXbv9+uBImZ6myYekCql1v3cr3wepTRQ== 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=VS6yeFSWejYTGTeoPTEA7ZHQiXWHfuo8EVwUd98ue58=; b=j8xEdoFkEB6QORfnZQ3k2yfKIMXS0RRzqa5eNT9Ny5ofIptE81v6OyTsBXg2pgY4kMVk3rzXVOF12e968RaeU18b0BjmeNUO3a9vxYyg80hu1AHuEmFNihvP1f22W4noeobtH0IDXmHQSofyYRt9lSEtpc+0DAgXs+xnz02wj3y0hB7Em1TljSUUeIitC21wEQKtF0NxQybuCNGuyX6Hs7by2QocSfU0csz1rZ6Dq6JgIqarg5cyy2eFpDx8nk82uevz/8KhS4jKQ3VywpdYgbBUapwBAqVOb89G6MhWYBZMwFh+rv7JuhDeLyJSosi6NsZMeLIQPymVi6k/z+tkvg== 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=VS6yeFSWejYTGTeoPTEA7ZHQiXWHfuo8EVwUd98ue58=; b=EGvJYMKvWOfi+GIOgLl5X6fyLIT36mWjim0QVSCJhJwbEMIbX92pQhD9x3FLbpEJTYyd+4SiJj6nQp/AJhe90pCByqTqOLKgkVPH9FH+RCAoXz7XQf7ZcmZiweUVxvjYAqb2DE67hVOF1Vo6TBln/57iaNCOVMlvsFYSUyrXzus= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:06:07 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:07 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 19/25] xfsprogs: fix unit conversion error in xfs_log_calc_max_attrsetm_res Date: Thu, 10 Nov 2022 14:05:21 -0700 Message-Id: <20221110210527.56628-20-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR05CA0129.namprd05.prod.outlook.com (2603:10b6:a03:33d::14) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 50989bb4-e0d9-4725-3c1e-08dac35f62c4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9hbKMy2MrYAWjA+KWzXahRvUQ0SGDCOuBmoIXSJaRwHWjU1RQaRajU5p6F+sGKaXs2ZOCUhJhD9HNWlQ9W+HNlZjTj/t3OpULyyqKId68/OoGFAQ/+7WbtUHVkf56f21atRQ79LjG5bjmLYuIGOZjfkso4nWmLYolx483Mk1ZuRpCcEbxc0CMI7tbhWOFKuDH4HQdgF8BpH9q9Lvn9LNblrVsf1SCLrjTcQ9gSKHs0nZXYX9JoJqiCioJ74Exal3rhc6XVjGiQsTLXP+BF77eeZuFgs4GSyg0eLhzQWf9AiE/gSVbliPv+5euQHKmHPIOyeKQjy4uoozjCLvB79DWsP/5RwKqxGIyRgWnViKKtO9+4edqM9lVYWajtRG+xBFzxx1MAdjx0VB7GrHzqH5xaTDbfW61lNgiLapnj+bdEiIMIhsqexp19kV+Vcxcn8nBsUY2RVaxcZTUU8sCYiFZ5zUq3IoWxw1aRn5mJoIfEG3oxT5h30UrTUQPvmU6eINcMV8CoLxTOgR+nD1nKoGp8DxVkkcAWTyduJKmrcQ5DhyEcQCyhhRRS+aZQjSef+VL2Tdz9wRPl+y1W5Ct3uu/o7Tkcrv9F4Ot16eXsyWDJWPTcBSgrGwIjCvnyPPI5mdKaGbw8Z8mLXGbUrl+Ec3jmvTmU+TfFXsWkU7MLKwcqCGM3DpXkplIJpv2SQcOWsIC8gsg6PVDoPNjFcQx6Y2Jg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 5reSyOEIMYWz7/b6xQ55XZ/CkGc0hQWwhnRbERTv7UjA7bKGROVk4v1rJHX5xGpp7MGEgfCEHt53Xh4IAsS2VCENZJz+kA7/DOTUuJsXQ2VrVLcVB5UeXvKS26sQrAOHNPTsyf0g77/d+oLJhhSfAFTn2KhNB3C2awXR9g6bfsmRd5ePHPn9kVIecJhXjrSwDz4rfvwlN3liC8efJvN9U5XaO5mLb1SJPy9yFEsj43XYvxpnsFrpculud+IpVvqOOcvL/Sqf0srq0JesJ8BJT5DEVX8OAMydX3D8CGew5PN07JA+LLdhD5SYc+RXRwa81tbi6/eC+UjurvuRvC7P+RLfx+nRFVhnPAlGYSQsI+GN1iGRYTqSwfAQcof/fWeQRyAWCBkOMCC27gs0LNK1ZxM3Si1wASOVXVe4hgk6FDtmp7EFU1ASUSYHvsDxn7dZF3Efoez9/MIQV1S442PRKVnDbz56XutermGcqlkJB8rp+5lMT+FCviIGH3wRQfDM4d3I6egVeL+OIfdfee6dKHv8sc/PJKYjKIkbXNjNjRWPgQbgkbnp6bxOckd747wmJ+wEYRLb/YLWSSezIK8etfeUd4sPVZyAJY1TpU9l6qtnW+v+KEr3iPt70MHKWAA9IuveINb3UES1vLRJ/gwdRyIbfEGzlMCuFd9qUlO7MvZ/3FXAlsMTcHd4Uci9Kj42gXd8Ptl5I6cJFgDh+Cp5Aekr8JOy0gfAqwieyj6b68FXJD0K3Tyxt+ag/1gaMYVFiByygNVMC13FvnGtwJWkiLnIsG7S8WK8Ns8Ly6oDy6mzsLNzZ8zIqlX7me3ptZ0Zc7xvau2hrpnMbGgP5HKx7iMovrGoR6TviuVlwJ3drF1qT4TwCddPcB9bz0r1NK+1xAE26ir7dJLw1XP5vqt9LYTaxr+jKJznXPWXmVA5+yujHbi+iR3JwRx4EwontMgLnK0JXblJoLx2qJcwWCtHri5nbuJnC3CqVKIA0PrAeifDQSeU4Dd5Dr/ErFVMmv4BIE24hx4m6Z7L7Gwu9SU4NB+DV9nFePk66I9lJrEQ7yAz+AoKNu12cvnqGaJQdaV08qqWH/iTS+1/N50EJgZLEstEpnxeyJxoFVgr7Sw2MvfBs4Tsgq/Hl2v6P4fqaYFo52VmubphjZwUfO99/t48shrV7a8hA9SIaipkpeX8JYMzr5MjkDe+0XEv055W6uzOQSewfKh28/CiJ2zfiwt0GARhvGgGxtjpp2f2JEOPTp8qTgfsiOa+wY5Pn5ufGZ/oPnUZeHNi16R8+TDab22RSPtPLHvNQXpmu3ipLoMRilOL/K3gcx7tPzF52oll3ONg6nluA0i6ukdQPWmNnQg+A1EYWYZf2WUUMaIcXq0iM19U+in6iBjWS9jiRYaYvaD8r9Q/eJHAsVKQQM1hwCKPFQIIVj2Otmf/ettJhbS5TeSu4aDzr/gsDPGpdV4VSi76CpIDa2wFBSibb1EeSDIBYvKNY0yqeR3KJ5vsX2wr2Vr8Iu93nN9JtmlVeJbgFmmqcvN3luC3k4rqtktTaGTtUZEFTUKBU/pROtlbt8Lq5xxJAALCdKukzxfoJyrD33sZTfe5tjpz8sQphRr+KUkGOQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50989bb4-e0d9-4725-3c1e-08dac35f62c4 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:07.3620 (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: dsPwpo7Ec2wmPU6CPBYaTHZ6bYNWxWb+XghI0aZLPoPZ0nRKFeWqS2bJHx/JCWzMEyz09Q+9HZNgRJP8QSVuOilgfk/evASI642sO03GAMY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: RbYriQC8bCAlWDU2LG-wFG61TX97TGZL X-Proofpoint-GUID: RbYriQC8bCAlWDU2LG-wFG61TX97TGZL Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: 46f34ae75a2ef5ca24104377a10a57f9d4151e1d Dave and I were discussing some recent test regressions as a result of me turning on nrext64=1 on realtime filesystems, when we noticed that the minimum log size of a 32M filesystem jumped from 954 blocks to 4287 blocks. Digging through xfs_log_calc_max_attrsetm_res, Dave noticed that @size contains the maximum estimated amount of space needed for a local format xattr, in bytes, but we feed this quantity to XFS_NEXTENTADD_SPACE_RES, which requires units of blocks. This has resulted in an overestimation of the minimum log size over the years. We should nominally correct this, but there's a backwards compatibility problem -- if we enable it now, the minimum log size will decrease. If a corrected mkfs formats a filesystem with this new smaller log size, a user will encounter mount failures on an uncorrected kernel due to the larger minimum log size computations there. However, the large extent counters feature is still EXPERIMENTAL, so we can gate the correction on that feature (or any features that get added after that) being enabled. Any filesystem with nrext64 or any of the as-yet-undefined feature bits turned on will be rejected by old uncorrected kernels, so this should be safe even in the upgrade case. Signed-off-by: Darrick J. Wong Reviewed-by: Allison Henderson Signed-off-by: Allison Henderson --- libxfs/xfs_log_rlimit.c | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/libxfs/xfs_log_rlimit.c b/libxfs/xfs_log_rlimit.c index cba24493f86b..6ecb9ad51117 100644 --- a/libxfs/xfs_log_rlimit.c +++ b/libxfs/xfs_log_rlimit.c @@ -16,6 +16,39 @@ #include "xfs_bmap_btree.h" #include "xfs_trace.h" +/* + * Decide if the filesystem has the parent pointer feature or any feature + * added after that. + */ +static inline bool +xfs_has_parent_or_newer_feature( + struct xfs_mount *mp) +{ + if (!xfs_sb_is_v5(&mp->m_sb)) + return false; + + if (xfs_sb_has_compat_feature(&mp->m_sb, ~0)) + return true; + + if (xfs_sb_has_ro_compat_feature(&mp->m_sb, + ~(XFS_SB_FEAT_RO_COMPAT_FINOBT | + XFS_SB_FEAT_RO_COMPAT_RMAPBT | + XFS_SB_FEAT_RO_COMPAT_REFLINK | + XFS_SB_FEAT_RO_COMPAT_INOBTCNT))) + return true; + + if (xfs_sb_has_incompat_feature(&mp->m_sb, + ~(XFS_SB_FEAT_INCOMPAT_FTYPE | + XFS_SB_FEAT_INCOMPAT_SPINODES | + XFS_SB_FEAT_INCOMPAT_META_UUID | + XFS_SB_FEAT_INCOMPAT_BIGTIME | + XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR | + XFS_SB_FEAT_INCOMPAT_NREXT64))) + return true; + + return false; +} + /* * Calculate the maximum length in bytes that would be required for a local * attribute value as large attributes out of line are not logged. @@ -31,6 +64,16 @@ xfs_log_calc_max_attrsetm_res( MAXNAMELEN - 1; nblks = XFS_DAENTER_SPACE_RES(mp, XFS_ATTR_FORK); nblks += XFS_B_TO_FSB(mp, size); + + /* + * Starting with the parent pointer feature, every new fs feature + * corrects a unit conversion error in the xattr transaction + * reservation code that resulted in oversized minimum log size + * computations. + */ + if (xfs_has_parent_or_newer_feature(mp)) + size = XFS_B_TO_FSB(mp, size); + nblks += XFS_NEXTENTADD_SPACE_RES(mp, size, XFS_ATTR_FORK); return M_RES(mp)->tr_attrsetm.tr_logres + From patchwork Thu Nov 10 21:05:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039342 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09AA1C433FE for ; Thu, 10 Nov 2022 21:06:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229536AbiKJVGi (ORCPT ); Thu, 10 Nov 2022 16:06:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231860AbiKJVGf (ORCPT ); Thu, 10 Nov 2022 16:06:35 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7AB256554 for ; Thu, 10 Nov 2022 13:06:34 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0ceM006976 for ; Thu, 10 Nov 2022 21:06:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=MzkL1+og8BBbHcAd1pLc6d50XciaXfwXfxpcmboAL5A=; b=iiyStYjYmGZhF29yMf1/3KFOtk+bU479QofgFesx6k1qNNY29CzxcwVxeZexL+4eNdS2 5nYUx2+Y2qQds11Pa7C64hodYttOhMhPHG3LD0TJvHWI5B1+EvwDQiAKKtPebUuZfrsb iIWk5zoagzo8QfaS3RQviG+y1yE0tb8NweaLRqkFnXoDIz85OxErKuuc4QoJxRzZXvfv eCUlWDxTROIjvjXHByb+rvSLFpZ0OHLi6FUpMdpMY6d5FvIYOSYFW743pKRGPzSdoJih 54Mt/VlTuvnDOXwafKv/5eXbc14e/S6nNhYa76SyyQ8VrETE3dJH89ui5xCIc7ZtmC/X 2Q== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1an-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:31 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKpxbb014959 for ; Thu, 10 Nov 2022 21:06:09 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2168.outbound.protection.outlook.com [104.47.59.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpctfrek5-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:09 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hXD943daaYzgrJ2I9XY7iVf0tDqueGi2WsEVMThnSyAivDWNKWbRt+IpAWSsEF66NzwmnRNWXKVInSfTEe/FIGYwlvdSx5HtZ+kp4citq7WlhHqoI6ftCEpRQCfQNswrY+sfmuwjrYYNq5Pdgo8rBrKz6528OP6JGzuQycoF6um0IiTZpu9vpkWguor+UdqnmAZdbPxDvax+B/RxnZdQJWlowPvybcqQ2oeCPINVOcvIrNOUW92cbCc0C+96OeJ1nqe7VOMFGhztpfwBorRh/z6MOH5dr4oMpxJk3lU6erCV7A5hEas5OqBXtets8yMDum5pTqPus+AXYjs8dF2dwg== 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=MzkL1+og8BBbHcAd1pLc6d50XciaXfwXfxpcmboAL5A=; b=E/vJ372tIK55lExQIA3Nq4MQ12J4MQrEB7irWuHetw+h1qTt0D4OsMm9qZCCpobZ2Kcu33wQeJFvIE12xuBjcLdJJiEOskO617k2jtYrTAZDDqhPp3vLIE1Q4MIS7AoKqtb1jMiArJO+kAd7TUwW2WFlTEUWGZ12ZVF8LKHVizF7ilTTyzNdU4YCcd/gm1ITSYll3of9opx1RJzRXyB1vnjARq4gjB9JJs7ugBhKhdSMddm0++Wm6o3vfeMIM+hAWvwkuYAIxBFO5UdKG8I5wSBCcNpwuP3c2avNdDK/11z36WxIq7QCs8pEGkZs82rDE/Jke2wXWOoLMh8fx6s2hA== 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=MzkL1+og8BBbHcAd1pLc6d50XciaXfwXfxpcmboAL5A=; b=QmTeLkR3ugcz1Q3+5cOg8aW4OMMHTFgzZxL/ZvkdKI+KH09H9iGNdkMkCgN23lExtxR6aP8GgWoK2WQNAn3oNxhrCpjmx3U1HgRfFMnSWkppFH9WyAp2fyIbQtK/TmbZ6BNL/RhA+CgRho1taW8PZOwAGadQ+Co/1X7jJRY4FD4= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:06:08 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:08 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 20/25] xfsprogs: drop compatibility minimum log size computations for reflink Date: Thu, 10 Nov 2022 14:05:22 -0700 Message-Id: <20221110210527.56628-21-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR05CA0126.namprd05.prod.outlook.com (2603:10b6:a03:33d::11) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 09e80fac-dd2d-434f-7559-08dac35f6372 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pnEqh8cTeiMfh+4848IbC8hpfJVsHRG7/uOo52qPk7xZy8jjZCTxtnwuTzz+YgazlMrwQrAeNu7NoSTyxiW1uGRfVWJI7eEokzZtT6+/7T13QSObbrEBGJI1D9xRb+v45qDoJck1zPqncaEayIdVUv0sSBh6zsysVAAraUlP2Lpu6r1kjLUz5Q2VublwPuaH7/nkC/MknHEPhG9e7BlgwjGM5d8Xe3qKaHgfGI/hPQHci4pjQgv4pT/XzsrYH/Kz+mdzAMsjoBESXcKc/Bz37/ePQox0vqn2NCiXVgwWCkWtYh/zMf1v+Ulxu2GuuWWKxkloj5XkUufcEY8RfW4KCvb8j8w+e+5A19RS5xJ0Sz08CBMUgHDif/Z0AhqkNg0MfYFXuGauVo9gzhARA/ofSWYzgl0m16JDlf9SE5byvF/mrh7/aF0KS5qkjgOtr5Ssyl/hbsTlSS7LAjz8z5UGD0tMdZf27VGU/HkDMcnLbAds4XVIpqe30HahTFdI9Kqhn6Mv6982lhXO/BfYX7pbeQTFmPdvf6opj902JiBki1VIVkBTIiutGOkn/JGFAJZfFZhKYGl3LWJrlvSIoku6as+toqnk9WfN2H7oaZkg45jjFJq1pR5zJK6xXXzZ/BqUVQCrxB/2uB2e3zZzYztrUDDMhzrf8Fke1qGskVyBmUeIH0IzwnVtMYF7uhmFf3LX0XJ8FcvVwvaa/19J6KKq7w== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: hBoqywX3TbIChYB4XJeUu6nT3UCtWoD+VzQne1gLBD2E419Af8NZPqUfYR8iaSr8rcCO4Jzi9dQlkEt5MflNe92dzkw+8jtzWHoQYTDxXuLlAt66ZrWGXtxU8w4sQlFpj/fTpExbGAcMZ5aP6ZBFSXrlH+EbHJ003Rets/ulOkjaHb/mLoNDL0unxr7ptoLoLEQzY+X2nOtHz5VbpKMN/SVCHoxYTuJ7n2hPJ35BbGgC2/T9X+v1VsE/CnXwXC1wA2TRqb88ZZBW0z5QipF2yosgvhVVWaAsK38fB1Qpht3MSqVMRLPrhGwzWZxCODuZJ/ztE/1v1DCMRHsJWCw0bWSngAAGLc8ziI6/Q60yekfl08UCvGiT2Luqzw6yRNCyFLxEZv7ETeG6rz7V6hI5hdG2iQfBLhluk/L4TvJUQ8i2IUuhvWtkBxktWUt2QD5vjOY8Qq+e+gz/uNL3wQNhmChWPzQcUoEHoHTUL/maG6oayulC6PcnM7OKl2p2Hi8dhKGqK858c/HsPWKZT7NMvRnZF6svIC5bR6ZqHyc2T4CQ7GiSB74UeVN1UA3GtsXKzp7Q1t5pYaMzBS74kYBk6CGvw2/oTVrdy2p23c3Y5YcatqJ14DhQcIFzX8et3+XV0vpMl2kMKh4/mTyUCCrLs4uBs/7lC0tSwzo0fzvo/8cAcYE80LQm46PXZVBlR4/DkBJ7wI22mC/2MmVxMdsbwtuB/jBjv3PrMYQ6XBSNxB89OfZ6TUvXeIjctEE9C9PSOut/D4ee9VSKPlETbyl3xtiDEEmIjvZlvjbnDEnrdYbEaAzUfQ7lBXC3JeEP4K5rAtRx1QhqFXkI4cZHtmbUdY+c4Ya5gze8u21Ed5TkxGD+6ofPGg1uF9QFZW5FhtxYcPUEknmoVwVTO0hg0enCeRnVNX0aCiahKMKObGOzsJP5D7Euyl7SmLJ71f8hLIrgG1ODwbfMh0+E/VlFAmSzNV4sDxfeLyef7hIng9y5vLh1Kn5DAxmDvwH70bIjGZTfOsPLy6Lf+n4TGzCe2oh5+25R9gQEyGFBwWHamx6W3RGxoSUzkn6Ojb7MvfktFJUyC/Mt/SrwW9yKTdJv82ZltNXN1+9AyE55Ho53gS+FgbW00LdwH3hLwza2htYcZSVC/KNOfPu+C+ut2wTSaCYM6h0b+QF03YJSNinA+ULXUlOPgU1qOGu25QZC4xz8+/3soEth3CkU0dqB3NbyKkhKQLpblzz24T8Rqp3OPhdi1P0BUl78SbB/uok627ENlBl4q7i//ZrqS8QFyFlPt77+cQX5Qni0p8XrSa8xgNqav5PPdYCjwQuGCAH8rlSLsgTcHdjPzZL5R5HzBxXVTCBVYRsOtedjanrDPoZPfSdABwpLT1vEk13260Ds+wC01lyLisE2/V4WzFAEtdRww5LXBwxviciQZ22AIVXxdz8IA9sFIr4HcFpj1Sy/taHCZYy3r7j8SRybW5O0tkv2WbwQKkU3hpStTmyK+pMC/oL9/Stn4O/kwfN8kNrtHOqprfiAvex8zXbtK1jvLhYH5UfHtz6/V6dAhrT8ZZMbAy1VoVeMitMbj3eszObCJPkywU7/d6+e9jIHM74ZSNys+ae9IQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09e80fac-dd2d-434f-7559-08dac35f6372 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:08.5038 (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: b59WfPn4QIlVxOe7T65JVsmie8YBOyCQHzHFvX8A11olMhTs6f7iC184Y94mD30jrZ8kTd84LdhAWXmX9NkMAigcT5DNQlaTbG+Rie69+rA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 bulkscore=0 suspectscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: ifcp8i1xFT_3nMp14Jsy7sedfdC3-bYn X-Proofpoint-GUID: ifcp8i1xFT_3nMp14Jsy7sedfdC3-bYn Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Source kernel commit: c14b8c08a1dff8019bc4cd1674c5d5bd4248a1e5 Having established that we can reduce the minimum log size computation for filesystems with parent pointers or any newer feature, we should also drop the compat minlogsize code that we added when we reduced the transaction reservation size for rmap and reflink. Signed-off-by: Darrick J. Wong Reviewed-by: Allison Henderson Signed-off-by: Allison Henderson --- libxfs/xfs_log_rlimit.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libxfs/xfs_log_rlimit.c b/libxfs/xfs_log_rlimit.c index 6ecb9ad51117..59605f0dc97a 100644 --- a/libxfs/xfs_log_rlimit.c +++ b/libxfs/xfs_log_rlimit.c @@ -91,6 +91,16 @@ xfs_log_calc_trans_resv_for_minlogblocks( { unsigned int rmap_maxlevels = mp->m_rmap_maxlevels; + /* + * Starting with the parent pointer feature, every new fs feature + * drops the oversized minimum log size computation introduced by the + * original reflink code. + */ + if (xfs_has_parent_or_newer_feature(mp)) { + xfs_trans_resv_calc(mp, resv); + return; + } + /* * In the early days of rmap+reflink, we always set the rmap maxlevels * to 9 even if the AG was small enough that it would never grow to From patchwork Thu Nov 10 21:05:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039345 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CA4D9C4332F for ; Thu, 10 Nov 2022 21:07:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231283AbiKJVHD (ORCPT ); Thu, 10 Nov 2022 16:07:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231860AbiKJVG4 (ORCPT ); Thu, 10 Nov 2022 16:06:56 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2138EC14 for ; Thu, 10 Nov 2022 13:06:56 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0cXw006990 for ; Thu, 10 Nov 2022 21:06:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=2SrUxQToh4bhD1HtRzafdul34WTLguJdbKICBjrFn8k=; b=kImqM945Zca59ZickP/rlBdY6N+LHaqlU6Yp+XjVi+k0/hW/2tmyI1iFR8Kf1MDejhHH DXPf3PUyo72xEs+ddCWzG+NFbh8KVNYxRWYANLnc1Ib7fWYD7ADwUh99ME1UHSX44ryX FWmcSkY3jypvtOniaQpuTRUpYhxXzkTdih8TFfXPg4x5FM+P4yPgIDNZnhkT8dtHpZwt lkxUQTyA6RN009R9jGCT41AYU3PhWdGeqf9gNlNhyXofHKYL2F9msiNH0zDJVZ6wY+JB QVSfPTfPIRw/zikCtPzLIkSzYrBP47Y4DgDMqMG1jzFkWLWMcHiORl1ZjEujjPVb3rE1 CA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1ba-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:53 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKWeUU038125 for ; Thu, 10 Nov 2022 21:06:13 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2049.outbound.protection.outlook.com [104.47.66.49]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4g43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZdhM6bXVQXutLvj+Vy+GyEvdccA8qPVQjbFQrB3reSgGNVAenchmlGWLpeEOqN6UVyUFHwfF3bYilMCSzBFvFD0auoAUzq+m2izCM/madbISkfZOfNSRgYna8MIW54sV3zQYALym3MY/eHS1SDOHQECT30lmtuXT9cVCuYminnl1UWV7At1n268oW3UapAJKXgkut5SatNSQEQ46h10/FCR2GSqe8gkx4ATzTS2HIi5a6T24GWqeG5rTY2CBQWpYGA4w43gRMqB3CoOmBz10yOPX2FhSvhn6HaCYKucOMb798dtlo5qH+WAGXToCrEMJ3Jd9PT92I7wSoQ3YqjRG/Q== 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=2SrUxQToh4bhD1HtRzafdul34WTLguJdbKICBjrFn8k=; b=SV0ZtBfWhLH67/ZajV5wFuk9xgUfSPZwrnu3ZalP5OnGuFzIYCnM5boYjVaDuaCKpk3v1+vnrF5cpBNK7q3HxGMDNuOeRkxQjHugo1HgMWQt8ZvV9ejK7EwKQI69FLJ+wWDDf2L9sB7ggLlptQ/Xg8zkdk9l5D/MBkUQgAS97uHE6S75inEeI0VjpFKhqCdNsdGsRV0otNUap5Khk6zdEwCpHkh6hDX5tRZD54bpcQ9Dx/wSPAB8z2rxEE9Pgx90z9nVZRYiWcXm8uIRgWIi3pn7VG2oHyO8HgDm5OzD26VGTrWyHYqPgdqI4IstVF8bzlTBL8XwfjTOoGXSfA55hg== 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=2SrUxQToh4bhD1HtRzafdul34WTLguJdbKICBjrFn8k=; b=KqMgiFFfTSy0/kSjR/dD3izQJKPlGm3DPy5ONuWUL9t96YfpZVT4/UcN2DtWQfRh9De8jCuNXfhx9w78cTWSZYxsVf2Ed05fJW4HszyWgRIx0RJdDOe+DzPMYtniUCCiZaTqDp3UE/4silB9/GH9Iqck1yV+WExaw5pZvKuH7hY= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:06:10 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:10 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 21/25] xfsprogs: Add parent pointer flag to cmd Date: Thu, 10 Nov 2022 14:05:23 -0700 Message-Id: <20221110210527.56628-22-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0292.namprd03.prod.outlook.com (2603:10b6:a03:39e::27) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 2a5640be-1591-4470-093d-08dac35f64b9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mjRrV6CxckgcjZKOcw7OFgQOpcxjGBLQABvQ6HZftIKDTQVV3hbp5DmTll5kOnA+ijS9QD8Ht4XcPpDjyXOXPTFgn/TG5QT0OsTmiScCwGdvBIebW752UdGFly6BZc6dO17fCss7zzna38R/vnTkEpkO6RVA6M4ii7PEgUKqanQXQMhNonAvO7XVFXLRV6Cs65MnZsGZsUR5byioBCPHaqupLNXQovD70/uX/tNBZwreE7BfwgC+ezX6N7PEP60OC2Y1cLnneQuM43II/59WJWailOIVqKAUTbnDTcptWJeUHZGkgfkJt4wpv/hnGzEW1+L0l5vICltzxc/HULEvDrLLT75sQ4rgQJFvDMnQbjIyITDz9EJ4iCbGmmbDL9lurSM/FADyyooNZSjjwUOvKp98bzUswIXKw3WoOAA4XOcGiMWdHGWj3Jcljb49Rfa6yBIwENKipTLex8JwMzxy1prGRYRdCgaaPCrzYoM06RQbHtLtvoA2JJA8lHwz5c1tz0cyrHtgC7D4qfIobosPRZSUw07SdM6fVKdiz4I0hxZRVxRd85WPZTi1yi0WWXFT1bdtyV0Tdulu3ZxqFAid6b/+mSkWbZ+PIqRWusNFiHVlcRFeM6SyHEuqqvOEdsLB/UqhqIp13EyKxS08AQChBhDcyzfuZFVxHsh/FCMt9jR8huFAyNDYAsVPAjdVmn6qPLUBS1nv8nEZtEjcNc6gRZMhRshCl24iSBUOLjMkLX0dY/dT57bPNOz0aLXsu3nc X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003)(21314003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: xx6IQHp/5+rD57LCBpOY4VAAZnAiNQ9pWpTIaHTMxNGNr1c1ZjrQmyrtaopeF7rw6hEN7uneCkQDhPRgnXghoOShFRJHVEQMbL6w8WdaFT3Ty2W6PhOSeXO5IVZA42zk7z2A8ci3nsrhb+6rTaQ/LfTM+R3M/oNrmFugk/fJPWC1BiSKG0INfr3oXbrHs95fQkmYm2cfugZLklxd9VNS7QuA9ggD4vftDKFdyutnOFBOjxHbZ2y/sduX+2IRgH3nue3MP3eUmJVFfVKi1J75hR51KE+O7D022CHsaT/7pwY2OyeTko8Wl+5833G7vi1mySTlggf2Ty/ydkvfQC5d5pnZU+8Zdl16js4P2sW5xEYg215CCq4ybXkvk1wA9vHPT4qcb3LylsQz2VwdMdtalWvFS0meJqOT/hJuC3fYBzyWeduq0kywWCsqyEgLPHUi6jzSfjYlzLTSIz88DtiD/s8txp6eEVC5gmMlDFaOcHH9P0xx0IiDYOMFJ1qjS+gbJ3hW6hUEwxVbD603ZUjpMiHiOlHRw/VQommJJ7n6EjE1FxMBHndiEI/5cKkTHnbkhg94KCJANfieaPCkYrWps1Rhd9Hf8wlYYe0zT4xAEWzcBkc4iIdofG/ZAp7OMjgqpT9G6FScbjR0Vc7KUpbmzjaOf/1YukYZwiV2Qa7JcaTlSscY/YFhGwHfjOJHQV/09lCL87tnxJGGJmjFGf2MSPKuDfxtFERf9iOquBKpGSN9F9/SRloh9/dGdvygNWHK2BB83P48n+A65ehwwsRGb//MnDLozWCL9fToq6kGx9eDaHLPq8d1O29hboscHVG6D9o0lg746sdAyuXQslWQbYvG5exRY9YBX3Quf0iI6nrsrLHwMxsYEW51vkz9nwswTxjHNYJbAo1ev5kp8kM/N3r7TJmGIcFs5tTS3UHilEKPupP5xf7dcf9MG7ugkd7z94BvXLZf7OEGikE7zSvk0JTB1mzbRYxhm6Lcmkrldy4p0l/DlPuUEpHN+EGdNTvdVX87gZ0ke5KRCZEM7m2gYacdu4wqQ+u7Nl+F+0I49hpdS14/kUADfBIy+OZ0XfBDZtQ8Ol+V2YRMg/zvEE6+lSMYhmVDagi+BhswY2jVua+/NOVOVRvDiugBl0BAM1qywa4Y6RDtonxM/NlhTXAW0TslI+Gy503qp8TiwgP074USFY2mI4JCvDprdWY49MWOqWX6i5PrTEQEv8Q2Li1AOP/AqsRuT5wnYQYIP6HgvC6H8vEUp46wwXQ7xPdROjQMTdaGjrJeFCb0o7muuPEV+z5mbCwto0uYe4vfTz6GSvhL2ppKJbpZDs4530v8GI8bWWnKsUWn/MpKXC11r2er6k79Q0kJnhf23IS7UUrhm9CweYoAcJsZkAa1uc28Z9zi0NOONaIkk7vhbOlWUoTV8mnquEpJqsTjnCHNOgsX14ERvZQ8+rIGky47sA1ex8n47msVryfoHUZym55geZcrIrLO6tcBgHX5RVwBIBV9c1KN8Ek8bvPMzhE2KlLWkhaJ3DP8uwGtSn753712KUC+B31rTm7B1EkDUOdd8KbBBLaX2Mph5QlHeotMGAfotJXtSD1vJ99ZwLuYpq1U0fZFzg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2a5640be-1591-4470-093d-08dac35f64b9 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:10.6441 (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: 7yDQZPU6ztzG9sXLqDwU61fueQBIhgXL4WZbTz2QQbbjk3wpZLjDcw40KOgSvyTT0PxRNZhDlUoFWsBYtE7EmmieUsS+l5nsRFyDAVNHfo0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: iAV3huPAJsLp69etRYeeTVQ-W5IEnOZK X-Proofpoint-GUID: iAV3huPAJsLp69etRYeeTVQ-W5IEnOZK Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson mkfs: enable formatting with parent pointers. Enable parent pointer support in mkfs via the '-n parent' parameter. Signed-off-by: Allison Henderson --- mkfs/xfs_mkfs.c | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index e3cd61626186..6926de4695db 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -110,6 +110,7 @@ enum { N_SIZE = 0, N_VERSION, N_FTYPE, + N_PARENT, N_MAX_OPTS, }; @@ -615,6 +616,7 @@ static struct opt_params nopts = { [N_SIZE] = "size", [N_VERSION] = "version", [N_FTYPE] = "ftype", + [N_PARENT] = "parent", [N_MAX_OPTS] = NULL, }, .subopt_params = { @@ -638,6 +640,14 @@ static struct opt_params nopts = { .maxval = 1, .defaultval = 1, }, + { .index = N_PARENT, + .conflicts = { { NULL, LAST_CONFLICT } }, + .minval = 0, + .maxval = 1, + .defaultval = 1, + }, + + }, }; @@ -970,7 +980,7 @@ usage( void ) /* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ sunit=value|su=num,sectsize=num,lazy-count=0|1]\n\ /* label */ [-L label (maximum 12 characters)]\n\ -/* naming */ [-n size=num,version=2|ci,ftype=0|1]\n\ +/* naming */ [-n size=num,version=2|ci,ftype=0|1,parent=0|1]]\n\ /* no-op info only */ [-N]\n\ /* prototype file */ [-p fname]\n\ /* quiet */ [-q]\n\ @@ -1744,6 +1754,9 @@ naming_opts_parser( case N_FTYPE: cli->sb_feat.dirftype = getnum(value, opts, subopt); break; + case N_PARENT: + cli->sb_feat.parent_pointers = getnum(value, &nopts, N_PARENT); + break; default: return -EINVAL; } @@ -2225,6 +2238,14 @@ _("inode btree counters not supported without finobt support\n")); cli->sb_feat.inobtcnt = false; } + if ((cli->sb_feat.parent_pointers) && + cli->sb_feat.dir_version == 4) { + fprintf(stderr, +_("parent pointers not supported on v4 filesystems\n")); + usage(); + cli->sb_feat.parent_pointers = false; + } + if (cli->xi->rtname) { if (cli->sb_feat.reflink && cli_opt_set(&mopts, M_REFLINK)) { fprintf(stderr, @@ -3224,8 +3245,6 @@ sb_set_features( sbp->sb_features2 |= XFS_SB_VERSION2_LAZYSBCOUNTBIT; if (fp->projid32bit) sbp->sb_features2 |= XFS_SB_VERSION2_PROJID32BIT; - if (fp->parent_pointers) - sbp->sb_features2 |= XFS_SB_VERSION2_PARENTBIT; if (fp->crcs_enabled) sbp->sb_features2 |= XFS_SB_VERSION2_CRCBIT; if (fp->attr_version == 2) @@ -3266,6 +3285,10 @@ sb_set_features( sbp->sb_features_ro_compat |= XFS_SB_FEAT_RO_COMPAT_INOBTCNT; if (fp->bigtime) sbp->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_BIGTIME; + if (fp->parent_pointers) { + sbp->sb_features_incompat |= XFS_SB_FEAT_INCOMPAT_PARENT; + sbp->sb_versionnum |= XFS_SB_VERSION_ATTRBIT; + } /* * Sparse inode chunk support has two main inode alignment requirements. From patchwork Thu Nov 10 21:05:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039344 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71ABEC433FE for ; Thu, 10 Nov 2022 21:07:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231873AbiKJVG4 (ORCPT ); Thu, 10 Nov 2022 16:06:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59344 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231283AbiKJVGz (ORCPT ); Thu, 10 Nov 2022 16:06:55 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C572DC14 for ; Thu, 10 Nov 2022 13:06:54 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0cej006976 for ; Thu, 10 Nov 2022 21:06:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=xDf0f5pP6kvwq/eCO2W5L0ZQLetjUmbOMF5E14q1TK0=; b=lZBEoNH/kk4aYwmeXDF9nDCVG1vNJAr/i8GIazjwdELIXm2jdzeL6Lki9t1N1/kAHfGj eI3qaJrN3A9Tc6U+EE7S2lWB6xKrmR6uSbCwzTUIS/perbOvF8Jo31mALyNAhcNXnysp ycOTFtQegEgWkzMrhLmG8qYYq9ImMkOEf4ycRYs8dkEANFoxz6YA8YH4ufhgAYzCi1l8 Q+tWYQaYfBKh1nNFVbBuUioX4YYwllYD2od3HnXkhVryzvBsLbetVgDLgmnY0xQjpEKa p+ThdM60nkXuqgNOSHbQtt4dnDoiUn2ktQdq6H8Mgi7yGXHmKU52RhMOMzc0oOhqvrBz tg== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1be-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:42 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKWeUV038125 for ; Thu, 10 Nov 2022 21:06:13 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2049.outbound.protection.outlook.com [104.47.66.49]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcsh4g43-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IIPGgG/9fFm0i0l7ibckhJspKmlznKvUpuTBDSsHRkXc69P8EsiM8ySqK8sOQhI/6vjZiuqt3Fkv/jktF4OTH9rsuwYRPvfgnSa3s9DdtxZlc0LHseCGbWfaifHtBHmIGVZ6mPqr2MlTopnIMYzvKjUg4+ch3XRjVwB8Jp7u68Fpu8ZA6L4zIdWS77q+XYGiAVuHv4rDu/lLUJ0faIW8oJwOqZ/wfmr+qIJueZo2x7u4sATzBqt+iTIwHhVp2p8B2CRgZY5IjaWYuDYySaIRtZezMKa7KWJ1fBtFE4VHrNTG1ajHMjWxgFkYvGmtTETsRsr7UnbjbXyU7m6kOOuaEQ== 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=xDf0f5pP6kvwq/eCO2W5L0ZQLetjUmbOMF5E14q1TK0=; b=Ifqb2+E0Y28+4Itb8VW5xIPy/dUOns3pRtW4o6pOzeyzS7kWk+rORoRt3cKWE+e7CB4jqqju88ggAsEiRiU6Mso/2B41nDj2LFhOXwX6LuB9AgrgoINadiP2pjje84tsQvvPWBE7lJXgU+oFJgGpwjlhCRcxo5wRSm0zr1EOkbI9Ur4MYBB6pgLsDzWLANMVZGC92F+TVmqhqF3oZbXPGcaq2mewO7B1fIXJAYWGmjg3FpPqL4zMW0yqBe+wQu4x6uD2oD+FSjyh0IABWBLYXA4Wf4mo5IZ1sFr6PXAks+qVjlt8NGMPae+48YZ0OoWyPjrR1uosI0aSlOOEmAT9iw== 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=xDf0f5pP6kvwq/eCO2W5L0ZQLetjUmbOMF5E14q1TK0=; b=cYS2Db3g/ArDtpYO4xE+zsdEGgaWUKj2rkhXt9PW+Q0+TnjuaFS2nth1n4ofWbKQftmLLotoc+rZi38+xEp+G42miDQAcmZsBWXvDH+kUmXhyGGKZOPDon45QGunNAmrFEGvROnWjxDRJ01wyv3jYfQdcVi8ubzY/k5zYNAEOnA= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:06:12 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:12 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 22/25] xfsprogs: Print pptrs in ATTRI items Date: Thu, 10 Nov 2022 14:05:24 -0700 Message-Id: <20221110210527.56628-23-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BYAPR01CA0027.prod.exchangelabs.com (2603:10b6:a02:80::40) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 929ffd8c-12d5-42be-2a10-08dac35f6592 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Pfdv8VLRlt6U/Vdxs1GnKQ4pPHGDXQynd6BxacmxqnTc/jmBSkFvfzC/pSjXX6vdj0Kf+zc+SA9N9KMNQsBoenJSkkInR96nqIkRgfFsi36rQLM+mR5Bb8TS0hEZQ30JKnHliencEMi2uofW7sPXmQ7afWXelpP+K5a2fgjBZPabC2VXOoNWmIdXfuZtR+3unFn+OgUg2d6Pa2kHiQTZtQCqR5knSE6yOHypiahvWN7drBBSwIw3gqcuw784PcX9dEoLHo5YKM1si3tC+CBDF5q8Yfh4FQf27l+4RG0b0hGLHWyM78VI+Uu+UPtFsX70mjRJu4uKJV/dytxKm8qOGlAiB5b/ndDNf4c+/HLMCa2iX4+E2vNRdX4wgROtf+w0h1sNOR0v6lWvlznbLOM8RNpHe9DY7gzJ+MYpE8di9nkCofyxlSdzkPqMfq8xCA230l9e+pvEVTAz/9nAe/Ve74RQhY5gnuSjpCMnidFlxM/BxUJO0AjTVaP+EY31umiAUrDvBm9iGBGH3pHPrWeBify0VGfjIx1SqMKyA305vIxIloDon2ooaNQdbDKrgH21axzdYjgMfvZ53vdIFNY4348MfBy2oDQZ+D7SKQtS+LGUX+i3Tl6obUPaBF0iJKvgz1EvTOZEIKnfmg7hXpXtHLl7ccYmYbJl95NfnAF3+d/LwLgmwZer7Zt2o3dB8BQVYt2WhP5jXiYV8HIbILKHAQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: gib9Dz8bXKndWycmsLAzCz3Kji5y8ltkCdPhVSrQltcuH7jkSBQd2/m+wdzetC0UOy+Xh4nqebT7YDkQTG5nCZB/FhMBcBUb19sPKdCUG7nyws7eAUyukywlBOhNDpfPs1oHKP1n2gr3Ob7ECxLiXUUeTheTzEURxdkBJXO61LV+2yQgd3k0jYstHSlgwsvc1nwoHuCJGmMyIutETFOeLz5imCpMahxQE2bgcBs/CfBrf30EYTxH7r13XiapGDhyofdloFAMgfAFm2GnnZEDMmoiZSUOlzNsjLgJmFGHI6gmMlbsmXjYYtdjecMDXRgnKp7+w5zfW1sz/uzqyYx+xPm9m6Qaoe+x5FRAbBCNui38jBBsy+8bkaOtB/ZJnjzMsmbvSmjcC87uYrRYZl3vBwPlwYHJylfjS+XC3rZXFbsHGfCr5Z4j9DzFfp/g2GzMAq3/FZVuBH4aebXWJVTKze21w5u2kuaEYKzdzm1jzZPhuvJYJYn/NzbSFh9Ksb+nxj3Rlybysys2KKuaIt6v7RneL5spLGwoBaqYusbpuToQd7U2BX+EAr8DWqT9EPBspZ4WmG4oaW57GfCQinAxM+YSpepbKV2dpoaZKSuEvUYMj1l9/YoMKYslbgBU8fk0HFCAOtsn+5zimh+vQkC1OqNfY04HdiQ6qBw8TpIfSJyegpkt4j6wZU14GGZrPT4bAl/d/5LDihnPGH804DPD7CCqer0cfC9hsSNn9MAfOZq/hPtdr2awwA1HXzzEfUdoJID7rADMOlpqC5REeV9fZbifawgDjIg8Hsqf+06Q3YEeteP9UqQ7ddc9jS4iJBivjhSxcy4eYpi7U+Qv43xB9c0NdBiuNtq7vuzoPFDzRT8gARbwulj4HYq2//CB2C5QG08wZWsp/EchppZLHh/pVJmjkzCIa8eVWtY5lVM3n9z386A1sXsERjGvTVWgshXm77UOuAVXHu4t0m/Auq0bdlf6N2mmcXA2QXfdnr/bbgYCCABnmXSeTKDSBAMzKtxwhT/jv0Bfr/icpDEnhmZVzzpTr60PHrwZZy6Cze1Ei9LfqI8DYz9Y22Ym8Z7WYfqWEmX+POaOLTKF32jq6kuJpsqEWdRMfFT1bQ90WBMICm7y3wbCXVYwzNKOvJcr5kI0puy4akfVE65DX2SCWUANlx0Ns4lZcYDcIr82uah8Iq9tZzjtSNmMt8025ACkZlFkPrzExoaENtaSY+bzLf3QFFUbVbfEc2YPvFoBYNHTOOfQddYRJJ2mWXhDDgfomgh9n0hkxLv8SauvWlMdDEgxtilchPWCA7lEjkXBxB6Kh6J4pNaFr0XrcfRbDKpowRFxun244ecSjyvRhJazvP51wi3cyQG/UjDNMXou85rYPEq15AfqxzO5y7aIh97lxYu76MA0VQ2EoQAcBvZpJW83fQGLCmO1zlDWkt0F4R0K916SjN2SLBhdzXM2giceTNXIkcKxID7L85jylqxU7MPtwdIi6xd6SmMLD66VQJ7eZcHCOm1g2TyCQti/MwOw/IF3eZhuh4gaX5I7a3EyRyAIWiD3xoU5/nV5W9nR8LbqwW1PWYswmpPgZVpKJUWZOYQHALi8/R0sYNqBeYe3SkY8+Q== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 929ffd8c-12d5-42be-2a10-08dac35f6592 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:12.0514 (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: uPwNoRJhLwf57+0cw0kvMcfCSaTTCpbh7e3yIjhNHxTa4qgLSQc0sR47LtpdOp1HrKCI7Dc2Nj51ZraNDeHiGA/m3ADqHPwzvsWn6XMeLw8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: BuKIWn5_lacYNhEXneD2ke_u_mrxXQBa X-Proofpoint-GUID: BuKIWn5_lacYNhEXneD2ke_u_mrxXQBa Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch modifies the ATTRI print routines to look for the parent pointer flag, and print the log entry name as a parent pointer name record. Values are printed as strings since they contain the file name. Signed-off-by: Allison Henderson --- logprint/log_redo.c | 191 ++++++++++++++++++++++++++++++++++++++------ logprint/logprint.h | 5 +- 2 files changed, 171 insertions(+), 25 deletions(-) diff --git a/logprint/log_redo.c b/logprint/log_redo.c index 65d365d8f02f..015df0bf02f2 100644 --- a/logprint/log_redo.c +++ b/logprint/log_redo.c @@ -674,6 +674,31 @@ xfs_attri_copy_log_format( return 1; } +/* iovec length must be 32-bit aligned */ +static inline size_t ATTR_NVEC_SIZE(size_t size) +{ + return round_up(size, sizeof(int32_t)); +} + +static int +xfs_attri_copy_name_format( + char *buf, + uint len, + struct xfs_parent_name_rec *dst_attri_fmt) +{ + uint dst_len = ATTR_NVEC_SIZE(sizeof(struct xfs_parent_name_rec)); + + if (len == dst_len) { + memcpy((char *)dst_attri_fmt, buf, len); + return 0; + } + + fprintf(stderr, _("%s: bad size of attri name format: %u; expected %u\n"), + progname, len, dst_len); + + return 1; +} + int xlog_print_trans_attri( char **ptr, @@ -714,7 +739,8 @@ xlog_print_trans_attri( (*i)++; head = (xlog_op_header_t *)*ptr; xlog_print_op_header(head, *i, ptr); - error = xlog_print_trans_attri_name(ptr, be32_to_cpu(head->oh_len)); + error = xlog_print_trans_attri_name(ptr, be32_to_cpu(head->oh_len), + src_f->alfi_attr_filter); if (error) goto error; } @@ -724,7 +750,8 @@ xlog_print_trans_attri( (*i)++; head = (xlog_op_header_t *)*ptr; xlog_print_op_header(head, *i, ptr); - error = xlog_print_trans_attri_name(ptr, be32_to_cpu(head->oh_len)); + error = xlog_print_trans_attri_name(ptr, be32_to_cpu(head->oh_len), + src_f->alfi_attr_filter); if (error) goto error; } @@ -735,7 +762,7 @@ xlog_print_trans_attri( head = (xlog_op_header_t *)*ptr; xlog_print_op_header(head, *i, ptr); error = xlog_print_trans_attri_value(ptr, be32_to_cpu(head->oh_len), - src_f->alfi_value_len); + src_f->alfi_value_len, src_f->alfi_attr_filter); } error: free(src_f); @@ -746,13 +773,45 @@ error: int xlog_print_trans_attri_name( char **ptr, - uint src_len) + uint src_len, + uint attr_flags) { - printf(_("ATTRI: name len:%u\n"), src_len); - print_or_dump(*ptr, src_len); + struct xfs_parent_name_rec *src_f = NULL; + uint dst_len; - *ptr += src_len; + /* + * If this is not a parent pointer, just do a bin dump + */ + if (!(attr_flags & XFS_ATTR_PARENT)) { + printf(_("ATTRI: name len:%u\n"), src_len); + print_or_dump(*ptr, src_len); + goto out; + } + + dst_len = ATTR_NVEC_SIZE(sizeof(struct xfs_parent_name_rec)); + if (dst_len != src_len) { + fprintf(stderr, _("%s: bad size of attri name format: %u; expected %u\n"), + progname, src_len, dst_len); + return 1; + } + + /* + * memmove to ensure 8-byte alignment for the long longs in + * xfs_parent_name_rec structure + */ + if ((src_f = (struct xfs_parent_name_rec *)malloc(src_len)) == NULL) { + fprintf(stderr, _("%s: xlog_print_trans_attri_name: malloc failed\n"), progname); + exit(1); + } + memmove((char*)src_f, *ptr, src_len); + + printf(_("ATTRI: #p_ino: %llu p_gen: %u, p_diroffset: %u\n"), + be64_to_cpu(src_f->p_ino), be32_to_cpu(src_f->p_gen), + be32_to_cpu(src_f->p_diroffset)); + free(src_f); +out: + *ptr += src_len; return 0; } /* xlog_print_trans_attri */ @@ -760,15 +819,32 @@ int xlog_print_trans_attri_value( char **ptr, uint src_len, - int value_len) + int value_len, + uint attr_flags) { int len = min(value_len, src_len); + char *f = NULL; - printf(_("ATTRI: value len:%u\n"), value_len); - print_or_dump(*ptr, len); + /* + * If this is not a parent pointer, just do a bin dump + */ + if (!(attr_flags & XFS_ATTR_PARENT)) { + printf(_("ATTRI: value len:%u\n"), value_len); + print_or_dump(*ptr, min(len, MAX_ATTR_VAL_PRINT)); + goto out; + } - *ptr += src_len; + if ((f = (char *)malloc(src_len)) == NULL) { + fprintf(stderr, _("%s: xlog_print_trans_attri: malloc failed\n"), progname); + exit(1); + } + + memcpy(f, *ptr, value_len); + printf(_("ATTRI: value: %.*s\n"), value_len, f); + free(f); +out: + *ptr += src_len; return 0; } /* xlog_print_trans_attri_value */ @@ -779,6 +855,9 @@ xlog_recover_print_attri( struct xfs_attri_log_format *f, *src_f = NULL; uint src_len, dst_len; + struct xfs_parent_name_rec *rec, *src_rec = NULL; + char *value, *src_value = NULL; + int region = 0; src_f = (struct xfs_attri_log_format *)item->ri_buf[0].i_addr; @@ -803,27 +882,93 @@ xlog_recover_print_attri( if (f->alfi_name_len > 0) { region++; - printf(_("ATTRI: name len:%u\n"), f->alfi_name_len); - print_or_dump((char *)item->ri_buf[region].i_addr, - f->alfi_name_len); + + if (f->alfi_attr_filter & XFS_ATTR_PARENT) { + src_rec = (struct xfs_parent_name_rec *)item->ri_buf[region].i_addr; + src_len = item->ri_buf[region].i_len; + + dst_len = ATTR_NVEC_SIZE(sizeof(struct xfs_parent_name_rec)); + + if ((rec = ((struct xfs_parent_name_rec *)malloc(dst_len))) == NULL) { + fprintf(stderr, _("%s: xlog_recover_print_attri: malloc failed\n"), + progname); + exit(1); + } + if (xfs_attri_copy_name_format((char *)src_rec, src_len, rec)) { + goto out; + } + + printf(_("ATTRI: #inode: %llu gen: %u, offset: %u\n"), + be64_to_cpu(rec->p_ino), be32_to_cpu(rec->p_gen), + be32_to_cpu(rec->p_diroffset)); + + free(rec); + } + else { + printf(_("ATTRI: name len:%u\n"), f->alfi_name_len); + print_or_dump((char *)item->ri_buf[region].i_addr, + f->alfi_name_len); + } } if (f->alfi_nname_len > 0) { region++; - printf(_("ATTRI: nname len:%u\n"), f->alfi_nname_len); - print_or_dump((char *)item->ri_buf[region].i_addr, - f->alfi_nname_len); + + if (f->alfi_attr_filter & XFS_ATTR_PARENT) { + src_rec = (struct xfs_parent_name_rec *)item->ri_buf[region].i_addr; + src_len = item->ri_buf[region].i_len; + + dst_len = ATTR_NVEC_SIZE(sizeof(struct xfs_parent_name_rec)); + + if ((rec = ((struct xfs_parent_name_rec *)malloc(dst_len))) == NULL) { + fprintf(stderr, _("%s: xlog_recover_print_attri: malloc failed\n"), + progname); + exit(1); + } + if (xfs_attri_copy_name_format((char *)src_rec, src_len, rec)) { + goto out; + } + + printf(_("ATTRI: new #inode: %llu gen: %u, offset: %u\n"), + be64_to_cpu(rec->p_ino), be32_to_cpu(rec->p_gen), + be32_to_cpu(rec->p_diroffset)); + + free(rec); + } + else { + printf(_("ATTRI: nname len:%u\n"), f->alfi_nname_len); + print_or_dump((char *)item->ri_buf[region].i_addr, + f->alfi_nname_len); + } } if (f->alfi_value_len > 0) { - int len = f->alfi_value_len; + region++; - if (len > MAX_ATTR_VAL_PRINT) - len = MAX_ATTR_VAL_PRINT; + if (f->alfi_attr_filter & XFS_ATTR_PARENT) { + src_value = (char *)item->ri_buf[region].i_addr; - region++; - printf(_("ATTRI: value len:%u\n"), f->alfi_value_len); - print_or_dump((char *)item->ri_buf[region].i_addr, len); + if ((value = ((char *)malloc(f->alfi_value_len))) == NULL) { + fprintf(stderr, _("%s: xlog_recover_print_attri: malloc failed\n"), + progname); + exit(1); + } + + memcpy((char *)value, (char *)src_value, f->alfi_value_len); + printf("ATTRI: value: %.*s\n", f->alfi_value_len, value); + + free(value); + } + else { + int len = f->alfi_value_len; + + if (len > MAX_ATTR_VAL_PRINT) + len = MAX_ATTR_VAL_PRINT; + + printf(_("ATTRI: value len:%u\n"), f->alfi_value_len); + print_or_dump((char *)item->ri_buf[region].i_addr, + len); + } } out: diff --git a/logprint/logprint.h b/logprint/logprint.h index b4479c240d94..b8e1c9328ce3 100644 --- a/logprint/logprint.h +++ b/logprint/logprint.h @@ -59,8 +59,9 @@ extern void xlog_recover_print_bud(struct xlog_recover_item *item); #define MAX_ATTR_VAL_PRINT 128 extern int xlog_print_trans_attri(char **ptr, uint src_len, int *i); -extern int xlog_print_trans_attri_name(char **ptr, uint src_len); -extern int xlog_print_trans_attri_value(char **ptr, uint src_len, int value_len); +extern int xlog_print_trans_attri_name(char **ptr, uint src_len, uint attr_flags); +extern int xlog_print_trans_attri_value(char **ptr, uint src_len, int value_len, + uint attr_flags); extern void xlog_recover_print_attri(struct xlog_recover_item *item); extern int xlog_print_trans_attrd(char **ptr, uint len); extern void xlog_recover_print_attrd(struct xlog_recover_item *item); From patchwork Thu Nov 10 21:05:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039346 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ECA98C433FE for ; Thu, 10 Nov 2022 21:07:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232082AbiKJVHH (ORCPT ); Thu, 10 Nov 2022 16:07:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231849AbiKJVHG (ORCPT ); Thu, 10 Nov 2022 16:07:06 -0500 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C6B05FC5 for ; Thu, 10 Nov 2022 13:07:04 -0800 (PST) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL0cYD006990 for ; Thu, 10 Nov 2022 21:07:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=H3lkxB03rzm94caOkcTVUFJ/CEZuIvLz0oLcTqZUAUI=; b=NHYhIw5+6sevbgrZETMdkN9Z7+L+ioODb2YktLxzTLZYAqxICItMf23RrDbjGe/pIjx6 SJkBS3hLz8FNs3vO6eVXp9Z+Uav4iJYmNGoG1z+s3tq/2V5h0dZ2Q07L+sJyBdyCzAzu rd3DJmXJ+MDRyfe7ts/8xVfvEHpNmu9CbKThUe5/ggXk7476ETEF/G5q6qwjray4Lb1Q FLQSPOQjDwxtKr74Vhwrfvyogwc3+E2yuFcFfzuqA7YvmSwVEfIt16VlDsnCPYwyceIA CWL/iPN5sMzGmL5XfFAv8pjpDCqdygMbbcJbgZJjZqM04jjawEVcu5VnLiofrmJWHXAd 7Q== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8u5r1c7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:07:01 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKWWx9023224 for ; Thu, 10 Nov 2022 21:06:16 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2045.outbound.protection.outlook.com [104.47.66.45]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcyset43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KB7pjOPUsq4suExsDoPT0wVLm+PlZf8T2F+6kq3d+e+GXfOiu/Zk/Mvi6LtHaO8VQtbL1OufwAzefGjmmsWfXAEsX5M8nSOHS8tXd3RUJzVMX0rfCduAFLb2fioav8692/EAVwJmCPA67MjUumiks4xjAj0ZcmeQGXZpFVgjDhVVWrzhvxosiXNePmZmA/MZbl0st7KGCHJDTaxIS5U+JzdmevAxATRm+CtWCn6fUExmqRUOBLES7ok0a0wV8QqAdBz1shNMUlZhNgLknjYZ6DIFGtTYpCkrv7iFUWBExEcewqC9yBq9KE1oEDeLDfxUxDDHKvmud3lFCJGqF93TVw== 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=H3lkxB03rzm94caOkcTVUFJ/CEZuIvLz0oLcTqZUAUI=; b=jAXg4s9BKmQiRJybEErbBaBhFViClHM1PqVWvFdCYxdwHYhS9ifX2qxBq+B3qYHMgB285MqUHDv+U4gNKAurtQd5QJ02remPyjokhZ/RdbWcMQWEMRdPioBqcLyLOddpUyQgmfMt0sPiLSZ4kah0cJP6Y11AGR+rRWYLJzfblX6An1o98END9lgncjuNYGQy9yqjEVlIFBiSdFzjM8L3m3pzgjz2aPSv8KhHNavOVpe2WhnDwTY6iNaNn96qqRqKRhPI2jMHYbTpR738hTMxkoEPoOFEYE8uQVjlAjLeITVqOE6jbdgJ+e1Nl+q1I73eZABZbs5qOFHqTDiYbXMh7g== 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=H3lkxB03rzm94caOkcTVUFJ/CEZuIvLz0oLcTqZUAUI=; b=zGUk0GQAaWESeuRNsiD2f1YO8Gw0LUDX+jpcCE05WgC8KYv7Ax2RA3IMvxs40ik2i2u5YQH2cOkzkpE5WFewXte7UlM5yzc0eOBpTTPyjh7YzQ2e2J2jXO6gFQCheiL/DprkOW8EXmChrLoT+hCzbxQV07bJqCOguiyEQZ4IqHA= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by PH8PR10MB6527.namprd10.prod.outlook.com (2603:10b6:510:229::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.13; Thu, 10 Nov 2022 21:06:13 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:13 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 23/25] xfsprogs: implement the upper half of parent pointers Date: Thu, 10 Nov 2022 14:05:25 -0700 Message-Id: <20221110210527.56628-24-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR13CA0012.namprd13.prod.outlook.com (2603:10b6:a03:2c0::17) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|PH8PR10MB6527:EE_ X-MS-Office365-Filtering-Correlation-Id: 6abf2638-c5b5-4e82-277a-08dac35f667e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7IC6PjpVjsPtAdB9qf1/hDHb9ZMqYKJOE6ZrEL1dzBXz1WiPI5r4hHSwRUEaCL8MLfhymSRB+tf1auGm1JNdf1KIUFDUfcI8anJGupmli90Dtg0EU9mp70ymGsU6skeiko2zUOmVwTMDnR3ynOn6BR75cvOKCN9iwvLhKqvwgXGbYx3QGlbGeqjnI9A+N6mtFxO+d/SAvLAM6SiqAxPzWYHlCmdz+EDe/ohkbcunCcoKw7+JcqhZj+xK4dzAdBwUiOITW2eHZpChC2KvHD7p1iuTys5NQgvX0Ty+1OhuPYyj8uJNUB3dgYP/T/ixJPREAp609jnLatFh7PhFLgLm7/ECZqqUtxVwQbZKkxpokfepTE6xdAizeQpRO+xq04abMy2y3rwzALg51Is6MKoVQQtltFx6xqjYA4jr66eclBGgQ1ZhvfA7N4YHM8Oqs8ZF+huOuArUcIVHtOToUBIE13eGC4Rcaxh/AUbLs+FpbPuVRb2UrWkI3o9O9KBkwrjT7C2s5rcT8h4OClufs9rkJl24kZmMfPsx8qFqQuyoIQIC7k3iE5wwnmqEY/0qzJSSS6Cn+csZLpMl+0L/qo9kvXGrC6h7ze84+YjG79An4jhLJJuNUiJCW4BiYHGdufT07JWzwyzG4uWYnVnVI0A9uCkFRb0eIZnp0d+NadVNIz/FfWLdGrSEvcDTzH93LF3SC29fH8MRNPl7+wm6XGfRXiXpeo+SI8uq9x1gEExd1gsdb+Jm9me2LXx72oDcYW5/ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(396003)(366004)(376002)(346002)(136003)(39860400002)(451199015)(1076003)(186003)(83380400001)(2616005)(478600001)(6486002)(6506007)(9686003)(26005)(6512007)(6666004)(86362001)(38100700002)(2906002)(66946007)(66556008)(66476007)(8676002)(41300700001)(8936002)(6916009)(5660300002)(316002)(30864003)(36756003)(2004002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FXtJFZXANn0Y92qSR0AgiQ/bOc2zz+DaonqepAFkUfDMZMREr7W/AfAZoiDTrEhvF/0dBMC4OT6VATFC9eie+qOHiD1jzOxT/6wwbpvWq77EGXQV5UXpyDlGtXKcS1SHLTsJAGCufbXDSPqGcKuxZOilmVRWzNYKdoWXYQ6+E2ynhtgWG7nvlh/tv07z9pvhM87dZsHw0zbrwWQpIkBYvaPwQDQ+mYmHNrPRTiouiSf/YgpuY6bjitwnEB8DNmWBrSwPeMKFXXfrs3vN7fPO+TW27NQ+4U5GxwcpXwlEi830OPZQbsm1sZmVWfwQleII3cB3t6QsVZgSP36vnYkQH+QBy5C015TDJuQtrI2GIR5swNJXCfqCIR9lkOHi0YK/1wXTpqi2Z9oMdwbx6U3wgjy90e83x2Jk21fnwCxdYZi156j128HrkF/YYu8vL9SS4310nxFQo2yIx2OCjPOXbc5ZSQ22guBSyYTRItBfsCPFjlfL3boHErN8KxDNrJ6xzh5XhZoVp1bliFR416ulArYbjTPwUAv73g1JMPb7TqHYbEsBk9/wbR5Vg+d5RSQduaM7OFSnm/Vekb1G91S+IC2iICECrveplPQK4LoEhzOhC9CEzqaz9rRWLFNRbQl5yM8chVYVzZeyAgglzxe+37iMcdZjYesK/L3VXPEre+ITHjesw70xL50ETGpOP7UJUjik9OS9WOeJfD7MuEbR2fdR64IHYK+/5B/S7BS7tgAKs2ZA5LlffwFiSaIjj7PYhb70Ui/4LkwEjPFTf40rlSl4O9a7huAqQixodVRymA02UXZ3P7P30nUciPuKtTiHRNEHgBX2dnWEP1TNvIpOIhimWqI5IVXja6oaaEbj+kQnEECClCIDGAnyYSMckI9Rq1b5bKVYvNoDBp3L6ceNWnFVHhXOtRYlgKgXYxwyyrX1rmsGJPb15kJ5Ula98GE9gdDvL6pnAoBpRf0Ts2G7BXSPKOIukj6kaAjmtTq7m+cwRrR/YXrSyLuv/2F1mH9c8rSlcxKaD5cp9x+OmLy953Gjk2X9QwJj3tTEX+ng0FcE7mjgHtmNJMHwcwwu8JnokukuXsBUHlQJ+X9ojsqfgrQbxnjRA3xIr9YGoAOa/OT9PwET8GIAH3ZpOZkiVzZo6PI/VyIjcfHeHe5p1ouWPwqCT3kHS5VDdDH4LGNFeQEhMVLAS5I8jVqEfEF1qI0u1zmCKVOUknUG+/1KAIWbYVSwBE+usG982cw8nkw7QPRzxFkxd9lAtPoaaI3wbWe0M0bahF63fNK4mmbkW0quwsFeEBZfzn+lygvup7IlwiQspyEunR9xU83i+QWIMmTn3VTls0666ANW8RsGo7y2HF10ZyNx/58jTb4yYpA1oFt1EDjMQF03HEezmRWFsMfemf7MDyOIlMivLblAaOD+Dyi8CzkBnVWZMEVUzKY86mWFR88Tgi4fQJwF7BlRrdtmP8VoSb4NXRvydCySuMSUDxsxfC43pNHQX4vRK3OcqtApUbq0+Mk4ihtOwRjNZJYX/dys7JGoU6Rd77YugvtPTk1CmlKaphIemloJlYGHap4esguTi1de7RDavkK1kJZdXMZN+25C3Vwz4L0itNcEOA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6abf2638-c5b5-4e82-277a-08dac35f667e X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:13.6762 (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: 8YYyZeZ+ac6taxm1H1ePyEx3rfsY9bSSpWxGolGyms0jEFektlVjGFqf8QGVhAD1ejR2pAJDdfPY44LbSpnnTRbJkV1dP8bO9ZYHr+2dqXw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR10MB6527 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 malwarescore=0 adultscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-ORIG-GUID: PaIf4oChr54FfVaEhPjbMhmdrBuyWkS_ X-Proofpoint-GUID: PaIf4oChr54FfVaEhPjbMhmdrBuyWkS_ Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Collins Add ioctl definitions to libxfs, build the necessary helpers into libfrog and libhandle to iterate parents (and parent paths), then wire up xfs_scrub to be able to query parent pointers from userspace. The goal of this patch is to exercise userspace, and is nowhere near a complete solution. A basic xfs_io parent command implementation replaces ... whatever that is that's there now. Signed-off-by: Darrick J. Wong Signed-off-by: Allison Collins Signed-off-by: Allison Henderson --- include/handle.h | 2 + include/parent.h | 18 ++ io/parent.c | 469 ++++++++++++--------------------------------- libfrog/paths.c | 136 +++++++++++++ libfrog/paths.h | 21 +- libhandle/Makefile | 2 +- libhandle/handle.c | 7 +- libhandle/parent.c | 328 +++++++++++++++++++++++++++++++ scrub/inodes.c | 26 +++ scrub/inodes.h | 2 + 10 files changed, 656 insertions(+), 355 deletions(-) diff --git a/include/handle.h b/include/handle.h index 34246f3854de..1f02c96427b7 100644 --- a/include/handle.h +++ b/include/handle.h @@ -40,6 +40,8 @@ extern int fssetdm_by_handle (void *__hanp, size_t __hlen, void fshandle_destroy(void); +int handle_to_fsfd(void *hanp, char **path); + #ifdef __cplusplus } #endif diff --git a/include/parent.h b/include/parent.h index 4d3ad51b476c..fb9000419bee 100644 --- a/include/parent.h +++ b/include/parent.h @@ -17,4 +17,22 @@ typedef struct parent_cursor { __u32 opaque[4]; /* an opaque cookie */ } parent_cursor_t; +struct path_list; + +typedef int (*walk_pptr_fn)(struct xfs_pptr_info *pi, struct xfs_parent_ptr *pptr, + void *arg); +typedef int (*walk_ppath_fn)(const char *mntpt, struct path_list *path, + void *arg); + +#define WALK_PPTRS_ABORT 1 +int fd_walk_pptrs(int fd, walk_pptr_fn fn, void *arg); +int handle_walk_pptrs(void *hanp, size_t hanlen, walk_pptr_fn fn, void *arg); + +#define WALK_PPATHS_ABORT 1 +int fd_walk_ppaths(int fd, walk_ppath_fn fn, void *arg); +int handle_walk_ppaths(void *hanp, size_t hanlen, walk_ppath_fn fn, void *arg); + +int fd_to_path(int fd, char *path, size_t pathlen); +int handle_to_path(void *hanp, size_t hlen, char *path, size_t pathlen); + #endif diff --git a/io/parent.c b/io/parent.c index 8f63607ffec2..e0ca29eb54c7 100644 --- a/io/parent.c +++ b/io/parent.c @@ -9,363 +9,106 @@ #include "libfrog/paths.h" #include "parent.h" #include "handle.h" -#include "jdm.h" #include "init.h" #include "io.h" -#define PARENTBUF_SZ 16384 -#define BSTATBUF_SZ 16384 - static cmdinfo_t parent_cmd; -static int verbose_flag; -static int err_status; -static __u64 inodes_checked; static char *mntpt; -/* - * check out a parent entry to see if the values seem valid - */ -static void -check_parent_entry(struct xfs_bstat *bstatp, parent_t *parent) -{ - int sts; - char fullpath[PATH_MAX]; - struct stat statbuf; - char *str; - - sprintf(fullpath, _("%s%s"), mntpt, parent->p_name); - - sts = lstat(fullpath, &statbuf); - if (sts != 0) { - fprintf(stderr, - _("inode-path for inode: %llu is incorrect - path \"%s\" non-existent\n"), - (unsigned long long) bstatp->bs_ino, fullpath); - if (verbose_flag) { - fprintf(stderr, - _("path \"%s\" does not stat for inode: %llu; err = %s\n"), - fullpath, - (unsigned long long) bstatp->bs_ino, - strerror(errno)); - } - err_status++; - return; - } else { - if (verbose_flag > 1) { - printf(_("path \"%s\" found\n"), fullpath); - } - } - - if (statbuf.st_ino != bstatp->bs_ino) { - fprintf(stderr, - _("inode-path for inode: %llu is incorrect - wrong inode#\n"), - (unsigned long long) bstatp->bs_ino); - if (verbose_flag) { - fprintf(stderr, - _("ino mismatch for path \"%s\" %llu vs %llu\n"), - fullpath, - (unsigned long long)statbuf.st_ino, - (unsigned long long)bstatp->bs_ino); - } - err_status++; - return; - } else if (verbose_flag > 1) { - printf(_("inode number match: %llu\n"), - (unsigned long long)statbuf.st_ino); - } - - /* get parent path */ - str = strrchr(fullpath, '/'); - *str = '\0'; - sts = stat(fullpath, &statbuf); - if (sts != 0) { - fprintf(stderr, - _("parent path \"%s\" does not stat: %s\n"), - fullpath, - strerror(errno)); - err_status++; - return; - } else { - if (parent->p_ino != statbuf.st_ino) { - fprintf(stderr, - _("inode-path for inode: %llu is incorrect - wrong parent inode#\n"), - (unsigned long long) bstatp->bs_ino); - if (verbose_flag) { - fprintf(stderr, - _("ino mismatch for path \"%s\" %llu vs %llu\n"), - fullpath, - (unsigned long long)parent->p_ino, - (unsigned long long)statbuf.st_ino); - } - err_status++; - return; - } else { - if (verbose_flag > 1) { - printf(_("parent ino match for %llu\n"), - (unsigned long long) parent->p_ino); - } - } - } -} - -static void -check_parents(parent_t *parentbuf, size_t *parentbuf_size, - jdm_fshandle_t *fshandlep, struct xfs_bstat *statp) -{ - int error, i; - __u32 count; - parent_t *entryp; - - do { - error = jdm_parentpaths(fshandlep, statp, parentbuf, *parentbuf_size, &count); - - if (error == ERANGE) { - *parentbuf_size *= 2; - parentbuf = (parent_t *)realloc(parentbuf, *parentbuf_size); - } else if (error) { - fprintf(stderr, _("parentpaths failed for ino %llu: %s\n"), - (unsigned long long) statp->bs_ino, - strerror(errno)); - err_status++; - break; - } - } while (error == ERANGE); - - - if (count == 0) { - /* no links for inode - something wrong here */ - fprintf(stderr, _("inode-path for inode: %llu is missing\n"), - (unsigned long long) statp->bs_ino); - err_status++; - } - - entryp = parentbuf; - for (i = 0; i < count; i++) { - check_parent_entry(statp, entryp); - entryp = (parent_t*) (((char*)entryp) + entryp->p_reclen); - } -} - static int -do_bulkstat(parent_t *parentbuf, size_t *parentbuf_size, - struct xfs_bstat *bstatbuf, int fsfd, jdm_fshandle_t *fshandlep) +pptr_print( + struct xfs_pptr_info *pi, + struct xfs_parent_ptr *pptr, + void *arg) { - __s32 buflenout; - __u64 lastino = 0; - struct xfs_bstat *p; - struct xfs_bstat *endp; - struct xfs_fsop_bulkreq bulkreq; - struct stat mntstat; + char buf[XFS_PPTR_MAXNAMELEN + 1]; + unsigned int namelen = strlen((char *)pptr->xpp_name); - if (stat(mntpt, &mntstat)) { - fprintf(stderr, _("can't stat mount point \"%s\": %s\n"), - mntpt, strerror(errno)); - return 1; + if (pi->pi_flags & XFS_PPTR_OFLAG_ROOT) { + printf(_("Root directory.\n")); + return 0; } - bulkreq.lastip = &lastino; - bulkreq.icount = BSTATBUF_SZ; - bulkreq.ubuffer = (void *)bstatbuf; - bulkreq.ocount = &buflenout; - - while (xfsctl(mntpt, fsfd, XFS_IOC_FSBULKSTAT, &bulkreq) == 0) { - if (*(bulkreq.ocount) == 0) { - return 0; - } - for (p = bstatbuf, endp = bstatbuf + *bulkreq.ocount; p < endp; p++) { - - /* inode being modified, get synced data with iget */ - if ( (!p->bs_nlink || !p->bs_mode) && p->bs_ino != 0 ) { - - if (xfsctl(mntpt, fsfd, XFS_IOC_FSBULKSTAT_SINGLE, &bulkreq) < 0) { - fprintf(stderr, - _("failed to get bulkstat information for inode %llu\n"), - (unsigned long long) p->bs_ino); - continue; - } - if (!p->bs_nlink || !p->bs_mode || !p->bs_ino) { - fprintf(stderr, - _("failed to get valid bulkstat information for inode %llu\n"), - (unsigned long long) p->bs_ino); - continue; - } - } - - /* skip root */ - if (p->bs_ino == mntstat.st_ino) { - continue; - } - - if (verbose_flag > 1) { - printf(_("checking inode %llu\n"), - (unsigned long long) p->bs_ino); - } - - /* print dotted progress */ - if ((inodes_checked % 100) == 0 && verbose_flag == 1) { - printf("."); fflush(stdout); - } - inodes_checked++; - - check_parents(parentbuf, parentbuf_size, fshandlep, p); - } - - }/*while*/ - - fprintf(stderr, _("syssgi bulkstat failed: %s\n"), strerror(errno)); - return 1; + memcpy(buf, pptr->xpp_name, namelen); + buf[namelen] = 0; + printf(_("p_ino = %llu\n"), (unsigned long long)pptr->xpp_ino); + printf(_("p_gen = %u\n"), (unsigned int)pptr->xpp_gen); + printf(_("p_reclen = %u\n"), namelen); + printf(_("p_name = \"%s\"\n\n"), buf); + return 0; } -static int -parent_check(void) +int +print_parents( + struct xfs_handle *handle) { - int fsfd; - jdm_fshandle_t *fshandlep; - parent_t *parentbuf; - size_t parentbuf_size = PARENTBUF_SZ; - struct xfs_bstat *bstatbuf; - - err_status = 0; - inodes_checked = 0; - - sync(); - - fsfd = file->fd; - - fshandlep = jdm_getfshandle(mntpt); - if (fshandlep == NULL) { - fprintf(stderr, _("unable to open \"%s\" for jdm: %s\n"), - mntpt, - strerror(errno)); - return 1; - } - - /* allocate buffers */ - bstatbuf = (struct xfs_bstat *)calloc(BSTATBUF_SZ, sizeof(struct xfs_bstat)); - parentbuf = (parent_t *)malloc(parentbuf_size); - if (!bstatbuf || !parentbuf) { - fprintf(stderr, _("unable to allocate buffers: %s\n"), - strerror(errno)); - err_status = 1; - goto out; - } + int ret; - if (do_bulkstat(parentbuf, &parentbuf_size, bstatbuf, fsfd, fshandlep) != 0) - err_status++; - - if (err_status > 0) - fprintf(stderr, _("num errors: %d\n"), err_status); + if (handle) + ret = handle_walk_pptrs(handle, sizeof(*handle), pptr_print, + NULL); else - printf(_("succeeded checking %llu inodes\n"), - (unsigned long long) inodes_checked); - -out: - free(bstatbuf); - free(parentbuf); - free(fshandlep); - return err_status; -} + ret = fd_walk_pptrs(file->fd, pptr_print, NULL); + if (ret) + perror(file->name); -static void -print_parent_entry(parent_t *parent, int fullpath) -{ - printf(_("p_ino = %llu\n"), (unsigned long long) parent->p_ino); - printf(_("p_gen = %u\n"), parent->p_gen); - printf(_("p_reclen = %u\n"), parent->p_reclen); - if (fullpath) - printf(_("p_name = \"%s%s\"\n"), mntpt, parent->p_name); - else - printf(_("p_name = \"%s\"\n"), parent->p_name); + return 0; } static int -parent_list(int fullpath) -{ - void *handlep = NULL; - size_t handlen; - int error, i; - int retval = 1; - __u32 count; - parent_t *entryp; - parent_t *parentbuf = NULL; - char *path = file->name; - int pb_size = PARENTBUF_SZ; - - /* XXXX for linux libhandle version - to set libhandle fsfd cache */ - { - void *fshandle; - size_t fshlen; +path_print( + const char *mntpt, + struct path_list *path, + void *arg) { - if (path_to_fshandle(mntpt, &fshandle, &fshlen) != 0) { - fprintf(stderr, _("%s: failed path_to_fshandle \"%s\": %s\n"), - progname, path, strerror(errno)); - goto error; - } - free_handle(fshandle, fshlen); - } + char buf[PATH_MAX]; + size_t len = PATH_MAX; + int ret; - if (path_to_handle(path, &handlep, &handlen) != 0) { - fprintf(stderr, _("%s: path_to_handle failed for \"%s\"\n"), progname, path); - goto error; + ret = snprintf(buf, len, "%s", mntpt); + if (ret != strlen(mntpt)) { + errno = ENOMEM; + return -1; } - do { - parentbuf = (parent_t *)realloc(parentbuf, pb_size); - if (!parentbuf) { - fprintf(stderr, _("%s: unable to allocate parent buffer: %s\n"), - progname, strerror(errno)); - goto error; - } - - if (fullpath) { - error = parentpaths_by_handle(handlep, - handlen, - parentbuf, - pb_size, - &count); - } else { - error = parents_by_handle(handlep, - handlen, - parentbuf, - pb_size, - &count); - } - if (error == ERANGE) { - pb_size *= 2; - } else if (error) { - fprintf(stderr, _("%s: %s call failed for \"%s\": %s\n"), - progname, fullpath ? "parentpaths" : "parents", - path, strerror(errno)); - goto error; - } - } while (error == ERANGE); - - if (count == 0) { - /* no links for inode - something wrong here */ - fprintf(stderr, _("%s: inode-path is missing\n"), progname); - goto error; - } - - entryp = parentbuf; - for (i = 0; i < count; i++) { - print_parent_entry(entryp, fullpath); - entryp = (parent_t*) (((char*)entryp) + entryp->p_reclen); - } + ret = path_list_to_string(path, buf + ret, len - ret); + if (ret < 0) + return ret; + return 0; +} - retval = 0; -error: - free(handlep); - free(parentbuf); - return retval; +int +print_paths( + struct xfs_handle *handle) +{ + int ret; + + if (handle) + ret = handle_walk_ppaths(handle, sizeof(*handle), path_print, + NULL); + else + ret = fd_walk_ppaths(file->fd, path_print, NULL); + if (ret) + perror(file->name); + return 0; } static int -parent_f(int argc, char **argv) +parent_f( + int argc, + char **argv) { - int c; - int listpath_flag = 0; - int check_flag = 0; - fs_path_t *fs; - static int tab_init; + struct xfs_handle handle; + void *hanp = NULL; + size_t hlen; + struct fs_path *fs; + char *p; + uint64_t ino = 0; + uint32_t gen = 0; + int c; + int listpath_flag = 0; + int ret; + static int tab_init; if (!tab_init) { tab_init = 1; @@ -380,46 +123,72 @@ parent_f(int argc, char **argv) } mntpt = fs->fs_dir; - verbose_flag = 0; - - while ((c = getopt(argc, argv, "cpv")) != EOF) { + while ((c = getopt(argc, argv, "p")) != EOF) { switch (c) { - case 'c': - check_flag = 1; - break; case 'p': listpath_flag = 1; break; - case 'v': - verbose_flag++; - break; default: return command_usage(&parent_cmd); } } - if (!check_flag && !listpath_flag) /* default case */ - exitcode = parent_list(listpath_flag); - else { - if (listpath_flag) - exitcode = parent_list(listpath_flag); - if (check_flag) - exitcode = parent_check(); + /* + * Always initialize the fshandle table because we need it for + * the ppaths functions to work. + */ + ret = path_to_fshandle((char *)mntpt, &hanp, &hlen); + if (ret) { + perror(mntpt); + return 0; + } + + if (optind + 2 == argc) { + ino = strtoull(argv[optind], &p, 0); + if (*p != '\0' || ino == 0) { + fprintf(stderr, + _("Bad inode number '%s'.\n"), + argv[optind]); + return 0; + } + gen = strtoul(argv[optind + 1], &p, 0); + if (*p != '\0') { + fprintf(stderr, + _("Bad generation number '%s'.\n"), + argv[optind + 1]); + return 0; + } + + memcpy(&handle, hanp, sizeof(handle)); + handle.ha_fid.fid_len = sizeof(xfs_fid_t) - + sizeof(handle.ha_fid.fid_len); + handle.ha_fid.fid_pad = 0; + handle.ha_fid.fid_ino = ino; + handle.ha_fid.fid_gen = gen; + } + if (listpath_flag) + exitcode = print_paths(ino ? &handle : NULL); + else + exitcode = print_parents(ino ? &handle : NULL); + + if (hanp) + free_handle(hanp, hlen); + return 0; } static void parent_help(void) { - printf(_( +printf(_( "\n" " list the current file's parents and their filenames\n" "\n" -" -c -- check the current file's file system for parent consistency\n" -" -p -- list the current file's parents and their full paths\n" -" -v -- verbose mode\n" +" -p -- list the current file's paths up to the root\n" +"\n" +"If ino and gen are supplied, use them instead.\n" "\n")); } @@ -430,9 +199,9 @@ parent_init(void) parent_cmd.cfunc = parent_f; parent_cmd.argmin = 0; parent_cmd.argmax = -1; - parent_cmd.args = _("[-cpv]"); + parent_cmd.args = _("[-p] [ino gen]"); parent_cmd.flags = CMD_NOMAP_OK; - parent_cmd.oneline = _("print or check parent inodes"); + parent_cmd.oneline = _("print parent inodes"); parent_cmd.help = parent_help; if (expert) diff --git a/libfrog/paths.c b/libfrog/paths.c index abb29a237e80..a86ae07c135e 100644 --- a/libfrog/paths.c +++ b/libfrog/paths.c @@ -15,6 +15,7 @@ #include "paths.h" #include "input.h" #include "projects.h" +#include "list.h" #include extern char *progname; @@ -563,3 +564,138 @@ fs_table_insert_project_path( return error; } + + +/* Structured path components. */ + +struct path_list { + struct list_head p_head; +}; + +struct path_component { + struct list_head pc_list; + char *pc_fname; +}; + +/* Initialize a path component with a given name. */ +struct path_component * +path_component_init( + const char *name) +{ + struct path_component *pc; + + pc = malloc(sizeof(struct path_component)); + if (!pc) + return NULL; + INIT_LIST_HEAD(&pc->pc_list); + pc->pc_fname = strdup(name); + if (!pc->pc_fname) { + free(pc); + return NULL; + } + return pc; +} + +/* Free a path component. */ +void +path_component_free( + struct path_component *pc) +{ + free(pc->pc_fname); + free(pc); +} + +/* Change a path component's filename. */ +int +path_component_change( + struct path_component *pc, + void *name, + size_t namelen) +{ + void *p; + + p = realloc(pc->pc_fname, namelen + 1); + if (!p) + return -1; + pc->pc_fname = p; + memcpy(pc->pc_fname, name, namelen); + pc->pc_fname[namelen] = 0; + return 0; +} + +/* Initialize a pathname. */ +struct path_list * +path_list_init(void) +{ + struct path_list *path; + + path = malloc(sizeof(struct path_list)); + if (!path) + return NULL; + INIT_LIST_HEAD(&path->p_head); + return path; +} + +/* Empty out a pathname. */ +void +path_list_free( + struct path_list *path) +{ + struct path_component *pos; + struct path_component *n; + + list_for_each_entry_safe(pos, n, &path->p_head, pc_list) { + path_list_del_component(path, pos); + path_component_free(pos); + } + free(path); +} + +/* Add a parent component to a pathname. */ +void +path_list_add_parent_component( + struct path_list *path, + struct path_component *pc) +{ + list_add(&pc->pc_list, &path->p_head); +} + +/* Add a component to a pathname. */ +void +path_list_add_component( + struct path_list *path, + struct path_component *pc) +{ + list_add_tail(&pc->pc_list, &path->p_head); +} + +/* Remove a component from a pathname. */ +void +path_list_del_component( + struct path_list *path, + struct path_component *pc) +{ + list_del_init(&pc->pc_list); +} + +/* Convert a pathname into a string. */ +ssize_t +path_list_to_string( + struct path_list *path, + char *buf, + size_t buflen) +{ + struct path_component *pos; + ssize_t bytes = 0; + int ret; + + list_for_each_entry(pos, &path->p_head, pc_list) { + ret = snprintf(buf, buflen, "/%s", pos->pc_fname); + if (ret != 1 + strlen(pos->pc_fname)) + return -1; + bytes += ret; + buf += ret; + buflen -= ret; + } + return bytes; +} diff --git a/libfrog/paths.h b/libfrog/paths.h index f20a2c3ef582..52538fb5614e 100644 --- a/libfrog/paths.h +++ b/libfrog/paths.h @@ -58,4 +58,23 @@ typedef struct fs_cursor { extern void fs_cursor_initialise(char *__dir, uint __flags, fs_cursor_t *__cp); extern fs_path_t *fs_cursor_next_entry(fs_cursor_t *__cp); -#endif /* __LIBFROG_PATH_H__ */ +/* Path information. */ + +struct path_list; +struct path_component; + +struct path_component *path_component_init(const char *name); +void path_component_free(struct path_component *pc); +int path_component_change(struct path_component *pc, void *name, + size_t namelen); + +struct path_list *path_list_init(void); +void path_list_free(struct path_list *path); +void path_list_add_parent_component(struct path_list *path, + struct path_component *pc); +void path_list_add_component(struct path_list *path, struct path_component *pc); +void path_list_del_component(struct path_list *path, struct path_component *pc); + +ssize_t path_list_to_string(struct path_list *path, char *buf, size_t buflen); + +#endif /* __PATH_H__ */ diff --git a/libhandle/Makefile b/libhandle/Makefile index f297a59e47f9..cf7df67c8f39 100644 --- a/libhandle/Makefile +++ b/libhandle/Makefile @@ -12,7 +12,7 @@ LT_AGE = 0 LTLDFLAGS += -Wl,--version-script,libhandle.sym -CFILES = handle.c jdm.c +CFILES = handle.c jdm.c parent.c LSRCFILES = libhandle.sym default: ltdepend $(LTLIBRARY) diff --git a/libhandle/handle.c b/libhandle/handle.c index 333c21909007..1e8fe9ac5f10 100644 --- a/libhandle/handle.c +++ b/libhandle/handle.c @@ -29,7 +29,6 @@ typedef union { } comarg_t; static int obj_to_handle(char *, int, unsigned int, comarg_t, void**, size_t*); -static int handle_to_fsfd(void *, char **); static char *path_to_fspath(char *path); @@ -203,8 +202,10 @@ handle_to_fshandle( return 0; } -static int -handle_to_fsfd(void *hanp, char **path) +int +handle_to_fsfd( + void *hanp, + char **path) { struct fdhash *fdhp; diff --git a/libhandle/parent.c b/libhandle/parent.c new file mode 100644 index 000000000000..ebd0abd55927 --- /dev/null +++ b/libhandle/parent.c @@ -0,0 +1,328 @@ +/* + * Copyright (C) 2017 Oracle. All Rights Reserved. + * + * Author: Darrick J. Wong + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include "platform_defs.h" +#include "xfs.h" +#include "xfs_arch.h" +#include "list.h" +#include "libfrog/paths.h" +#include "handle.h" +#include "parent.h" + +/* Allocate a buffer large enough for some parent pointer records. */ +static inline struct xfs_pptr_info * +xfs_pptr_alloc( + size_t nr_ptrs) +{ + struct xfs_pptr_info *pi; + + pi = malloc(xfs_pptr_info_sizeof(nr_ptrs)); + if (!pi) + return NULL; + memset(pi, 0, sizeof(struct xfs_pptr_info)); + pi->pi_ptrs_size = nr_ptrs; + return pi; +} + +/* Walk all parents of the given file handle. */ +static int +handle_walk_parents( + int fd, + struct xfs_handle *handle, + walk_pptr_fn fn, + void *arg) +{ + struct xfs_pptr_info *pi; + struct xfs_parent_ptr *p; + unsigned int i; + ssize_t ret = -1; + + pi = xfs_pptr_alloc(4); + if (!pi) + return -1; + + if (handle) { + memcpy(&pi->pi_handle, handle, sizeof(struct xfs_handle)); + pi->pi_flags = XFS_PPTR_IFLAG_HANDLE; + } + + ret = ioctl(fd, XFS_IOC_GETPARENTS, pi); + while (!ret) { + if (pi->pi_flags & XFS_PPTR_OFLAG_ROOT) { + ret = fn(pi, NULL, arg); + break; + } + + for (i = 0; i < pi->pi_ptrs_used; i++) { + p = xfs_ppinfo_to_pp(pi, i); + ret = fn(pi, p, arg); + if (ret) + goto out_pi; + } + + if (pi->pi_flags & XFS_PPTR_OFLAG_DONE) + break; + + ret = ioctl(fd, XFS_IOC_GETPARENTS, pi); + } + +out_pi: + free(pi); + return ret; +} + +/* Walk all parent pointers of this handle. */ +int +handle_walk_pptrs( + void *hanp, + size_t hlen, + walk_pptr_fn fn, + void *arg) +{ + char *mntpt; + int fd; + + if (hlen != sizeof(struct xfs_handle)) { + errno = EINVAL; + return -1; + } + + fd = handle_to_fsfd(hanp, &mntpt); + if (fd < 0) + return -1; + + return handle_walk_parents(fd, hanp, fn, arg); +} + +/* Walk all parent pointers of this fd. */ +int +fd_walk_pptrs( + int fd, + walk_pptr_fn fn, + void *arg) +{ + return handle_walk_parents(fd, NULL, fn, arg); +} + +struct walk_ppaths_info { + walk_ppath_fn fn; + void *arg; + char *mntpt; + struct path_list *path; + int fd; +}; + +struct walk_ppath_level_info { + struct xfs_handle newhandle; + struct path_component *pc; + struct walk_ppaths_info *wpi; +}; + +static int handle_walk_parent_paths(struct walk_ppaths_info *wpi, + struct xfs_handle *handle); + +static int +handle_walk_parent_path_ptr( + struct xfs_pptr_info *pi, + struct xfs_parent_ptr *p, + void *arg) +{ + struct walk_ppath_level_info *wpli = arg; + struct walk_ppaths_info *wpi = wpli->wpi; + unsigned int i; + int ret = 0; + + if (pi->pi_flags & XFS_PPTR_OFLAG_ROOT) + return wpi->fn(wpi->mntpt, wpi->path, wpi->arg); + + for (i = 0; i < pi->pi_ptrs_used; i++) { + p = xfs_ppinfo_to_pp(pi, i); + ret = path_component_change(wpli->pc, p->xpp_name, + strlen((char *)p->xpp_name)); + if (ret) + break; + wpli->newhandle.ha_fid.fid_ino = p->xpp_ino; + wpli->newhandle.ha_fid.fid_gen = p->xpp_gen; + path_list_add_parent_component(wpi->path, wpli->pc); + ret = handle_walk_parent_paths(wpi, &wpli->newhandle); + path_list_del_component(wpi->path, wpli->pc); + if (ret) + break; + } + + return ret; +} + +/* + * Recursively walk all parents of the given file handle; if we hit the + * fs root then we call the associated function with the constructed path. + */ +static int +handle_walk_parent_paths( + struct walk_ppaths_info *wpi, + struct xfs_handle *handle) +{ + struct walk_ppath_level_info *wpli; + int ret; + + wpli = malloc(sizeof(struct walk_ppath_level_info)); + if (!wpli) + return -1; + wpli->pc = path_component_init(""); + if (!wpli->pc) { + free(wpli); + return -1; + } + wpli->wpi = wpi; + memcpy(&wpli->newhandle, handle, sizeof(struct xfs_handle)); + + ret = handle_walk_parents(wpi->fd, handle, handle_walk_parent_path_ptr, + wpli); + + path_component_free(wpli->pc); + free(wpli); + return ret; +} + +/* + * Call the given function on all known paths from the vfs root to the inode + * described in the handle. + */ +int +handle_walk_ppaths( + void *hanp, + size_t hlen, + walk_ppath_fn fn, + void *arg) +{ + struct walk_ppaths_info wpi; + ssize_t ret; + + if (hlen != sizeof(struct xfs_handle)) { + errno = EINVAL; + return -1; + } + + wpi.fd = handle_to_fsfd(hanp, &wpi.mntpt); + if (wpi.fd < 0) + return -1; + wpi.path = path_list_init(); + if (!wpi.path) + return -1; + wpi.fn = fn; + wpi.arg = arg; + + ret = handle_walk_parent_paths(&wpi, hanp); + path_list_free(wpi.path); + + return ret; +} + +/* + * Call the given function on all known paths from the vfs root to the inode + * referred to by the file description. + */ +int +fd_walk_ppaths( + int fd, + walk_ppath_fn fn, + void *arg) +{ + struct walk_ppaths_info wpi; + void *hanp; + size_t hlen; + int fsfd; + int ret; + + ret = fd_to_handle(fd, &hanp, &hlen); + if (ret) + return ret; + + fsfd = handle_to_fsfd(hanp, &wpi.mntpt); + if (fsfd < 0) + return -1; + wpi.fd = fd; + wpi.path = path_list_init(); + if (!wpi.path) + return -1; + wpi.fn = fn; + wpi.arg = arg; + + ret = handle_walk_parent_paths(&wpi, hanp); + path_list_free(wpi.path); + + return ret; +} + +struct path_walk_info { + char *buf; + size_t len; +}; + +/* Helper that stringifies the first full path that we find. */ +static int +handle_to_path_walk( + const char *mntpt, + struct path_list *path, + void *arg) +{ + struct path_walk_info *pwi = arg; + int ret; + + ret = snprintf(pwi->buf, pwi->len, "%s", mntpt); + if (ret != strlen(mntpt)) { + errno = ENOMEM; + return -1; + } + + ret = path_list_to_string(path, pwi->buf + ret, pwi->len - ret); + if (ret < 0) + return ret; + + return WALK_PPATHS_ABORT; +} + +/* Return any eligible path to this file handle. */ +int +handle_to_path( + void *hanp, + size_t hlen, + char *path, + size_t pathlen) +{ + struct path_walk_info pwi; + + pwi.buf = path; + pwi.len = pathlen; + return handle_walk_ppaths(hanp, hlen, handle_to_path_walk, &pwi); +} + +/* Return any eligible path to this file description. */ +int +fd_to_path( + int fd, + char *path, + size_t pathlen) +{ + struct path_walk_info pwi; + + pwi.buf = path; + pwi.len = pathlen; + return fd_walk_ppaths(fd, handle_to_path_walk, &pwi); +} diff --git a/scrub/inodes.c b/scrub/inodes.c index ffe7eb334410..ac2bc3aa019b 100644 --- a/scrub/inodes.c +++ b/scrub/inodes.c @@ -19,6 +19,7 @@ #include "descr.h" #include "libfrog/fsgeom.h" #include "libfrog/bulkstat.h" +#include "parent.h" /* * Iterate a range of inodes. @@ -449,3 +450,28 @@ scrub_open_handle( return open_by_fshandle(handle, sizeof(*handle), O_RDONLY | O_NOATIME | O_NOFOLLOW | O_NOCTTY); } + +/* Construct a description for an inode. */ +void +xfs_scrub_ino_descr( + struct scrub_ctx *ctx, + struct xfs_handle *handle, + char *buf, + size_t buflen) +{ + uint64_t ino; + xfs_agnumber_t agno; + xfs_agino_t agino; + int ret; + + ret = handle_to_path(handle, sizeof(struct xfs_handle), buf, buflen); + if (ret >= 0) + return; + + ino = handle->ha_fid.fid_ino; + agno = ino / (1ULL << (ctx->mnt.inopblog + ctx->mnt.agblklog)); + agino = ino % (1ULL << (ctx->mnt.inopblog + ctx->mnt.agblklog)); + snprintf(buf, buflen, _("inode %"PRIu64" (%u/%u)"), ino, agno, + agino); +} + diff --git a/scrub/inodes.h b/scrub/inodes.h index f03180458ab9..189fa282d4c3 100644 --- a/scrub/inodes.h +++ b/scrub/inodes.h @@ -21,5 +21,7 @@ int scrub_scan_all_inodes(struct scrub_ctx *ctx, scrub_inode_iter_fn fn, void *arg); int scrub_open_handle(struct xfs_handle *handle); +void xfs_scrub_ino_descr(struct scrub_ctx *ctx, struct xfs_handle *handle, + char *buf, size_t buflen); #endif /* XFS_SCRUB_INODES_H_ */ From patchwork Thu Nov 10 21:05:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039337 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 57230C4332F for ; Thu, 10 Nov 2022 21:06:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231777AbiKJVGX (ORCPT ); Thu, 10 Nov 2022 16:06:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59014 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231824AbiKJVGV (ORCPT ); Thu, 10 Nov 2022 16:06:21 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8F874AF25 for ; Thu, 10 Nov 2022 13:06:20 -0800 (PST) Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL386q014039 for ; Thu, 10 Nov 2022 21:06:19 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=4031/eD+z7zjdlWhp3b+fysDVSFdjogWtt0VzsXMpEw=; b=V0NMp4OFQJp57GL+ZuDudMCzG9S0q4aXFTMq2eq9IX/eGtih7Y3udY/KsA7Nq7hKZciG XHDtQEd3qWsBFtKnTcw6x+OKysKLoisIH2FwqVjOHDyqdW9BMMPtxQukwmkdyXXYLNv9 j90AzECAPk07gEUtnAghZwh6+fzDnfzfFQmJU3EhsZS8R61pXtC7+3YAN3G0z5dxARa2 FNurpkZhXnv7+/nTDYG4dknWzwBtbjz6w3wtBquOE4Lu+4a5Fr1RBt2EQQy0fLeGbtvJ 0Y/oZoo9dS8xHwNlX8pKRmuU0zncmXeMvAOe4Grqt3OszvPom+oCQH5P7Iol2Cqb7ctP nQ== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vbg08p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:18 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKdVN6009690 for ; Thu, 10 Nov 2022 21:06:17 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2108.outbound.protection.outlook.com [104.47.70.108]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hbmm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AVL2Lpup5CeGQFqbmALqQlyZuc5LbY1FCGopyy9ggGKs05XOtYhbHnozOUwVoXV8reAK+pyetKTGrIMfqdYfYrq+ZYfvxfq6auFUOrQf676Q/74zLs3yqd8eEXepxDntKTpdf3xhGlaA3tggmIpXkQdZtYGIjmNqh6qYPNxcDymYeKfoJXLqHoTOW32A32DaO/cEPjk6ZuzISbLHnQpJ9dsoOYavH/v+u37kFdjUUHW4QhBfzvfMjWMZqUcfco/gyyUqrIbjpiZx+/x0/Dz7LXPC4zg5Znz7ylUJVi8wtK2Gwe1xBSMom9R4iCLutkkqiw8Ix0DfdczX4X158UL61g== 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=4031/eD+z7zjdlWhp3b+fysDVSFdjogWtt0VzsXMpEw=; b=XRU5IETTe7MdxbcRdaNfXCStufytRcSCDU4PdPooYSNpfjg+xyEdTEJA+XwRuZn/uldKr2k6pwmutR3DEFajVkXfe54xEqHl+M5bOq5Qce9jP5FUpoE+xL/soF9ZaIrB5ocsElJDoOVjxT8zUJCq+hM0+JzfnLVvY4whgJVjp2Si24N4TXZY2j4Qifoxeq4LRs1CkPtlhJF6vxZ/7UkInT0Lb5MLvIKvC8rH0q8s7W7r7z1ghy2bN7rCCWpblUxuF7PdebhQ99fhAtjX4H4EM6tWgvRfuxWuSaZohCd3Orrnoq4InuXeN8V5KZTC4J6vgEVlM1aMr6TQbENKY0VjYg== 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=4031/eD+z7zjdlWhp3b+fysDVSFdjogWtt0VzsXMpEw=; b=wuUSflG4Fe6aNxs/hlXS6Pxost8Z2xWfaYnTvABzBogqMIcKT5Lw2hwcrgERv2xxOZ2+ITrcyGaOz8V6kZJmIh6+PwllMoz8uchoCsU9AE5xVYSI+MfXAWrKBUr18521ZPvEMbAECsFgixTlwFsEi+AjaEUGe0NuHO3mjXxnZC0= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:06:15 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:15 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 24/25] xfsprogs: Add parent pointers during protofile creation Date: Thu, 10 Nov 2022 14:05:26 -0700 Message-Id: <20221110210527.56628-25-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: BY5PR20CA0035.namprd20.prod.outlook.com (2603:10b6:a03:1f4::48) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: c7ee3789-2e23-4c6f-2087-08dac35f6757 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1LRNb234yVZ7jw3Fo9s3ufzWOC4lxt1E7QgCjcZTbKazWXuqtZrDbFmtqCxEv5VMTGryYyqItk5EdjcDLh5Z9B1oWWJcm76fKUkC0JtZzNU5l8w1IfCUyx2wAVDXhKdPkct0MMkbfsH94TDHSIYHUfqRmakaV+olwm9Qn/lOeQDGil4Sk09fwo/mTqLDmIPHA5ClDAdllYerxixpnoes0afL4YULC2qjubo766agkJDlF4G0Eb1JwoPY2v+Po7m8XU+irZHvRWH6FTHAYRETzHxAnUQbSbJhy0QiaynzVaIAvslfXRFHWWr3/dB4wFsZw8pRNnkv4s0fjeXRoOPmovywR57H59cma7yOJxet6GfnfU+5e9gv//uManmyDoznsanQ1kXT+poN7ZFmBMlev7Bu8bKPG6q4DQzgQadrEcFR5dMEwj+6zky5zYTok8Coj7HliBESxJs5LsfESoZT2MIo6RS5+D8k0DBjelJD20VWCKiaoShvEu9TFKOlf3RJNYt/RyJTum/HI8muxr4eGVweM2c9NdEJIKkLsH8GFfuz7keUSjnN9xtsWikmrQRwJbANR4bDJoVXEPb87+zHCobzMxO82WH8Td0he+eiyVHdZ34oKyopwmm3/xlLbuFYTQBZBPmz7/v4S0pZs9yfEucfzzOo7iofm0QQf570B59ReUbXEoQOj0feHdyH1wQDAdi18rjq+2wTwGW2xoESAw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PrcDnpYO3S+ZCj260AA4Zk27DVBTY2lvAPXica8CzmJTZKBf1ZpzG0PPBa/SVDQrIjBu0jmPb1Nk6lv/pMoq3sikgXmJ+fUGzCX4xeywpRXeaoJgqvveJQvPDYWI4tNM9izRxhTYFmk/FxeAbiaqR8h3oWiMsSnZHkE8k+Hj+x7xHSTyM216a8YpPGYtAbDjouJYcHxJwWDovBZ4AfLLPIJ9UCGn4DwrZQjFDZnqm0/EqGHHrgjXc0vugnYZiEPDHCtP2n087JryocyYvrSAUF/2xoO8lxt7naKFf3VKebyH8PhxAk0JyOQAfkWvsGn3YRasFZTIQoQssWcNy0x3sqgzma6Lr42+/YXUPVtDzJRydrAXBWtTxc+4GzmMndfT9rDPJKHq+be96+FEdSaEDP2kxejC39I+xu3OjTFrG8KVo1Lcdq2tuMDWDL4gh8n/7u9FxGzNvl2/6H9bKc2RmNJvOhkiZs2lGV5W5rbvY2h1hGQ+EZ2mHr43b4NendP5Mf6VHScKrVE2PMSYkKOSwA587ffVviH/VY7pX5KWVPvMWMglxyt1HIbrFiJz3G2+1bqs+1OBq6D+gCTdqyejSTrtZUJywiw7acywO9PzQAoMI98YMzD3TMQ5SKylmovJuPQ25QUoQKCTundCdNQXpuo7xW0spvBvx0DtcFLAMboc/rklKJ5XIwgMDRyZ8JpDxcllrvnorVyOzJh40eYDg12+rvw4MUNKR1vpVh5lKvP2UNsnF8orshBquXbRDZ74/M3X+cLKqsuBO6QpzSNUsnSyjQ9iBOM7SrA2YLVyFEHxHfwxg/ntxB99LO+ke+Ty7Qr+5gLQAkiPq4nuokk0LGrTzoVDnJA7NZA2xVkO6KyZSPCqI2er8JLAJnHzVNonoYFPdkJNJEfOg67/QkI7rOiVDfDohKtD8eu7M8FtynpI1YjmaNG7UjbP3Y9lRpfd6WbqJ3q34ods5xLUD8YEVhCeu64G/bNsAqIoOLDWlwpPpyvBCn/MUvD0S54rW4f4jeSmpycqyjhTHhS02bqe7tLkc9KPdNkSqPihIkmY4dPw4V+mwLNk4vxbPoUJ/KHe9KKByZAX5B4pynew8dR8zERtpUiF5Knus8bCqtaNFihQyZAfKWHOgE4d2au2Pggo9AqlZxdGXu9C+TiNHJmVjIUb4HwmkBqXTlLVu1KeiZQPAtZDtghcNA9vAZTpuW97cupV8h2n9b/LgWV1F9MAPg7sdZBGx61BIArIpzLpOAcVN3ZrUnu+Fq/sg9Fz7RrslmHudN+WWWNd5ztdrAatsskhR7Q8EdDcB/L1PWF0SaPYyV6Rkm2qHfTHNEmrTyZkau+e/i+mAl7LFbx3HeMADb+yDvtt/l5pzikFjLnEtV5RSsR/Q1OIuuFMxNdcQ5SVaqGBsUnV089r7F6dYCW54Z+GpTHq8MVdHgwJM1ip489E14fwa1CMCjc0izQ9HtBtk9n3Uaf/w9PTP8MSe7g/Cf0gNSix1akCD5V45hT+1CiBtCF9Ir4GCUNxlERFnLu/fWwcN69EqMFXq4jBfSApDr6pGrwemDrAjL9GolZMwidazJTkY2MeGH9fAWKjjnuyuQ0s0vYeBAB/0sxV/FHUbA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: c7ee3789-2e23-4c6f-2087-08dac35f6757 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:15.0512 (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: rQx1U48S9+h62ltcHExdSLZ9hCFfMzJcBlrOEMrRpyC7dRsh3Cd/0IYGfUwo0kAyb+R52j+6Pi9UFONeH4zgeNOdpMbKytWl71Uxd8+21yY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: PWP9QM1olrmH09h2et-EZPMsh3l-JIuM X-Proofpoint-ORIG-GUID: PWP9QM1olrmH09h2et-EZPMsh3l-JIuM Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson Inodes created from protofile parsing will also need to add the appropriate parent pointers Signed-off-by: Allison Henderson --- mkfs/proto.c | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/mkfs/proto.c b/mkfs/proto.c index 6b6a070fd0d2..36d8cde21610 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -8,6 +8,7 @@ #include #include "libfrog/convert.h" #include "proto.h" +#include "xfs_parent.h" /* * Prototypes for internal functions. @@ -317,18 +318,19 @@ newregfile( static void newdirent( - xfs_mount_t *mp, - xfs_trans_t *tp, - xfs_inode_t *pip, - struct xfs_name *name, - xfs_ino_t inum) + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_inode *pip, + struct xfs_name *name, + xfs_ino_t inum, + xfs_dir2_dataptr_t *offset) { - int error; - int rsv; + int error; + int rsv; rsv = XFS_DIRENTER_SPACE_RES(mp, name->len); - error = -libxfs_dir_createname(tp, pip, name, inum, rsv, NULL); + error = -libxfs_dir_createname(tp, pip, name, inum, rsv, offset); if (error) fail(_("directory createname error"), error); } @@ -381,6 +383,7 @@ parseproto( struct cred creds; char *value; struct xfs_name xname; + xfs_dir2_dataptr_t offset; memset(&creds, 0, sizeof(creds)); mstr = getstr(pp); @@ -464,7 +467,7 @@ parseproto( free(buf); libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_REG_FILE; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); break; case IF_RESERVED: /* pre-allocated space only */ @@ -487,7 +490,7 @@ parseproto( libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_REG_FILE; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); libxfs_trans_log_inode(tp, ip, flags); error = -libxfs_trans_commit(tp); if (error) @@ -507,7 +510,7 @@ parseproto( } libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_BLKDEV; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); flags |= XFS_ILOG_DEV; break; @@ -521,7 +524,7 @@ parseproto( fail(_("Inode allocation failed"), error); libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_CHRDEV; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); flags |= XFS_ILOG_DEV; break; @@ -533,7 +536,7 @@ parseproto( fail(_("Inode allocation failed"), error); libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_FIFO; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); break; case IF_SYMLINK: buf = getstr(pp); @@ -546,7 +549,7 @@ parseproto( flags |= newfile(tp, ip, 1, 1, buf, len); libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_SYMLINK; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); break; case IF_DIRECTORY: tp = getres(mp, 0); @@ -563,7 +566,7 @@ parseproto( } else { libxfs_trans_ijoin(tp, pip, 0); xname.type = XFS_DIR3_FT_DIR; - newdirent(mp, tp, pip, &xname, ip->i_ino); + newdirent(mp, tp, pip, &xname, ip->i_ino, &offset); inc_nlink(VFS_I(pip)); libxfs_trans_log_inode(tp, pip, XFS_ILOG_CORE); } @@ -599,6 +602,23 @@ parseproto( fail(_("Error encountered creating file from prototype file"), error); } + + if (xfs_has_parent(mp)) { + struct xfs_parent_name_rec rec; + struct xfs_da_args args = { + .dp = ip, + .name = (const unsigned char *)&rec, + .namelen = sizeof(rec), + .attr_filter = XFS_ATTR_PARENT, + .value = (void *)xname.name, + .valuelen = xname.len, + }; + xfs_init_parent_name_rec(&rec, pip, offset); + error = xfs_attr_set(&args); + if (error) + fail(_("Error creating parent pointer"), error); + } + libxfs_irele(ip); } From patchwork Thu Nov 10 21:05:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 13039338 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D295C43217 for ; Thu, 10 Nov 2022 21:06:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231824AbiKJVGY (ORCPT ); Thu, 10 Nov 2022 16:06:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231849AbiKJVGV (ORCPT ); Thu, 10 Nov 2022 16:06:21 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D87F34AF21 for ; Thu, 10 Nov 2022 13:06:20 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAL2xAs003525 for ; Thu, 10 Nov 2022 21:06:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=9uahsxhrxrZctLjO7i0bKlN8TFtQJxwASfWHnhLF6Cw=; b=hzwsTJukRUMfX3vDHp9eRPBM0QIMQHqWbnMMvP5NZFVjxRt1+KnXghQ1Dl0D6MqGhE14 3kzIAuyUQdEnYeDkFDD7M9G9Vz/FdztdBXZcy+pXy1cyrFG1f3J6tpighWwi0AWV6G5L gHGls+0Rce6knbVVEvFoELsuE5O9kZB4B90/qFpBTNULKvlLTfe3yYygYd3xz+lVn1hE NPv1K4KuakerScOU94vHJAez48t9HFiNReFOrKvZQJorXDKXqjdVhQuVNy1lBgYgs71x yzlyfscfxX7J95wGebxRns38lZrtkWd3CMp7ysBsaMSzYb0emf8VdZNsEV3EccR9xPKj zA== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3ks8vcg09x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:19 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AAKatx8009687 for ; Thu, 10 Nov 2022 21:06:18 GMT Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2108.outbound.protection.outlook.com [104.47.70.108]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kpcq5hbp1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 10 Nov 2022 21:06:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hwHA7zrxke68dtzKumaKxTRizlLqh+6bpV3lbNS5lgbvwtHdbMUC8PbTlxujqSioVr86VXz/M/HajRRBQh66EzKSiX3XFhRJsgtP4Pz9l+h/X90CKiUOxwaWgYnvqQr5Jja4nAUdtdkgBIn+E4GG7Wp0R0Ypi/wnPUoiaKeERFddq5RpyFt5nS0gnFLUidzorWZReRf4P62z1HMtqJJ8ZZwA8xk+kJdnBz5msVcxOeQzBp6easc3UFdutiNj/nPbBtWKt92z8Jo6Ws3gG6L/83L0iAiVL2HRL3Up0nqN8YyfXhhlx3xq8Glt/AoIGWlWlnuAnJMM9XbhxyrLfJl7Kg== 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=9uahsxhrxrZctLjO7i0bKlN8TFtQJxwASfWHnhLF6Cw=; b=JwYd7rxc24IUqkDiakZ0KXRE7oeesVPs94q8mFfIIBG5DEmp52vYA4bCSRVFPAOfAswAum6/vdphrObli19v+IAf5j/2pl3XPS+ZK1E+pn1ohb2zPcewapVKmDrJhvOk3Rub1Ct1JYpO6FKgPkBYkxmEKwWMu/lkQhAYJzqDlp7SaBoC1yEsprS8mhp0Deem6civ2HQrzSyMs0KxmTfy+rfKnVw3jcXdZeY7SFd1N8+37XOmHntUmLCzNCUFj7B+BCkdQmk4vZkQ+IwGyHt10SXkCmbMvzhFMy0pNAZIoYCNUJ8GXydBLA96EQatlqScAq0OMUg3zhVYJ+Eku4D6Zw== 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=9uahsxhrxrZctLjO7i0bKlN8TFtQJxwASfWHnhLF6Cw=; b=cVvs7RaNhDbtWGHCVdPXu4kBEexHFM/2vKGA5RfmxajW9T3jbKat12EkbykzpLkmzmVOhFYiNL/je6bmgxUdLuejM8Y1MheZ/ImJk1WojePsLs+N4w9voRjn59uZSJMubNmzvoJeqcKMe/ah84IFa6G5AIGFB6HSveN2id+rdb8= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by SA1PR10MB6318.namprd10.prod.outlook.com (2603:10b6:806:251::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5791.27; Thu, 10 Nov 2022 21:06:16 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::c3f2:bf22:a83d:beb3%3]) with mapi id 15.20.5813.013; Thu, 10 Nov 2022 21:06:16 +0000 From: allison.henderson@oracle.com To: linux-xfs@vger.kernel.org Subject: [PATCH v5 25/25] xfsprogs: Add i, n and f flags to parent command Date: Thu, 10 Nov 2022 14:05:27 -0700 Message-Id: <20221110210527.56628-26-allison.henderson@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221110210527.56628-1-allison.henderson@oracle.com> References: <20221110210527.56628-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0253.namprd03.prod.outlook.com (2603:10b6:a03:3a0::18) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB4306:EE_|SA1PR10MB6318:EE_ X-MS-Office365-Filtering-Correlation-Id: 0ff06841-f885-4eba-eb51-08dac35f6840 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RMUEbN6e8hdXytt8fAwslQUVZ5eGpfwLvexUtS+5SDsXprfwm0YfpoteP11jncIomtPG6bd6gUO3SvUqcLtp1P6NMcTWi2q414O4dg4efw0HiJgK3FKHJOJeZOmRnB0eAhpGHm4FOFAqRnbv0y69mg8udd9riHPzOkwX8jSVY+em6wgpJ1DRUNr9dEVBx8ETo8eHjjXorA3RdzPyI4Rqls9w5tMm7koYWxBYe3MOIUcmxr+ca1gfOpdlqNb3xlsW02FU8TzgH7Zl0xBbvuSu6F14fFaz9u2igWv+uR6csuIDDmXWB9O6w8epFvvoY9UX1ieW2s9Q0gVZbAn8MANjVa8PqLrf59NCwvMF/gLb9fk41jj+jT0vCYyFT5a0MVgqfnWtDi6NLvRmq3w9pBEEvprcpVkfSybnvx6CEnY7SXvQFeK+bSppMMo240CQNcFt4AhnXZkIZYstF2HZr6z7k+uSh5idOANq0f++ceiJ4+hJ/pua8yhYxAgc1vYqehYaJc2I0tCnukSc8nFhHKUJVdaWeBLE6R5ppAM1bL2pNdyY0wCS6v+EU9DtIMMddxE7ksmQHNBqghK+FiP0S4YhXSnYw9QUZqQF0VQqu/7V8G+9HOjBsUWibRD4GYhEyN3ZjDH6LjygENsoCk0HscHs692e6vgTk0LJLMDcQHMbeGt836lqj8wRD6x6HBPLoy0UdR9dmJRM2T2ssO0uOWsLLw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(136003)(396003)(39860400002)(376002)(366004)(346002)(451199015)(2906002)(6916009)(36756003)(66476007)(316002)(86362001)(6506007)(478600001)(30864003)(9686003)(6512007)(26005)(8936002)(41300700001)(6486002)(5660300002)(6666004)(38100700002)(66946007)(8676002)(66556008)(83380400001)(1076003)(186003)(2616005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Q/uVh3FYXqrQi1SKrNHQXRL+1J5Bef3SDqQcbo2yRnVHzWo9RGs2iApd9C4YT4af/Q0461TnrQk7vsx4aq7Et4Sxj9YhRjl1kNM2kQNsxj7evZ+HUvTSjR9+oDheb+jxJ1CoweLWfGOFgCseL8wLMsgmMxqvx5p12kb1N3hAeY5SDMHbJSdFriCfmq19qmUuyZdOAMrp6dAgn/aizMmWep4fizzhWh1ttC77uTL8JRd8ylWGZXtZYJgANo54G9UltEWy6DsHR0UuVVJfD+DXDeRz5zexWLBJXHiwMnJleSNPMApOVL9xvvv2RDQLxb/zqP4wLNpCvu6ed+zAsPpYvU7plaxnHDWRehrRVrkMQ6qJbnNbekThyvlb2KCeMD+0eKxUcL1nYwJbjdyh95jHEAIpoinVCIQ0TikqiOaDfNdoL2eTMCQtR8BHnMQhA4pqXiiW4uuZ3TwZZd8YL3DNL8UILiF8D2nAGRd7/8HtpYQsd2I5D9UjP5xiks19y0ZcSmazEEd7FbGGSMEBVBLmfuy/R1JiHEvSGjef+p7rYtEo9utv8L35KFnf5aVigR4TiWcxXN/6rP/vYq/pgAgMaXiJAeVUe3A9ghzTO4Do9pakqnZ3ki/iPnif3dn80DiWPWl2VN2sgW2o0wtP0xIgT2ySg2zDDKB/FXhbNhBYWzV8IdiWytKQAV4eHei+7x4/FZ2e7C7v6Zw5jFW/r60kmqiloTg9ZCRKS6hgZy/S8GNjVU+68Xj8XhosCKbozyWmXKtk0u3X8Qe99tuIWz6P/LSaCdbbPBUvdFIMEd5o26UJiAqdFzz0nfaFFRGwFf9rqti9FAXKIrjdlH9XAzIQfqk902cKPRUvP86SDNToz6MV+fkVPPzCuVVuATTHSTW+eGc9YsQcatvblD3BUZ4RhS9pActFhj8/VhTwsnuz9PMh52lZJwVWEHIskp9LmHsVdJVHXuIwS3vuYmh0TmNsOTtMudbWa2Ehty8hP4OOeWg+rEsfRnJ8SR3F7sVco8kmAiXKRMUWxm7qZQ8TnryrGYCJCu/+ZgskWAUR9NsdYphL+DECF+hpc7VNWJ2uDh/rG5sg/Yj2b/f11bcPEYKBcXNnQI/QTj00PR2UkiHnbpT34jzQjCLZzfRr1f8JJvlx9kwyO8l1ernbRqIjLRr9HL/9m1cqePHrZ6TlEM/B2lxKpAPxxtdV/S02vuOGAIq3QIEMWmlUVDCwGI/prm+pQBEG1/3vk91BFoTObTCGToJqlq1r02ARuCo7NWsB1P2cwZTJAbcjsqtjXgfhfrwjX8molRSxzJqqZcluRYcXlOLO9nP/wOJ/tYXlBnwWtClyYmPMQZOFWJCi1eQFWrwCAWkaF3BRYgsbVMvvNwIZ13+xv0hmjY98bXTFfxO0OrxbTG9tNdZRO3DZ9M/O54HNVmb0BhCJ+6xarPVF+WoGe41zNCgEbVzY8xfa2VxwyeCZDdEUCaqm60YxJPIJqPjRc7KuR+Aooy8+xIBVBVd6StL76b6gNDbMIvZxjHBG7uKnqNoZ1BrwqQIUScz1HiOjxWpK6kdeWpCU+fnDUVZVzjsxvZnG/OraRQ7TT0bvLljRHYm21zV3xjD2r6rRSV30Cw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ff06841-f885-4eba-eb51-08dac35f6840 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2022 21:06:16.5834 (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: 7oyQxnq60MX6OI93+/5Wo3wg1Fgc4c2Kq0DkowsaWvD3pENPSWg2pjwNTrCMjjUejhOhUolkqDGbHWtoNmD9X6gH46aZhNhaZzsweO6vHyg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR10MB6318 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-10_13,2022-11-09_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 adultscore=0 malwarescore=0 mlxlogscore=999 mlxscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211100148 X-Proofpoint-GUID: Sx0AJuevIGlQlroDPqMVTrHXnNtUCsIG X-Proofpoint-ORIG-GUID: Sx0AJuevIGlQlroDPqMVTrHXnNtUCsIG Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Allison Henderson This patch adds the flags i, n, and f to the parent command. These flags add filtering options that are used by the new parent pointer tests in xfstests, and help to improve the test run time. The flags are: -i: Only show parent pointer records containing the given inode -n: Only show parent pointer records containing the given filename -f: Print records in short format: ino/gen/namelen/name Signed-off-by: Allison Henderson --- include/parent.h | 17 +++++++--- io/parent.c | 78 ++++++++++++++++++++++++++++++++++++---------- libhandle/parent.c | 73 +++++++++++++++++++++++++++++++------------ 3 files changed, 126 insertions(+), 42 deletions(-) diff --git a/include/parent.h b/include/parent.h index fb9000419bee..2e136724b831 100644 --- a/include/parent.h +++ b/include/parent.h @@ -17,20 +17,27 @@ typedef struct parent_cursor { __u32 opaque[4]; /* an opaque cookie */ } parent_cursor_t; +/* Print parent pointer option flags */ +#define XFS_PPPTR_OFLAG_SHORT (1<<0) /* Print in short format */ + struct path_list; typedef int (*walk_pptr_fn)(struct xfs_pptr_info *pi, struct xfs_parent_ptr *pptr, - void *arg); + void *arg, int flags); typedef int (*walk_ppath_fn)(const char *mntpt, struct path_list *path, void *arg); #define WALK_PPTRS_ABORT 1 -int fd_walk_pptrs(int fd, walk_pptr_fn fn, void *arg); -int handle_walk_pptrs(void *hanp, size_t hanlen, walk_pptr_fn fn, void *arg); +int fd_walk_pptrs(int fd, uint64_t pino, char *pname, walk_pptr_fn fn, + void *arg, int flags); +int handle_walk_pptrs(void *hanp, size_t hanlen, uint64_t pino, char *pname, + walk_pptr_fn fn, void *arg, int flags); #define WALK_PPATHS_ABORT 1 -int fd_walk_ppaths(int fd, walk_ppath_fn fn, void *arg); -int handle_walk_ppaths(void *hanp, size_t hanlen, walk_ppath_fn fn, void *arg); +int fd_walk_ppaths(int fd, uint64_t pino, char *pname, walk_ppath_fn fn, + void *arg, int flags); +int handle_walk_ppaths(void *hanp, size_t hanlen, uint64_t pino, char *pname, + walk_ppath_fn fn, void *arg, int flags); int fd_to_path(int fd, char *path, size_t pathlen); int handle_to_path(void *hanp, size_t hlen, char *path, size_t pathlen); diff --git a/io/parent.c b/io/parent.c index e0ca29eb54c7..4c895bbba16e 100644 --- a/io/parent.c +++ b/io/parent.c @@ -19,7 +19,8 @@ static int pptr_print( struct xfs_pptr_info *pi, struct xfs_parent_ptr *pptr, - void *arg) + void *arg, + int flags) { char buf[XFS_PPTR_MAXNAMELEN + 1]; unsigned int namelen = strlen((char *)pptr->xpp_name); @@ -31,24 +32,36 @@ pptr_print( memcpy(buf, pptr->xpp_name, namelen); buf[namelen] = 0; - printf(_("p_ino = %llu\n"), (unsigned long long)pptr->xpp_ino); - printf(_("p_gen = %u\n"), (unsigned int)pptr->xpp_gen); - printf(_("p_reclen = %u\n"), namelen); - printf(_("p_name = \"%s\"\n\n"), buf); + + if (flags & XFS_PPPTR_OFLAG_SHORT) { + printf("%llu/%u/%u/%s\n", + (unsigned long long)pptr->xpp_ino, + (unsigned int)pptr->xpp_gen, namelen, buf); + } + else { + printf(_("p_ino = %llu\n"), (unsigned long long)pptr->xpp_ino); + printf(_("p_gen = %u\n"), (unsigned int)pptr->xpp_gen); + printf(_("p_reclen = %u\n"), namelen); + printf(_("p_name = \"%s\"\n\n"), buf); + } return 0; } int print_parents( - struct xfs_handle *handle) + struct xfs_handle *handle, + uint64_t pino, + char *pname, + int flags) { int ret; if (handle) - ret = handle_walk_pptrs(handle, sizeof(*handle), pptr_print, - NULL); + ret = handle_walk_pptrs(handle, sizeof(*handle), pino, + pname, pptr_print, NULL, flags); else - ret = fd_walk_pptrs(file->fd, pptr_print, NULL); + ret = fd_walk_pptrs(file->fd, pino, pname, pptr_print, + NULL, flags); if (ret) perror(file->name); @@ -79,15 +92,19 @@ path_print( int print_paths( - struct xfs_handle *handle) + struct xfs_handle *handle, + uint64_t pino, + char *pname, + int flags) { int ret; if (handle) - ret = handle_walk_ppaths(handle, sizeof(*handle), path_print, - NULL); + ret = handle_walk_ppaths(handle, sizeof(*handle), pino, + pname, path_print, NULL, flags); else - ret = fd_walk_ppaths(file->fd, path_print, NULL); + ret = fd_walk_ppaths(file->fd, pino, pname, path_print, + NULL, flags); if (ret) perror(file->name); return 0; @@ -109,6 +126,9 @@ parent_f( int listpath_flag = 0; int ret; static int tab_init; + uint64_t pino = 0; + char *pname = NULL; + int ppptr_flags = 0; if (!tab_init) { tab_init = 1; @@ -123,11 +143,27 @@ parent_f( } mntpt = fs->fs_dir; - while ((c = getopt(argc, argv, "p")) != EOF) { + while ((c = getopt(argc, argv, "pfi:n:")) != EOF) { switch (c) { case 'p': listpath_flag = 1; break; + case 'i': + pino = strtoull(optarg, &p, 0); + if (*p != '\0' || pino == 0) { + fprintf(stderr, + _("Bad inode number '%s'.\n"), + optarg); + return 0; + } + + break; + case 'n': + pname = optarg; + break; + case 'f': + ppptr_flags |= XFS_PPPTR_OFLAG_SHORT; + break; default: return command_usage(&parent_cmd); } @@ -169,9 +205,11 @@ parent_f( } if (listpath_flag) - exitcode = print_paths(ino ? &handle : NULL); + exitcode = print_paths(ino ? &handle : NULL, + pino, pname, ppptr_flags); else - exitcode = print_parents(ino ? &handle : NULL); + exitcode = print_parents(ino ? &handle : NULL, + pino, pname, ppptr_flags); if (hanp) free_handle(hanp, hlen); @@ -189,6 +227,12 @@ printf(_( " -p -- list the current file's paths up to the root\n" "\n" "If ino and gen are supplied, use them instead.\n" +"\n" +" -i -- Only show parent pointer records containing the given inode\n" +"\n" +" -n -- Only show parent pointer records containing the given filename\n" +"\n" +" -f -- Print records in short format: ino/gen/namelen/filename\n" "\n")); } @@ -199,7 +243,7 @@ parent_init(void) parent_cmd.cfunc = parent_f; parent_cmd.argmin = 0; parent_cmd.argmax = -1; - parent_cmd.args = _("[-p] [ino gen]"); + parent_cmd.args = _("[-p] [ino gen] [-i] [ino] [-n] [name] [-f]"); parent_cmd.flags = CMD_NOMAP_OK; parent_cmd.oneline = _("print parent inodes"); parent_cmd.help = parent_help; diff --git a/libhandle/parent.c b/libhandle/parent.c index ebd0abd55927..3de8742ccefd 100644 --- a/libhandle/parent.c +++ b/libhandle/parent.c @@ -40,13 +40,21 @@ xfs_pptr_alloc( return pi; } -/* Walk all parents of the given file handle. */ +/* + * Walk all parents of the given file handle. + * If pino is set, print only the parent pointer + * of that inode. If pname is set, print only the + * parent pointer of that filename + */ static int handle_walk_parents( int fd, struct xfs_handle *handle, + uint64_t pino, + char *pname, walk_pptr_fn fn, - void *arg) + void *arg, + int flags) { struct xfs_pptr_info *pi; struct xfs_parent_ptr *p; @@ -65,13 +73,20 @@ handle_walk_parents( ret = ioctl(fd, XFS_IOC_GETPARENTS, pi); while (!ret) { if (pi->pi_flags & XFS_PPTR_OFLAG_ROOT) { - ret = fn(pi, NULL, arg); + ret = fn(pi, NULL, arg, flags); break; } for (i = 0; i < pi->pi_ptrs_used; i++) { p = xfs_ppinfo_to_pp(pi, i); - ret = fn(pi, p, arg); + if ((pino != 0) && (pino != p->xpp_ino)) + continue; + + if ((pname != NULL) && (strcmp(pname, + (char *)p->xpp_name) != 0)) + continue; + + ret = fn(pi, p, arg, flags); if (ret) goto out_pi; } @@ -92,8 +107,11 @@ int handle_walk_pptrs( void *hanp, size_t hlen, + uint64_t pino, + char *pname, walk_pptr_fn fn, - void *arg) + void *arg, + int flags) { char *mntpt; int fd; @@ -107,17 +125,20 @@ handle_walk_pptrs( if (fd < 0) return -1; - return handle_walk_parents(fd, hanp, fn, arg); + return handle_walk_parents(fd, hanp, pino, pname, fn, arg, flags); } /* Walk all parent pointers of this fd. */ int fd_walk_pptrs( int fd, + uint64_t pino, + char *pname, walk_pptr_fn fn, - void *arg) + void *arg, + int flags) { - return handle_walk_parents(fd, NULL, fn, arg); + return handle_walk_parents(fd, NULL, pino, pname, fn, arg, flags); } struct walk_ppaths_info { @@ -135,13 +156,15 @@ struct walk_ppath_level_info { }; static int handle_walk_parent_paths(struct walk_ppaths_info *wpi, - struct xfs_handle *handle); + struct xfs_handle *handle, uint64_t pino, char *pname, + int flags); static int handle_walk_parent_path_ptr( struct xfs_pptr_info *pi, struct xfs_parent_ptr *p, - void *arg) + void *arg, + int flags) { struct walk_ppath_level_info *wpli = arg; struct walk_ppaths_info *wpi = wpli->wpi; @@ -160,7 +183,7 @@ handle_walk_parent_path_ptr( wpli->newhandle.ha_fid.fid_ino = p->xpp_ino; wpli->newhandle.ha_fid.fid_gen = p->xpp_gen; path_list_add_parent_component(wpi->path, wpli->pc); - ret = handle_walk_parent_paths(wpi, &wpli->newhandle); + ret = handle_walk_parent_paths(wpi, &wpli->newhandle, 0, NULL, 0); path_list_del_component(wpi->path, wpli->pc); if (ret) break; @@ -176,7 +199,10 @@ handle_walk_parent_path_ptr( static int handle_walk_parent_paths( struct walk_ppaths_info *wpi, - struct xfs_handle *handle) + struct xfs_handle *handle, + uint64_t pino, + char *pname, + int flags) { struct walk_ppath_level_info *wpli; int ret; @@ -192,8 +218,8 @@ handle_walk_parent_paths( wpli->wpi = wpi; memcpy(&wpli->newhandle, handle, sizeof(struct xfs_handle)); - ret = handle_walk_parents(wpi->fd, handle, handle_walk_parent_path_ptr, - wpli); + ret = handle_walk_parents(wpi->fd, handle, pino, pname, + handle_walk_parent_path_ptr, wpli, flags); path_component_free(wpli->pc); free(wpli); @@ -208,8 +234,11 @@ int handle_walk_ppaths( void *hanp, size_t hlen, + uint64_t pino, + char *pname, walk_ppath_fn fn, - void *arg) + void *arg, + int flags) { struct walk_ppaths_info wpi; ssize_t ret; @@ -228,7 +257,7 @@ handle_walk_ppaths( wpi.fn = fn; wpi.arg = arg; - ret = handle_walk_parent_paths(&wpi, hanp); + ret = handle_walk_parent_paths(&wpi, hanp, pino, pname, flags); path_list_free(wpi.path); return ret; @@ -241,8 +270,11 @@ handle_walk_ppaths( int fd_walk_ppaths( int fd, + uint64_t pino, + char *pname, walk_ppath_fn fn, - void *arg) + void *arg, + int flags) { struct walk_ppaths_info wpi; void *hanp; @@ -264,7 +296,7 @@ fd_walk_ppaths( wpi.fn = fn; wpi.arg = arg; - ret = handle_walk_parent_paths(&wpi, hanp); + ret = handle_walk_parent_paths(&wpi, hanp, pino, pname, flags); path_list_free(wpi.path); return ret; @@ -310,7 +342,8 @@ handle_to_path( pwi.buf = path; pwi.len = pathlen; - return handle_walk_ppaths(hanp, hlen, handle_to_path_walk, &pwi); + return handle_walk_ppaths(hanp, hlen, 0, NULL, handle_to_path_walk, + &pwi, 0); } /* Return any eligible path to this file description. */ @@ -324,5 +357,5 @@ fd_to_path( pwi.buf = path; pwi.len = pathlen; - return fd_walk_ppaths(fd, handle_to_path_walk, &pwi); + return fd_walk_ppaths(fd, 0, NULL, handle_to_path_walk, &pwi, 0); }