From patchwork Thu Aug 4 19:39:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936640 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 14425C19F21 for ; Thu, 4 Aug 2022 19:40:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239158AbiHDTka (ORCPT ); Thu, 4 Aug 2022 15:40:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45808 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237363AbiHDTk0 (ORCPT ); Thu, 4 Aug 2022 15:40:26 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48C0560F7 for ; Thu, 4 Aug 2022 12:40:25 -0700 (PDT) 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 274HbRX4015052 for ; Thu, 4 Aug 2022 19:40: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=lFFigxoVg0/7IoW7uvwD7trNiu5Jb2uweF8AW3Az49A=; b=z24qkoWSqXZAeoKUFBAEDQGuIyqHsGhqt/w2C6/JuWWhWUKl1CC5WZltM/pDj2Gb4uEb WwFlWra77s6DSO3vaggqfVARVYbWPTTsIrKSGZp9IvP8SPsvtcUhGR25BhxdpbbdtDP+ N4eMKolskthtBDRbfdb7mgKLSWxThX3FXp0B4AgreUfe4kGicpenSd3aFKjYmcBIjiwh mKoqG0kt4Fqth65qpWFseA1nOKHOEH7fk/WUzBXBgdCgjFB9taESFkwbL3vDqSEZ+hZE Ps4p0DIa/gKmi/EVhewXwWpWcDbVFDiXxhwxZc8E0BXKtyrIVr4xXcuyf6VdMAFuBiVu Yg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu2cdn3y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:24 +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 274IEkVk003021 for ; Thu, 4 Aug 2022 19:40:23 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2109.outbound.protection.outlook.com [104.47.58.109]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34n716-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=itUHWXyVluJCFo9baWrV/X+h1H7a6QAo4DczjVkMvYw52oXGT0xeZ3KXu3mKmeIjLLLyOkOmAb80jLM8RS7ywZoXzI64MSmo/GZ8ygT8yfScg619TpDTQlaosNxmWDZ4dca6gzhl9SBqfxSQXbuAL/2Ng4/C9CAMwrFqZ1pSSf+ASvpZrNS1GpA77//Y3XcnxuGTAXk+fhtauM2b8a1Kty1QtVjbjyeIUYrmg9MyOjOcNrTffeQAl1tPpD68mRxtJLdVzTSyms1gQ2pIZRsLtzd8+T3ZyvBRJ/usrd2YOUKdLBV8wbxXkzXv6RtAQdCU27+kVh22Gjlz30AQNbBalw== 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=lFFigxoVg0/7IoW7uvwD7trNiu5Jb2uweF8AW3Az49A=; b=R6YiVdkbfWFf7nL29X4ktTsfHEDOhFBCtEQAe/eXjMAnr8I3i67wGe4BzOncTRVtsExmh76XhRKSkkD2rqwB9NBSuyfRW3OPdfV1oypOhMATDF/4xES1+NfQdGLFqNRdX0HriIqiWSEUlrh7CcEQPBDFLvTpNKbDNsKsStNrbjIS+Kk1tb8ojn+3PUpUmYl8CsC7kjNMRzfVuP/XyZmhCbkNXGQ3rQbCxgqO7oHmS1+NRXpY4c+6kXHJTlQNZ+Ao2Qw6FGCwXx34UiQNCEQRL10c9lRMMqTDAMcdE+LDMILbwzfT1pvMnKKs3OoA3wbT3zwup2JKPMC4fdIXzFCLyg== 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=lFFigxoVg0/7IoW7uvwD7trNiu5Jb2uweF8AW3Az49A=; b=WmpzRrKnQbeb2pMIJ/Ivb7L/KXg7Buhr5ANt1WYyHdDeLfEw7dmndRTbdTw/myJ4DxN3wvYy9rZDDV62pTrFv/I2zTXXruYCOzQ7nL75+FUJekkNA6KtYhe8zeS0QBOHhvxi0FjzDsoR8im08Q4Z/EjSbqzlDzBs6E44HanTqFw= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CY4PR10MB1368.namprd10.prod.outlook.com (2603:10b6:903:22::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.14; Thu, 4 Aug 2022 19:40:21 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:21 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 01/18] xfs: Fix multi-transaction larp replay Date: Thu, 4 Aug 2022 12:39:56 -0700 Message-Id: <20220804194013.99237-2-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4459cce1-fb0d-47c4-2b3d-08da76512b0e X-MS-TrafficTypeDiagnostic: CY4PR10MB1368:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8cOAei94oWjUPVT/nAbxOfl7glJLFA7T0N5z13w4kCTJlnv4El3YwIKA+YYc1ySZVROK7svGvTA01I8Mz2ktqXnsot4PRksc748owgUqLvih3LY/duvywnbNPb1FGGxYyxuV2TQEO68S9UX6hHsnX5y7wVtOjc1Z29gzYUuXwk+BfFfIq5H1yCWOsM41L74fvlo6tfJFyhG/9N32ycohLatsnsN1yebpSV4sH0zfsRWcLkTRR3XlirDqGdaHcqSDtqZVxrlQ/3Tt3u5k156uj92DuKSCeree38f5iyGXCEUjDqJNiTxtT3ICZn9u+B9LQZniZLqsd5Hx+L9sORsKqSGzBERlUFJbNUddZbGAyfGSq4sdLgqCNa4fL33qXpxEpzTwG/eUu2G8Wza+cNw6xC5hbpzLHzt67ctCsx2URuSmKyyN27k7RWxxtLbBjaQzExQPQ7TBrdHrwt5CZPYaGO4OeBMx9lZYwiA/MAWk2KqBHovuY3gvin0ezusrX3i/TZ9J++tvM2Sva0JTYAROSaYcWCiAfVvSUUWP+vuK5Mn76mTOq+Qy4fU4eKpbt/MDf9aKZPQJ8ia5Fc9H0Q+6BsmaxJGeCwpL6IipDNfnb+K8cJSiYwGjHJjTUHMkcjbttxl01yhPZpjCn1baIsxRPWzUSDAnH8MbfdJBLJemyaXAuSyXiaF19bdjdNYfKi94skVDsaMjukTmSL7nZbtl2oG5K5n3WLqFf6QCgPxt2KhEgTHeYvqjZZy/rBb/XFw3PgU3OrSrqXa5fVXlL90utQy89bVlGiuB7ucFOe7boVg= 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:(13230016)(136003)(346002)(366004)(396003)(39860400002)(376002)(6512007)(6506007)(6486002)(316002)(6916009)(478600001)(41300700001)(52116002)(6666004)(38100700002)(26005)(1076003)(83380400001)(36756003)(44832011)(38350700002)(2906002)(66476007)(66946007)(186003)(8676002)(66556008)(86362001)(8936002)(2616005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WFB03rTCIvpTPrfhbKtUZjqAabhQC3VAB/14I0aaR/+yZ9gbnn/C5wm9rpHLFdHX+PtCmCMtA9d+q3KbgPSTZkbBIB28Z64h5zCgQmjfO6SpmYK/GltEpvTA+7pYhkHYA6TuSk4RwVHO8B59l/vDY6fttaVvT38xg/Pf6JBAmXmM5xVBlJDzfrPBvCFfYuO0CXd54O1dZ/CMt1Y2QpUWvqaduzHX9pUmdOEg+pCO7p7WV94OZ3uhXwjOftuLDS073Z8mL3oqEyOwyuTj8USBHJ1hqRuHqxRWnSxQmDyx74qpxwvTf7erMmmR24y8Ddr7FhWsP6bPnVSkwkZqaK4UpqTPeW7sdgysT8N5/qVoEiM3Euy7J4soYotnc3M1yY4193gxgjQMii++EG8i/Qt6lCG3CZlRm40XfbqE2BZi2FDbqD/ztF0adADdtCkBBss6mK3ufQLwGgvAhUSbqdC8T9Ktui0OUOCUMy4BY3hDnukLuCYHBcMlRXRlCf1TwTblVxlwWGWnVOsevKX6SpYnuWAGWyF4cshz0SR3mL/mxtVApC+NRcZ+5gkDTTcnYGPXG7NTOZVqpkxppVRxpz4PtRVKKKZpCTuRB9O+fam94DUglQ2HtXMoZiMrzIiSVerKJKTK77AYyioeLwebQbuYMM7ek4hBYeMxyVVlMyKfVis3DWjn+nP9O0soYm8ViA2YGDK3rTvcQS9k3EvBWvhUG+iQlDT5L1hyfV4F1GJYTLBFquBrvKWMr834gglSQ7vf/OJAeMZESQdWCSzvruwJf8p2C0ZZ5YSCqsRmu9xDuN4lQTaMYYB77d27lRj2HX2tzMGRZ/rOEDcXI+wKtg8v9CEdz6yQx7UETERn+UmkOTYOTm2oYWHgvACum0poEQzrGjYh8V6qWcr8pnXVIcwfw+m/TOXWEZ20oPIfKjzCTU+dL/qtcSRkwkLDjnNZk+WVXeP/3YoCq5smbQsdEuKSXvbt6sQCoQYFFh8+SQfMapt9gUxCc11pSTxNaniZuiAFi6/AvgNjC3R12hLEs94zmn2R87Zv64cSkDWRUKYE5j5ugboQIrE1UhDmRTDSL8sMC7vWP9NcfLbE32OCktzBY1lctiTxjdxKPB3rB7hMKaVHzBjbKmHnJK9pA3L5VOi1L/dlA0vxPvaUXmBwmlftCJkp1mcSQu1E6BpG/C89DzB9EvE9TUtJ9t2GokH4vPIjUYWfRu2Rtbec0/M0X2eEgzeQwKyN6szoJDvjHyMEKkDif4JEw7C6RZYCX1K/21ySfv5VECU1aOiiQ3cqFMt1qncqkKq1mmvR6e7n2X2ALTfJGA338DPbgTt2iB+JOL+AQ62P9zYbW64U/X/3oSxUnkzwYRBFr0o74W+pA+oHiHROzBMgKSkXNdPE7LJgnX+8l7lxtX8eW2VC5JKEAA36eNCwcT+Nw/j9jJJCZtqCEUMbeF37FIlKovaOgKVPHgpt+7Q5RazU+JG55jsz7zeqaNRnrNXoVaDN8q71NC3BAF/c7hoA62/vODdcocb1yfcD17/xvcjq4+sErdGb7RwS+WzDhSVXJCVt4xoTx+W3y3e8Nn4DpvfZD3C2AQ0Ol9fohFR05iMxIHqXAiX8tr31AQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4459cce1-fb0d-47c4-2b3d-08da76512b0e X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:21.4373 (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: rKp3IcXiY6RS5ygatgXJFjlbxmJtwbUsXGifuTWqDWvEjJTVSth/nsCmv/EzChaFUiys+Iiu05/druV72kUhvpHnP7nr1RNWaxtvlyZ6q10= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1368 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: 1GejFyJw5MWLuPgf0ARz3L0oBGaMguwy X-Proofpoint-ORIG-GUID: 1GejFyJw5MWLuPgf0ARz3L0oBGaMguwy Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Recent parent pointer testing has exposed a bug in the underlying attr replay. A multi transaction replay currently performs a single step of the replay, then deferrs the rest if there is more to do. This causes race conditions with other attr replays that might be recovered before the remaining deferred work has had a chance to finish. This can lead to interleaved set and remove operations that may clobber the attribute fork. Fix this by deferring all work for any attribute operation. Signed-off-by: Allison Henderson --- fs/xfs/xfs_attr_item.c | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/fs/xfs/xfs_attr_item.c b/fs/xfs/xfs_attr_item.c index 5077a7ad5646..c13d724a3e13 100644 --- a/fs/xfs/xfs_attr_item.c +++ b/fs/xfs/xfs_attr_item.c @@ -635,52 +635,33 @@ xfs_attri_item_recover( break; case XFS_ATTRI_OP_FLAGS_REMOVE: if (!xfs_inode_hasattr(args->dp)) - goto out; + return 0; attr->xattri_dela_state = xfs_attr_init_remove_state(args); break; default: ASSERT(0); - error = -EFSCORRUPTED; - goto out; + return -EFSCORRUPTED; } xfs_init_attr_trans(args, &tres, &total); error = xfs_trans_alloc(mp, &tres, total, 0, XFS_TRANS_RESERVE, &tp); if (error) - goto out; + return error; args->trans = tp; done_item = xfs_trans_get_attrd(tp, attrip); + args->trans->t_flags |= XFS_TRANS_HAS_INTENT_DONE; + set_bit(XFS_LI_DIRTY, &done_item->attrd_item.li_flags); xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_trans_ijoin(tp, ip, 0); - error = xfs_xattri_finish_update(attr, done_item); - if (error == -EAGAIN) { - /* - * There's more work to do, so add the intent item to this - * transaction so that we can continue it later. - */ - xfs_defer_add(tp, XFS_DEFER_OPS_TYPE_ATTR, &attr->xattri_list); - error = xfs_defer_ops_capture_and_commit(tp, capture_list); - if (error) - goto out_unlock; - - xfs_iunlock(ip, XFS_ILOCK_EXCL); - xfs_irele(ip); - return 0; - } - if (error) { - xfs_trans_cancel(tp); - goto out_unlock; - } - + xfs_defer_add(tp, XFS_DEFER_OPS_TYPE_ATTR, &attr->xattri_list); error = xfs_defer_ops_capture_and_commit(tp, capture_list); -out_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_irele(ip); -out: - xfs_attr_free_item(attr); + return error; } From patchwork Thu Aug 4 19:39:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936638 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 4D996C19F21 for ; Thu, 4 Aug 2022 19:40:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239008AbiHDTk2 (ORCPT ); Thu, 4 Aug 2022 15:40:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233658AbiHDTk0 (ORCPT ); Thu, 4 Aug 2022 15:40:26 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE56963F3 for ; Thu, 4 Aug 2022 12:40:25 -0700 (PDT) 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 274HbaaS013546 for ; Thu, 4 Aug 2022 19:40:25 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=6WthS4Uec0axxI14KQX6+y5AY4eEC4kG2n9QVsARoMk=; b=Ir1kQvK+1lIBcI4J65iWwrThbbFl/HDXMUlqySjM5qDL1AaLHN3fZ96vVC/lOrPHi/zE BcOs741D6hvKfcDGClQfwEKLf1QqVetD+yjLX0ufcHa3GxbBa2riLxFVkUI+gV+XpK59 1cvQwOSyrX+Q9+XRJZjNOyvO8pXfYD4CRgG0WEtE/iN1jkjPCKCYfQPgx/gCGXnd5NRu 9IRNFx9cdAJjRUw4wiWYjU4bdUoQT6hMzJt4P67DukHSRqWl3rycTRMpu9XPwr9f+RxL mIPSUghhrvRYg9FWjsrO4YbJOJqUNH/2s+covy0ZnsO+O/zIhWjR9ZWNf+SP9aR1BOWE Ow== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmw6tnycy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:25 +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 274IEkVl003021 for ; Thu, 4 Aug 2022 19:40:24 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2109.outbound.protection.outlook.com [104.47.58.109]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34n716-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R/mZHDt6MY9BYtvha7wkfB90T80uNJ6o3EU+R5Wjr8V8EDewWh3ywjOaHdF3Qan8Twg95K4KifIcElA5h2jGs/YCSfGENIkDiZARYsZvNUJWD38pcCEhxaGU8dfxjx/JVpaxp5dSVHJ+5Sedjuzh/Ix6yw7eZ7dsafTbMJJ227H7eQUrpobM/5PspPZ5iJcPVZVrm5XzfwWHnTL0ySzlqW66o5S6YWr8hvONEQ6cIwjIK1gzubiL+b/9BdAokTC4WXIms8LcdnBpIC/Ozl5cZuXv7C+cjYBcwZPSlwFDrfq+qLU7RXf8w1hpiySw5qRysQiQJp7ddX2w2zulPaNzdA== 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=6WthS4Uec0axxI14KQX6+y5AY4eEC4kG2n9QVsARoMk=; b=IGrgqNC195jpyqfJzMCAQug8uOEbrjQD6qL45KMQw5Na9fIUMzhsJR5R4vlWXQTud0ai0CNWRMmKwsKjLwu4GKKB9jenvGwMiWdxrRp/PF4cVFhn0aCoDXC3y6pHmL8r4KtMCpI6AW9UsTF/IKXxxFOHE4Gys5/yMad2tH7/W5o9MWGdkE9NxTLppDDJqFTr5orA7p4C0wxEcsK6JTjUKkrNjfNZMLx3G6GEQvEtXenTmId9GaXDKlLBKc2Vm94dy6YVC1sfCEUeVGjd1heSFbop9kT2KyqGLkb+D57Db8hEp7w4Fhfv/j2YLc0qpzp2BmyuXiX5SJ4dr3cDiAROzw== 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=6WthS4Uec0axxI14KQX6+y5AY4eEC4kG2n9QVsARoMk=; b=s9N286QXoT4fWL2kQ/TF1z7tQbPnt3/qfknRdtUFQGZIaPjFStG6TtdpVkEsMk9UhVPQX/BM32F47Xa0eVZOmq9XmIPJXgeehaXrpdOA22pdWs5sxIN4mx/HboeM8hEtpHsGXYAYHn3+6uw4QDTS68Ofjw809ASWIbBcZzrNGOA= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CY4PR10MB1368.namprd10.prod.outlook.com (2603:10b6:903:22::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.14; Thu, 4 Aug 2022 19:40:22 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:22 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 02/18] xfs: Increase XFS_DEFER_OPS_NR_INODES to 5 Date: Thu, 4 Aug 2022 12:39:57 -0700 Message-Id: <20220804194013.99237-3-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2b173065-a8e2-4686-13f3-08da76512b39 X-MS-TrafficTypeDiagnostic: CY4PR10MB1368:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qes/D7OHOkFIRhM6Q6BWkPHTV59UIFI9qo+QfVuEmVv8HK3UWS2/DC7HrIIZ6LoMHv1EGXJoPbeMjRi0kZZYDVrINP35bKeb92Opya2Dn5oZezn1Mk/XP7qUywtK2QDZUqvD6mqnHWJJ04gQXnuH/LXU9+JILxbCzrjhUmQ+93o/YWAGDDPa2v2fLDtoXEns62wR+cMw4XrboKEibOatQ9PXIwO7joRDm2Ag6HQFhBxhJB35mqADkI/ZWIXosSvhVxdvmuy5sUCJdKsAJREr/jsIqzEcd6y4717L3e+ENwGw8SE1+hjC6JiNIEVnskpabssigmCkpyTVfrRJZCrVUMk/EOBq0/aKDNMERnzDLI/TAYsEXmNJAlHwRH5+r7vrkhhxxcvBmyjtLo6IIUqUbexGST1UR9dHJU8FYxfznI0w4RsciHELOHL4hwuTOdN4yzE7iY5v/uJVvzPclmhFjeVuimv40K6jfAOJZFW701gnw/y5M/tLw6jUC4wM2lRriXHDuoei9K5v8igyTl6R3NTU872jXJYVlPh8vnzQmgYqfLWVtTFD7HpmRICYK293nIoBo5nRsE7SrzxB/eFT3vEEWuWZf08Zw/ZCzSP/juB8/gl9HHQB7YNamQePG2SFnIaFDqlw1wHxu9J96WtZRMeUoJjfATRo9e1+xKNTmrKtZrl9WddTEXiow8CiUlaGhnf8tlTxaKuMlkGHM4bI8Fs7fFfstUFuNgNX9xkWtXrrbnTWEWufIaJBe3ktC8AjcNjDt3sizWQiFjNYSDn/DKeFAf6P9a+plDcvuAthN/4= 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:(13230016)(136003)(346002)(366004)(396003)(39860400002)(376002)(6512007)(6506007)(6486002)(316002)(6916009)(478600001)(41300700001)(52116002)(6666004)(38100700002)(26005)(1076003)(83380400001)(36756003)(44832011)(38350700002)(2906002)(66476007)(66946007)(186003)(8676002)(66556008)(86362001)(8936002)(2616005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DjmJEOyK+SFvY++Ew9fncoldXJwk5tXWBlEBKWtTY0i+IaUKfv+FOVR9V64jaHvMopybJWK7Shx1C20aI073vodWFsqkn6iiQustWD7qkQnztgK8q6R89rr2gH9ZqLB9Z/yIdsg3UhFjMom6jFWYnmfsu/x5Chsc78eHdXdn3DFxTlmymrvrOQSnMRm/P+Xd8RUvWQ26V+Dlc7Oka8bLuyEUUsE82301PYmd5qW8+7yHz7+L3RTDd7II7KsDg4brSMtKJlk4BraKJqCBCmJB/me9i9xtAXum2Jl+G+YkbhVyNz1EOZL6E150qSF9YwLeYDoHjIgZi2VT8ROKPp2MwF6Vy1Grqy2ysUgNYq8SLvVbAOH3ahC9Q8Hkz/U4c3TWqIqRSmnwg5YGS7zi8kijI1Fb/QvfrlDV3EvXmYgC6HsWnM2RucGHjtjUWjSfcKxuAwNaDw6aBNSz7r9WvhH/I7zgTk+BnOaE3Q63fnpzMeObftBjla5Oxx7+y8OUiInDE9QxGnLqSX4N+igbdzKBq+xEA7bbC8XULt0YInM/dJyeKKW/uxh8cwtipb+PgmE+j6ewsvJHvK4W5XPU6BGeYKYkU83MgcTyRcAyB3sTVVRdgNhXTCV6vwhX1sZidpxpoOFSZLiNrDkbpj87jodFxYnFZClKHnKYUXprrDoYqb8RuwiST4Rgq0waY5XY/hdvQTdjtrv2+SJjvKFECLDQSFttnfNmQrPx50VR6CWRsou6VeQPJnv9QJCCY71zG+b0gUNgALZ8RXoqH+SQnS496rJndPEyHjmT/kmYAqv6W8FyBrtFUWoUg4wJjmt/vf7qdc6lkczeBhTLStoBz5daWNpiPjBV8KrNYCkoeNfc+I8isYueSHfMC0Y6PwD3e2h8reb92BCeJtWINRMK1vBcvmnUe/95wYAsHztvk9YuEiQQpui7DgfBOTuzWvucKCbqQZTG51NwGxvwQd6aRivpvFNiDhgn1pWl5AW5S0eypUrBP0K3L0xujFyyovoiMFikw09ScLZLRc5iXYogaswXg/dSNkPDMN6i5vzHkzZv+LkDqT3teD9d1We+pltzBjPJtOMJVMtt0paDjteOVnL4tERFjV4sv2XA7HppOLg9TPPa5TOonNcvtI/Vf1GOeUkj2ygXAfU+2a0PgPGPne2oZgiH+8cJpT4BzkA9clQVNT2bzaTBuy088SXuzzTRGJqxwnVJRpse8QDaUsMmEAeYIf9aClV4ByIeK30ddBi4Q4t2ZD8CF+x7aIFeJ421gPQKKc+G9eKy+U5yDRsPErYhJqWzHnxuxF6q94209QG3UE977FiPL1wLASOy7UAqVtU8PeL+HHqBICAxvDPK5MSA3jLXz5fnjmoo/7f3GhvAzI1ss3yjE774vBnVZlFEBKDDpaEyk59963gU8Ge5u6PyL14jmMkeKOPMGbgZq0zphimTrA/wxqjKYJaCBbfXdfEdU9TTm8Ab1pS2A6BLNmM5sWJiRyGX3fmmEhp6wXYHytuBmHidQqPEP2t+RS61mv50M5tNHt8SNSehZxXHIdgF9YIihMZeyszF5sv8xGrILrHKPCmE6mJtNFHxUV7bexGj8wGLSK5C6bMJXAc+Kh406Q== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b173065-a8e2-4686-13f3-08da76512b39 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:21.7040 (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: Y0nh4D8qpe1Unu34B6LEOOtHupMNP18dQucphJ61+RpeqzcZ640OU3rbMw17b1QHADpsswtE3n+RE8K7TU/o/aCPzizenCimM7R5w24VmWo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1368 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: UV9NyMX6RwwxrEKoX7WbacViT_DCUgr0 X-Proofpoint-ORIG-GUID: UV9NyMX6RwwxrEKoX7WbacViT_DCUgr0 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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 --- fs/xfs/libxfs/xfs_defer.c | 28 ++++++++++++++++++++++++++-- fs/xfs/libxfs/xfs_defer.h | 8 +++++++- fs/xfs/xfs_inode.c | 2 +- fs/xfs/xfs_inode.h | 1 + 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/fs/xfs/libxfs/xfs_defer.c b/fs/xfs/libxfs/xfs_defer.c index 5a321b783398..c0279b57e51d 100644 --- a/fs/xfs/libxfs/xfs_defer.c +++ b/fs/xfs/libxfs/xfs_defer.c @@ -820,13 +820,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/fs/xfs/libxfs/xfs_defer.h b/fs/xfs/libxfs/xfs_defer.h index 114a3a4930a3..3e4029d2ce41 100644 --- a/fs/xfs/libxfs/xfs_defer.h +++ b/fs/xfs/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 defered 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. */ diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 3022918bf96a..cfdcca95594f 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -447,7 +447,7 @@ xfs_lock_inumorder( * lock more than one at a time, lockdep will report false positives saying we * have violated locking orders. */ -static void +void xfs_lock_inodes( struct xfs_inode **ips, int inodes, diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 4d626f4321bc..bc06d6e4164a 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -573,5 +573,6 @@ void xfs_end_io(struct work_struct *work); int xfs_ilock2_io_mmap(struct xfs_inode *ip1, struct xfs_inode *ip2); void xfs_iunlock2_io_mmap(struct xfs_inode *ip1, struct xfs_inode *ip2); +void xfs_lock_inodes(struct xfs_inode **ips, int inodes, uint lock_mode); #endif /* __XFS_INODE_H__ */ From patchwork Thu Aug 4 19:39:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936641 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 BEAFEC25B06 for ; Thu, 4 Aug 2022 19:40:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235217AbiHDTkc (ORCPT ); Thu, 4 Aug 2022 15:40:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238723AbiHDTk1 (ORCPT ); Thu, 4 Aug 2022 15:40:27 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3445B7660 for ; Thu, 4 Aug 2022 12:40:26 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 274HbeAC021081 for ; Thu, 4 Aug 2022 19:40:26 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=4tYTG1i3xl4YL9FHaKHjO/ZrgsZjMgjGS4H8bMNkzko=; b=2DykWC+rLzpsXF36AXf8yHznn6WAwNbKz4UTYSGnmW18t0oO2Zmb8ob9nIkkwdF1Xv0I /vRt7QqgrxSwByof1PVGz88OL7tFJyRAZ7wng8Tm+uLYsHLoT1fiv3KhktQm6GBPdewx frPjDjNkr50ypzbEHIOYNgzwHUaZGwZd4BmlXuVj0y9HHk2iHAGzxcf3fDomTLGAvq5U G0sVtKLDvgYGDCFYRntlWJ40MgPCh1E7qXX3Ssh0Ffw4NQeaBKrLKKqfaEwZANNMdNJf HlfC2qulcL42LtbMzqHwLklTMkz3noQ+sjMi2JkHOfmwHLJp8l3WMtI0e640UKCJZ+IZ QQ== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu815xrq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:25 +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 274IEkVn003021 for ; Thu, 4 Aug 2022 19:40:24 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2109.outbound.protection.outlook.com [104.47.58.109]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34n716-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TCIIyr0KS3tk6D5EM17tCxvnGPRObOHFtQnRsy8hZa2lLUpvXHqP4+0XfFjW56Agsyi7ZCiz1GEd+f7cebXRTzONOpWdcWr9JbJv8MpSaOE8B7lTJdVzLZi/lZKjqhDrnJ1mJwqL1CSdcp++K2Fd1T5Noo77pXbOeet0Ri3PU5SDTl6ljwFO1co6ORtsaVcnXhOl29E/vBXkrzY/xZtkMkPW12evBuC0r1RcjI1LYUIwL7tOqqn92dcqJuCs5bQyi1kpPuIngStRR+RWJc9cfh1rKC0gO55pIo2ypVrkCHMKs8zBG4jDWjKlT9xiNAxgIjYG5i9Pyxrt7MGgY2768Q== 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=4tYTG1i3xl4YL9FHaKHjO/ZrgsZjMgjGS4H8bMNkzko=; b=EU1CqN2a1biRxV8/4PrNcePrP1QwZxEpdNCa/7qFOd0TAEMLrujpC+q7bBOfDE93s5pYrefxo5BVv87ux0YE0Vsp+WMVx4y7v/O4SzE2ZoBVOyAIAfHvMTpPdl4Tm/MnYO4/y9gipL0kpvxxoQJ/KIy12ZPJGkmy6sLTlWhhYYuihsH2gco9RDPRwZrP5ZA5i/z6jMTMRGAovewifLgQn/bk4dgZ53Fl0GGjKvL1Su9lV1iZpOZSHwOQJ/ByqdQH68S3YukA1YTV6cLSnxcNxrhB0bSQfFPEfFrygVTzHxANbV100wfPdUJiud6v99S1Va+npW5petrlVhjYYMPQ9Q== 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=4tYTG1i3xl4YL9FHaKHjO/ZrgsZjMgjGS4H8bMNkzko=; b=Ql+RYcAl8yx4HrvdO/12HEgzOIG2EiH0X0fQ1oehOK2vaJMgB3Wx8Z9BccWz6Z3bQUwq8pwuBfnghihiMizVkXim6g5ykPMgkpMP5/SJ53p6a4Kfsxcfzb0pdVHPRGHka0tJiVFe0WYfmaAcU0FsKnCXL8msOjxAcXFqc9BDj5Y= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CY4PR10MB1368.namprd10.prod.outlook.com (2603:10b6:903:22::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.14; Thu, 4 Aug 2022 19:40:22 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:22 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 03/18] xfs: Hold inode locks in xfs_ialloc Date: Thu, 4 Aug 2022 12:39:58 -0700 Message-Id: <20220804194013.99237-4-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 77afdf75-a1e0-4395-8a03-08da76512b66 X-MS-TrafficTypeDiagnostic: CY4PR10MB1368:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: x/X4QOyg2BZR9FzCUadaFbJl02GkaCmYcOqrp8FgeiFRLrRcyjrbqnrY3tyP5hMwrS8vziF1RthcAAmsLPC3kqHLHLQstJRmPSCfDr+Kc5L6YSOVJM/DIoygGETye+Maa6l/F1AsymbZh3CK124q0KRNxm0IVnOfr87iGDkYJ6/PWFuLuJPkO4GnpVvzMaTJ9zZ5xRzfVeHSYWG729lht1kKTDHCoDk5/6aNhe5TCVTBWLconvMbfkUlWGO620DTIrSxQ6L5WKsjbAaKBXVkxN+7ua8TmpNyUVQRrxdIOlVyAaUE4VV7qcgGAsfK/qBvBhmjxTH2wWOd3wHO1Fwl9MRZGkyZ5wPeK1Ho3kHWe/MNDoUOzawZpkhnVBdKUlElWNolodb78nfbG/mO3HesnzM9wFFCRv6BTKXZU1PVg8lXCP2IkS2u+veehHtkAbY8lnyAKNO0/EIbXgzamzROs8fP2FNC2vdukz0fUTw/2QwR0/zEfOBrm0xbUOktmFurWODVgEWfUfN6AnA1sn6Q22ZUxRTfssM/ZKiDZQTFqsy4s/sZZDbUJyzpXHprfR/QOmrPj71vdNJfqwid+6aDqud0Yq8cbaQ6pMHYBUWai3akHcSsDBdT3pMIBarGEWn20u9gaynksJF2f2ibXjD/dKCLrW2s1oTAQNgPjJmY8jotdnAufYieU59++xF0nTHLBaOfEHqe2aJ1cWIBIlHR6DEQj5yHQiXQoP3x+HlE8hcUYEwYbPrubSO4zehaRwd9wkije++jjDqTEkxIJEfjxSLkeQdlT8w+XHsj4wix2Ss= 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:(13230016)(136003)(346002)(366004)(396003)(39860400002)(376002)(6512007)(6506007)(6486002)(316002)(6916009)(478600001)(41300700001)(52116002)(6666004)(38100700002)(26005)(1076003)(83380400001)(36756003)(44832011)(38350700002)(2906002)(66476007)(66946007)(186003)(8676002)(66556008)(86362001)(8936002)(2616005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: n0R+AHGiI2TZiX2J2bc3Rf6TL9Ef9MtJXIWgp5Po7koHE7UvDrxpl5bpOP5hvoXKdyjzg+Mo1nkzEsvOC2MMHpWfqZskS9c3dH/eATrzocwmIqyuZ2jB9ttHGmgI0MGToLghPtZw28A67hEJYQQ218JFSh9MIOOQxGQQVBoA+N7lmeQoQ/RwgL+KnlypfSiDqb/xe4YG8QipL7bnQ2FnFWIvvXCInszGasBurS/OXumWR4zsZApgkmU/VXF2mCF6GmlmA/s/5AlDCITJKC5ezbe7BwYIRMZAe2vW5l/ajzQjFqvPSM6Nm07gsgaefOsk3TR2y6FT/eaKBWodogRQpr3OB03F9eLsjyUpORKsKzk5lof8U6t//m9EBfA7mzcUe9iiq8lkEk7XYlpFmfQZftQ6d1k5jl6r60ZA/r9ggmp12jZMMs1dutb71yUfQGpHQ24IVfyUTUCW1vGad4iZkW0Sp7yZvDt1ZXY3hWtdWpB08i1TnTUnUs2De8Prv179gNlHOg8bVCJ8g4OO1PJNfx0hxzUBc2Vbzxf2Y8abzPfNBNENulZnj4bPWAJf3Y0TKYBCj9VOJTL4V0fEOz3jXw/qCTMj76PdsQ2RJAhtryOBqEbMc6NKTq5wwbJbTvsShRAzrTXzczU/+Ju622BuM8AK9eRFs4lgS/uzLKwhQRUdj6I0gRbLv0EP3BkYmDOB2+hxEWr8iTb8MCyJ66/6PwgrU48KHTc3IpL/B60kKETNCWu/wf3UCUSpOWgIwKdV+4fbj1uurxE0JbHJuxb3ULCLlu/2YtRchWQIN+jrOrSyLo08RUGv3eZJ2/26aG229aLLD0Lsi+CIqpyE5y1Nj+yBwnEVihYhG1/+l+jfVFtY4ykI+fhzXuht21+hL89ujEt5p2M8owJwWaG0Mr55m/gXW7p4roxpUq1nhzUioj+klioX1H7ZR7ZA+YZnxnbx2Uh3GEo/37VCFk5nLYfnF9m3fHnBisBdCjPxc8H8j/ZOdt57RldoYILyldBpl96dXVONSQLEE7pIbXrnRi/Lcbi/d9g1hUY9W5l4HZZuxEwj2dbjPOwJYMpUV+4ppKEEDsEG9moH+ho26En9hs7HD5ElthnqaKhohh9u5meqZYGSCSEO9+rgxgpXOYWfVUGyd2Z6adYpMnyvJP6o1OUcaj+PPg+KVWklzVCpm2DF3GTFs8b0yYuvZuWa+vwa6fseYmTzvBYmUxsoyKo0aPOeXZwdTsPnwRcOKUVJxVKDjq02Y7afj04GxNRj5HUXjLzzrvPlgxYEERI5u0iyRdIf18tf1PG5fFtmseyDrb8f/gXrwqo5XX74z7doTBQdVxF7fLik1bPxv/tKNOtwGp4nwsVjrHTpZUL++JZo2tPpsM0vC/5AsRcI8sDKDGxO2iAF/916+JvTVYGj5HelQTxvXFToO0C6UM+mMfBwc56VuvYK0fbtiGrRG5NZncHweNQlLQe1TGZBUyf6AHaxxTnrtJOE55UWTuICyh48Ovp9MbZ6VXMaHU9ex8VS/PT+HLz4itKXqfV+tQMEwsA7p7ihm7m2vnFb4V76/az5mbRIUtBRAwUJfUU5FwjVW3lsskS9kgCR05MtIaEjyW4PxLR3HA== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 77afdf75-a1e0-4395-8a03-08da76512b66 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:22.0321 (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: OKNDl7Oa5rxKkX33JOJMmV1e1MuHX6fKqI9mJnEGjT8p1HsvFIidIwR8uWg1SM7UrhJs556pa1nmZk4UfexsRDoPpPcVei2oLE1qEEklp/I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1368 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: rRhxxC5_UXyvlLJTxOQ30L3ArJ_WlunF X-Proofpoint-GUID: rRhxxC5_UXyvlLJTxOQ30L3ArJ_WlunF Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Modify xfs_ialloc to hold locks after return. Caller will be responsible for manual unlock. We will need this later to hold locks across parent pointer operations Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/xfs_inode.c | 6 +++++- fs/xfs/xfs_qm.c | 4 +++- fs/xfs/xfs_symlink.c | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index cfdcca95594f..cce5fe7c048e 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -774,6 +774,8 @@ xfs_inode_inherit_flags2( /* * Initialise a newly allocated inode and return the in-core inode to the * caller locked exclusively. + * + * Caller is responsible for unlocking the inode manually upon return */ int xfs_init_new_inode( @@ -900,7 +902,7 @@ xfs_init_new_inode( /* * Log the new values stuffed into the inode. */ - xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, ip, 0); xfs_trans_log_inode(tp, ip, flags); /* now that we have an i_mode we can setup the inode structure */ @@ -1077,6 +1079,7 @@ xfs_create( xfs_qm_dqrele(pdqp); *ipp = ip; + xfs_iunlock(ip, XFS_ILOCK_EXCL); return 0; out_trans_cancel: @@ -1173,6 +1176,7 @@ xfs_create_tmpfile( xfs_qm_dqrele(pdqp); *ipp = ip; + xfs_iunlock(ip, XFS_ILOCK_EXCL); return 0; out_trans_cancel: diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 57dd3b722265..5582c44f12ab 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c @@ -817,8 +817,10 @@ xfs_qm_qino_alloc( ASSERT(xfs_is_shutdown(mp)); xfs_alert(mp, "%s failed (error %d)!", __func__, error); } - if (need_alloc) + if (need_alloc) { xfs_finish_inode_setup(*ipp); + xfs_iunlock(*ipp, XFS_ILOCK_EXCL); + } return error; } diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index 8389f3ef88ef..d8e120913036 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c @@ -337,6 +337,7 @@ xfs_symlink( xfs_qm_dqrele(pdqp); *ipp = ip; + xfs_iunlock(ip, XFS_ILOCK_EXCL); return 0; out_trans_cancel: @@ -358,6 +359,8 @@ xfs_symlink( if (unlock_dp_on_error) xfs_iunlock(dp, XFS_ILOCK_EXCL); + if (ip) + xfs_iunlock(ip, XFS_ILOCK_EXCL); return error; } From patchwork Thu Aug 4 19:39:59 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936642 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 9DFD6C19F2A for ; Thu, 4 Aug 2022 19:40:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238723AbiHDTkd (ORCPT ); Thu, 4 Aug 2022 15:40:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238778AbiHDTk2 (ORCPT ); Thu, 4 Aug 2022 15:40:28 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADA18BC19 for ; Thu, 4 Aug 2022 12:40:26 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 274HbkbP018690 for ; Thu, 4 Aug 2022 19:40:26 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=vUNoEHIXvRmyE8mLt6L0pqlEJ3EHdz4j/x1ZNJ2JPFA=; b=iECP5maGydyweMOQ3GrHmihBt9LCyF3/cbNptvxLLQ4j9YrtnKcA6u9xLzTvi+MOjJEW EfERc+MRoobR9LYxMWavEXGhMTzbstiwQH863xN9KmvEbgHdV0EbgLDtl7lO2bg0wwvY UmJXT8M9/h61yFbAB/N20BnwMA9Wxzv6HqJYrAJhH4yqw/Mt4OSJ31xcIf1nZ/Y2PBQ1 I5NCueEtxRDeZk9bpwZZKeVU/qKqMWpIkhb2TOLZxUoNlv7Ti8pTbZ9bIRQCMRkVF0wm cYDVCuV6inLY69iajecKKPBpoq9+TVCNc1VtOEnV1epobkXNN8xVg7daXAzBUVc4Fmq5 Dg== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmvh9wmyb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:26 +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 274IEkVo003021 for ; Thu, 4 Aug 2022 19:40:24 GMT Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2109.outbound.protection.outlook.com [104.47.58.109]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34n716-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B5se/Lblu1pJwBjD3IvfhklH5jf6pnBuQYLmU1pwo5uXmYF/XNEtzAqSMbHVpRyXu3bO7etRlDN7zwlZI1hhX+nZhGXvAWM2ndLI9XmYDmdcVwI+ZQsASSRGAcChU9fT66vrnkKMNKeHHpwPVjV7MacgmHWdSTCVuURJBCBCD1gTAZC18JyXmyiCuEGjB65db5XKkJT+IfDw2GGlYy0WvBUgJeJV0DwoMaY/unAT6fY2BhvfSN7C5Jl9pJSl+Dir5McJdhxn/7G0U6PcmLD1pPKj658LIB6LH80dToC8qIDlqtJL46JxyN1uPQLuWt8FzQ5faffvWk+M6KbsLeJejQ== 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=vUNoEHIXvRmyE8mLt6L0pqlEJ3EHdz4j/x1ZNJ2JPFA=; b=S5ouVkNS7UnI05nClU4DJb/V+IrFz6RBnEjZG/R/5rrhHXO4/LCDFX2X8JHqKOiv1IMFA6BDBgSEyykLZRKWKWq6Fdarc1MSzPk2AaoILwwRLdCOpz/4tS/+bDC6B5efWRXvD419+KViNKYkcmqr5Bmv0b+tdz70IILYepuh/OR6INcgpPR3Iz1qfU3qpRj/GanKwhEBRXHTk1AkJufj+wIz+AK0Sw360xy2zNOb1PiWHj2HMqhEEJ2hRczoxf4f4BBB29QwjPlwoHwvS7nmi62Ao3Va0x19X1e/jFFXNKIFZEijdc2A70QlsdfW5YXMuaIRmLlf5nfvLiLIiIs9+Q== 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=vUNoEHIXvRmyE8mLt6L0pqlEJ3EHdz4j/x1ZNJ2JPFA=; b=XLjanTgj3s49+l7TUm/41olhdri2it9IYbWTprWhLUGgreGD9zJpH3M2edtX0NL2tQus6pvnGFEkJUmnw+auVm098YWyRVJ53TjBRY7yDl6kEc6aI1EWkvO9tmjF3Ymwuup12gUylokYwdTQNUn6DUDfcpOE5q2hS17U9ZAuF9Y= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CY4PR10MB1368.namprd10.prod.outlook.com (2603:10b6:903:22::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.14; Thu, 4 Aug 2022 19:40:23 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:23 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 04/18] xfs: Hold inode locks in xfs_trans_alloc_dir Date: Thu, 4 Aug 2022 12:39:59 -0700 Message-Id: <20220804194013.99237-5-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d29c2c8c-e2f1-4ffd-d4ad-08da76512b93 X-MS-TrafficTypeDiagnostic: CY4PR10MB1368:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tevHLwIfG2t0hBQdSd1f/+qh1esnjYJIm45jM7vSB+X4JvGeX4cCuwjHhERwUKddCPy8cikngAJUbNl8wxUOqPq/D0CdIiB+SziZpuC48O9l3zzgutG20KghQX+A/awuJagGInGTp56EgSx/RJTPmf4JuBEdy2BNLGIefGe/6X7U+ivBTXCzYOMiIvT9jIpdjC10UrQjuSaVqEWREYhiSeI64yd7JtMe1cCKjIJ5ZzMZx6Hk9RJB+mdLDo7+O1S/oo6V5Lp9kK+EX/xl15ggaNnxyFAsBaq1ecBZxdO6kPieaLQ3FeryVzoSeMSEyYQz8b4oObOW4UhCptIYaGsScedpNK59RA2oBKHeucexJNO6HB8vPg/OpmwdTCS0ix8M/RE6hUFdrbdqkoZu2vUU7C6oQ6IiUcdP3QN6lkRfSfXcm77EUEkYM9khbls2t8Gzbw+d+pZrAvJr+a45UyB700Ke/BHqTBqSRL0nCDApaEGusYBz8tkyoGc2aEMSAuYPfWInF+w7IHpF9H82TjxXqglqTAougo91Y1wKQmw8VR87lc2Erk3KxFCZRBxoWmCYu3irclfB2MY0xL6XRhln4eiUja+XLct8JaMKZD9ezaUwRo3puYFzNcMKbmwKA2gAhIJFNtaO7lEsirLJWvDofRswFQ9VGqHBbfwXXPU2NrWV4cdNjXibk0j4dhZjLkVThJiHAbwAU90TjyM97bJjbx3f8gr0QXlkIYfyNua2ohha91q3aSTpD/ZDD8rCRxWuCRBlp94aiTPLCQftHKwau+EQ5buJWC+3Hb1EL2hiv9s= 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:(13230016)(136003)(346002)(366004)(396003)(39860400002)(376002)(6512007)(6506007)(6486002)(316002)(6916009)(478600001)(41300700001)(52116002)(6666004)(38100700002)(26005)(1076003)(83380400001)(36756003)(44832011)(38350700002)(2906002)(66476007)(66946007)(186003)(8676002)(66556008)(86362001)(8936002)(2616005)(5660300002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9OeI9H/6i8MocW4jfbS1eCZOuQH8qjCFhrYCLhfDsZjYV95jn1f0fOB4dO20IUIJDedvpRYw9kqcRK9IAyZIoUXMOWm+LRoF1xlrgICeC6AR5VQk+V3CUTgRaOUjfsMOHH8T3H2ESkeIjiHRKTP0ToBe4wKCplnAwn+EB47Fm6TwWGcSJQZG4sgJPoV+yn1ngaIeJdCcVjJYIB94PePamOo93socymeRvZJlBnlvnskfmoMzdCbChSrUGMZwtMK8JBnWinH6wnj1J0wpTuY7wT5Bntg2gReJN0MAYNsoPs4/6CR3CXIi9HxwHhYyyySaxAsbLDngeytLFtSnoqfnBHR6u/wSjLHdtinDo7BpHwdTt+OMTnLRN1/WFwJ3n0QiM5AsesKWb5iQhGCtBXJ01jSx2vmq8AsNCG90hNOjZ7myOE0KGiOKtbcKdSadCBJrR/NhwdOM9kyinAzE+112YhLQieiIHufje3mlRCoKJh92jdv7fD/DcVjQYyHxHcA+7F3tcJaFkMml6gG6WLJeEUuRVNe6N7Ks0hDmcmAh+jbAuv0pfw0pbknxhdRie91VgQIUkHJtZoKXSPDng99a+mkwUVOVG7jz60TAACyqjnaYLmTuiACRb5OXwmkuSaX6pkA4QIRIfplVDRTUTkVLzwX8OcDrhlRtuhWWxP5xgeTLM4mHnZg+Zomr+FumTo75Cy0Q1QJiks4bIqkDE8aOcUMhRBfJSMf4gvR0wpsOclItPCiQ1t2NlZNT5SrwXxZqYmugPsLL1Y9QdztnFXfcPLYLxuHFqGkgYyPhqzg4eyL5nKWB+XWrgqCuzghkKyE/iZn3ml6f/QTGJRle/zZRHfqpC13qRW70L0ySB5BtYkbX63BBguzj7XkRRN2A3HIwkdbhJCZJk+tPtnp7ct4uHl8uS8k78MdG6N95s9vsHZkSxBwXPi+Fzzp/r9Ipq39P2ssKAX7EhAHstpnORXoW6qcNKMGZ11oFwzmFJM2g9if/QSEcaIcPHShzbIePMq6hV4AX0fOeoFsKjDOEMXIm+78C9rFjhMN3vS8zdOey3KPr0k09DxCDtNadxTSpgaKxE3JBxWeaAzaJfURkAiTwcfUieO+i19A8nLSpsr0cUeOmtkaHSM2oeg4RuF6g4Pz3c25xCL635iK8EnKbBLHBq8EyXeuCVIMFiecU5L/4e2BBlm7ZMXE6wWA2ROFzAkCgxBx2eeVzHY5EJDzx1eNRrCwipNNWL+8c4WqXA58qp9507XCfD3CzGgM73IobHL0oNKP4gR2pR3IkIyGTR5W3RFTYSNoWT+kQC/afg2yHmkuGLDjozoCZ/WULsqmk14jE3n8ScAHuYegKQj7nFfW/NJ3Bu7qCrbyQhE2Ec8xHgIplJHdPQ+pZxlPXOJliKDeFBKy9yZfyThLyCawV9K9cS3pvVWvp+Ayqtm+x6xthhMZVqG4sSjycT7MFA6ZZIev7YRuMbRHnlu5y8nUMFCnbFc7Z65Lf9Q4tb/xM0LVqS2cjm2Abj99SpJ/aUKl0xAYl4KFHWJ6/zB9fHNgV/T5eFjl/NgP/JPl6e2hffTCyjSibYlNlGs0w03GoRCKB9T2fqo2GoEtuHUrIwjAw2SMDxw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: d29c2c8c-e2f1-4ffd-d4ad-08da76512b93 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:22.3445 (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: TkCzdHU+wQkKZoNwWIT7gOUt2m2q3wo+fSNx6NQuMLl5AIM9R5eXbgGc8PRBnjrgFxKGRYLJY4RQjTbtkqmY/DB2sjrscZZ0Un+dNs2tHPg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1368 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 mlxscore=0 phishscore=0 spamscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: wXuaVm3WTXiIeR9plLmlCKnRpTbwTuPq X-Proofpoint-GUID: wXuaVm3WTXiIeR9plLmlCKnRpTbwTuPq Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Modify xfs_trans_alloc_dir to hold locks after return. Caller will be responsible for manual unlock. We will need this later to hold locks across parent pointer operations Signed-off-by: Allison Henderson --- fs/xfs/xfs_inode.c | 14 ++++++++++++-- fs/xfs/xfs_trans.c | 6 ++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index cce5fe7c048e..2703473b13b1 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1278,10 +1278,15 @@ xfs_link( if (xfs_has_wsync(mp) || xfs_has_dirsync(mp)) xfs_trans_set_sync(tp); - return xfs_trans_commit(tp); + error = xfs_trans_commit(tp); + xfs_iunlock(tdp, XFS_ILOCK_EXCL); + xfs_iunlock(sip, XFS_ILOCK_EXCL); + return error; error_return: xfs_trans_cancel(tp); + xfs_iunlock(tdp, XFS_ILOCK_EXCL); + xfs_iunlock(sip, XFS_ILOCK_EXCL); std_return: if (error == -ENOSPC && nospace_error) error = nospace_error; @@ -2517,15 +2522,20 @@ xfs_remove( error = xfs_trans_commit(tp); if (error) - goto std_return; + goto out_unlock; if (is_dir && xfs_inode_is_filestream(ip)) xfs_filestream_deassociate(ip); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_iunlock(dp, XFS_ILOCK_EXCL); return 0; out_trans_cancel: xfs_trans_cancel(tp); + out_unlock: + xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_iunlock(dp, XFS_ILOCK_EXCL); std_return: return error; } diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 7bd16fbff534..ac98ff416e54 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c @@ -1356,6 +1356,8 @@ xfs_trans_alloc_ichange( * The caller must ensure that the on-disk dquots attached to this inode have * already been allocated and initialized. The ILOCKs will be dropped when the * transaction is committed or cancelled. + * + * Caller is responsible for unlocking the inodes manually upon return */ int xfs_trans_alloc_dir( @@ -1386,8 +1388,8 @@ xfs_trans_alloc_dir( xfs_lock_two_inodes(dp, XFS_ILOCK_EXCL, ip, XFS_ILOCK_EXCL); - xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); - xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, dp, 0); + xfs_trans_ijoin(tp, ip, 0); error = xfs_qm_dqattach_locked(dp, false); if (error) { From patchwork Thu Aug 4 19:40:00 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936643 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 6D989C19F21 for ; Thu, 4 Aug 2022 19:40:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234158AbiHDTke (ORCPT ); Thu, 4 Aug 2022 15:40:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238897AbiHDTk2 (ORCPT ); Thu, 4 Aug 2022 15:40:28 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98816BC00 for ; Thu, 4 Aug 2022 12:40:26 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 274Hbevc021085 for ; Thu, 4 Aug 2022 19:40:26 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=f5aHvGd5hQuc9cRs1aPWAQAXl6QR4yycUZQor0R62N4=; b=Tm1OLDABzEsRDDJ2lqm8IFH/WHvgfUbKi62YNkNOX8evk9Tt/N/KS8PauSJM6m2sHeWO F+TtoDTMNGa9kJyUQTNR4dbaewEhCpHvlfh3ycS5THbqB+ZOjBirduXtRFdPQQhqw6f5 629xx9LQW/abwJaCJ21srJYrkTN6CocWJCW3zqj9RPIaOCtm7LMbB+flUhYZkHGJ7s8C zN72zWzWb0VO0nwDUop+YrXQS0W48Hp/a+l/aNxbXBk9bTTFFSlSasDbzEJg6y9VyoxG 8DQhzVa/BH0xC+iACOeI/G1lwjibVzdi1yifVGatJoXOuBvZ8L3IpCV0OF2U+FJAardG nQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu815xrr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:26 +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 274IH90f007562 for ; Thu, 4 Aug 2022 19:40:25 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34b93d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gKdDRM4n4YDDVwHMz+4C65D6W1w5LGYgvrK9mojHeXyTajRvWP0od1woxr1As81FbB3K16weLzd318YinJTErihP2WdxwturfG1U/AHyzcJ5GYAsyM+HbxAnNb3mZi/GD/6pnNAVJEUUtUsn63QqHaT/TwI9Sd5tnQzDvyykZMimpOGH0dQSvpDFwecSrqcNXfkbIA/NVHoPzct8nc1GNDFtMb/LR1dMd05QC7hGmuZ+qrfPnOWX2P/4shoDv/vKhoMsxxge8GW7Hni0XBcipztuddBSYbk2wEAPITiYx1ooJ8YSTULLdrr7SV02Rhcr/oIVTJ337UeyzCLGdcHVng== 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=f5aHvGd5hQuc9cRs1aPWAQAXl6QR4yycUZQor0R62N4=; b=ZnzOV2icryEYVdnuCtEy1dobVIdQY4FKEs16/ZXaxTb7Ng3FF7jh3zL4/v7asq0sXMemNSEr6VFKtFkc/8MkFlgExuX2xO7UMHAicnJH1uSQlwQANXf52LP4hOyU+n46pk+tLKXxPYMgHx1W/Y31yU/B+uorjIBESI8m1vQWuccHfckXerNQbtokUkQG1877rn2iOCb2siYhMJtceaFAiikYaEYg+DDYH5kwRWzapxTNQnqwcdIKgEoYkRCEmQGkaYIqzbSSah3f8Tml3HKiMpNPuPCqZgFuJXpLSjDdu1wsb+tKHGrMVBUoOrMQZIMusVaGF8sjBOZlVVopxnN3cA== 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=f5aHvGd5hQuc9cRs1aPWAQAXl6QR4yycUZQor0R62N4=; b=r9HxaIYBT3UzwDbjUVCH+8FARUDGQJWRfrc8s6S6Bm3leTjj+vMkfuaw+lAlnXUaWNfxt4ekxIaKN8yKvVklenvWyw5KhM/dp3umrHrw6xS2CX4sqsn24YWUyZne06q5uUouSw+VIcATH7V5Wz+nYpk84WD5iDzNPBn2+KwhonU= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5040.namprd10.prod.outlook.com (2603:10b6:5:3b0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:23 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:23 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 05/18] xfs: get directory offset when adding directory name Date: Thu, 4 Aug 2022 12:40:00 -0700 Message-Id: <20220804194013.99237-6-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a83b436e-68ab-4b12-e3bf-08da76512bc5 X-MS-TrafficTypeDiagnostic: DS7PR10MB5040:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dij53wC/F6IvCshCoZsRlm2rUp+n1c/9PZUpZYQM6Xp/J598XDjARi2VdP1I5VBjNqgZMFKpqvIqwn8hds7WUK4+XDhzKUu9OH5zzmidGsGDTtM+RmqpFqR7jp3kKOLM06TQai2eH1VuyUfuiXEFAsBxwnNk2irqSszvbTodt3wdmYWkbbTzlO1DbiQIceRKUkg9L1uz0dQjvJfRq98/fjJrhsccNiMrk0tVZSDSMU93ujUlKwWb8trOWcX1o5Yrdv5mM+sTYO5G3huu4dd5yPTXu3xgl/uTd4LR65hLAy8NwGxXgrAOirEYbQpKJ3supvu1Fahv6krkLkjTMticeXqoOTaSYOToARLJZNnUjw/Ort5pn1mF7h0D2RUiyE6DYdoe6L/WkTC0tqGyjtGSNw/U4pX9aJfJc8m1z+ZYcRSrOSGrvLlI04UsJFX0V3olzn+Yr15scsrsZ6Sc+31U2pitbRrll502xmnmFx6+LGiW4Gg6sdoYnztBzLTr0nDOSF04+gLEgXTuzmKfpkz1SuCsBKXfkmZqw9LN7cA8aESUi3WNuYtiUDMGKeU2exnuGMYJGbVB26PoH9YdgD9Cl/ZLeHm5kFzGG9/Gmj4RfaV/WB1N2C+ZORLYDdaDkvqehzq74X79qT8FrdsJA1iGNXOvYe2YJs5raLHobtRx51DzWJgHtH7aan8rnVr1Y6a/HfSeo2HSZE51ZmMzmuXZGT610LAF9qlFUtrfNh6ADcnXWStV0JBnUCTCm4iSeLgkiv3RnzRrIkUTyv6+qg7CkG0IGGpOEWv4CaLtIJtsynE= 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:(13230016)(366004)(376002)(136003)(39860400002)(346002)(396003)(41300700001)(6486002)(36756003)(2616005)(6666004)(2906002)(83380400001)(478600001)(316002)(1076003)(52116002)(66556008)(66946007)(26005)(6916009)(6512007)(66476007)(6506007)(8676002)(86362001)(8936002)(186003)(38350700002)(38100700002)(5660300002)(44832011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9eSPYPp8MrDfhdLUIpLFDrPXtnApHq3R7zuA89wDdjTh5JXHsU842kMhXELAouF92NeJ5mYSmJB/Yx10rPhjkBDPWmQra8YxfN1cxOLyJKvtLViGEmtR6G03p2ynTDabpk6w9Ya+vpjiAfk2rU3+uiCScPq2hyjQc+z2hltvUbDirf8A8nnz1t8/JZ+xP0ouRISSREOw0hlST2+ZWBK1Dg9E2An5Qg3yUYW+OpjB/XsO9E+s1mZQmFZtWrivipYkCVMSdUSTOhvaISOpr89D4fdKBErQSZZCItkNfudQ7XFDzUgxLAMFxJ2tIczU1N+7MO/KD8cDiapaXULKfZ4SM7d5hOOqMWMOcd40za5jsmNGFwU19YxggGSJUVUvbq5lqbUnaRkW9r4MAbjIWHDnwtvK6IsLdfoIPGru6gf/KXIiStQx8z0D5K3TX81ZoAd7A6J2Ft12U76jfYbSGe86fJE5g2GFoRcrgRZ/lXEn5YvvUCDsu7JGlg6MK8y5SQ7+Tb4WFbQBjqRo4uGkRP8qYgtsMA1c1Jrnwkh5gTIntfNmYfkPJCgZK8Z7OyRPKwlbBWXrCmQ3mYrYkyvPguEtMmk4Nu323mC/yn4qbsieKoz0KFoPG/G/nISohkZkM0A07RIwN8EMSxK59gJqwBeOMKgUpwz7L6n8/0pcvWaYJksCinNa7Q+rWQRfJ5lsA9zxxAnbmubAbHAclUukBy4N7mvWRoUkrOR60tOnvYx/aNFrk5sQwtA9PCnabKsuSCcoEZf/Grgi4+xQXSW7kFOE0R/9C5izJqKLTUslsC8x85ZNRiWdR6h4dpvA9vmoYv5QEhcKJ+J3ClxKzqoUbvwLRsjwm42K8EHU79Dv7ABRooIOJKyGmBJAF+k/Yk9Ixl/JmIqy/UYOzFd++k/PsGsLo/ybGdi9YTrygcu+Os+lj0aQsOvu6y6LIVFCkHXXLWKzgnMh+lfy1BW//9gCKuT6yDgrP/I05B17bdBJXDK1z+pha198FuYegw84XiF08Moo6ajf7+vMRObiqaS8owmrH3Sj1XYYeBg1mBr363/NePJ2qVS1dG2TdGSrDvhqAKfbk4xxaglVA9SNMAkihSLtOcizDJWxZ09UsP6tlMggNh3nWWE/Nf1FqRrENhyT2ZMJdPPvpljs1xK0x1X99f+7DH30ylfrtoGzuSCOafvKKrh4QGZQqARIQw8oi7c78eLzQOC0NCSUbTaHAXKLW1ilkRnyBbjhzDJKq2HhknvIOqbPPaqKfAesG3MHVahAQlDT4DEfHZP1m2ehgZYBm3lMhoPmp/wqMdUwNFwsmO9spXjkt9y3iWiO/1jqyaojryWd8xWEWpJxNnGbGakCQ6f2r7sfTJfOGHmmgvUb8a47GrfGbvGk8CEi2LAdFbrDpGEGy/GEdpj01S87vT958ci2KMuIOkmqJ+b18Ol7Wbu/VLaQO1WxDkjxsgfk2Wujhq5zyzLXgetKO6ath9sv+s1ggo3JBPW0APhVDaQfhH+AaJL7Yl0FOqy/PXLydOJ2xMr7RlAyBmhIVc8whTzbMbfkkiiFTTTz4mtV58hCFd6exadW+xlCNzSl7YFpg/9u/Fu3Hdy/yST9YKjpoG4GKAfeHg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a83b436e-68ab-4b12-e3bf-08da76512bc5 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:22.6726 (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: 1PRS87y1nbc34U701ftKmyH+pVkH1A2PRvciwrEGiOPsvAPNj4fM/EG00WVp9HICLA7blo/KMo2MqVdsNgjZeV3/dfZ2mWX/6ZnVSsUiwvQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5040 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: 0V5eVN3jDlU3zk-3QyX1wocf5GgUD3U- X-Proofpoint-GUID: 0V5eVN3jDlU3zk-3QyX1wocf5GgUD3U- Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. [dchinner: forward ported and cleaned up] [dchinner: no s-o-b from Mark] [bfoster: rebased, use args->geo in dir code] [achender: rebased, chaged __uint32_t to xfs_dir2_dataptr_t] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_da_btree.h | 1 + fs/xfs/libxfs/xfs_dir2.c | 9 +++++++-- fs/xfs/libxfs/xfs_dir2.h | 2 +- fs/xfs/libxfs/xfs_dir2_block.c | 1 + fs/xfs/libxfs/xfs_dir2_leaf.c | 2 ++ fs/xfs/libxfs/xfs_dir2_node.c | 2 ++ fs/xfs/libxfs/xfs_dir2_sf.c | 2 ++ fs/xfs/xfs_inode.c | 6 +++--- fs/xfs/xfs_symlink.c | 3 ++- 9 files changed, 21 insertions(+), 7 deletions(-) diff --git a/fs/xfs/libxfs/xfs_da_btree.h b/fs/xfs/libxfs/xfs_da_btree.h index ffa3df5b2893..3692de4e6716 100644 --- a/fs/xfs/libxfs/xfs_da_btree.h +++ b/fs/xfs/libxfs/xfs_da_btree.h @@ -79,6 +79,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/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c index 76eedc2756b3..c0629c2cdecc 100644 --- a/fs/xfs/libxfs/xfs_dir2.c +++ b/fs/xfs/libxfs/xfs_dir2.c @@ -257,7 +257,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; @@ -312,6 +313,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; } @@ -550,7 +555,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/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h index b6df3c34b26a..4d1c2570b833 100644 --- a/fs/xfs/libxfs/xfs_dir2.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c index 00f960a703b2..70aeab9d2a12 100644 --- a/fs/xfs/libxfs/xfs_dir2_block.c +++ b/fs/xfs/libxfs/xfs_dir2_block.c @@ -573,6 +573,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/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c index d9b66306a9a7..bd0c2f963545 100644 --- a/fs/xfs/libxfs/xfs_dir2_leaf.c +++ b/fs/xfs/libxfs/xfs_dir2_leaf.c @@ -865,6 +865,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/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c index 7a03aeb9f4c9..5a9513c036b8 100644 --- a/fs/xfs/libxfs/xfs_dir2_node.c +++ b/fs/xfs/libxfs/xfs_dir2_node.c @@ -1974,6 +1974,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/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c index 003812fd7d35..541235b37d69 100644 --- a/fs/xfs/libxfs/xfs_dir2_sf.c +++ b/fs/xfs/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/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 2703473b13b1..08550f579551 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1039,7 +1039,7 @@ xfs_create( unlock_dp_on_error = false; error = xfs_dir_createname(tp, dp, name, ip->i_ino, - resblks - XFS_IALLOC_SPACE_RES(mp)); + resblks - XFS_IALLOC_SPACE_RES(mp), NULL); if (error) { ASSERT(error != -ENOSPC); goto out_trans_cancel; @@ -1262,7 +1262,7 @@ xfs_link( } error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, - resblks); + resblks, NULL); if (error) goto error_return; xfs_trans_ichgtime(tp, tdp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); @@ -2983,7 +2983,7 @@ xfs_rename( * to account for the ".." reference from the new entry. */ error = xfs_dir_createname(tp, target_dp, target_name, - src_ip->i_ino, spaceres); + src_ip->i_ino, spaceres, NULL); if (error) goto out_trans_cancel; diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index d8e120913036..27a7d7c57015 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c @@ -314,7 +314,8 @@ xfs_symlink( /* * Create the directory entry for the symlink. */ - error = xfs_dir_createname(tp, dp, link_name, ip->i_ino, resblks); + error = xfs_dir_createname(tp, dp, link_name, + ip->i_ino, resblks, NULL); if (error) goto out_trans_cancel; xfs_trans_ichgtime(tp, dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); From patchwork Thu Aug 4 19:40:01 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936647 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 77CAEC25B08 for ; Thu, 4 Aug 2022 19:40:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239066AbiHDTkh (ORCPT ); Thu, 4 Aug 2022 15:40:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45964 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239031AbiHDTk3 (ORCPT ); Thu, 4 Aug 2022 15:40:29 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EA851BC25 for ; Thu, 4 Aug 2022 12:40:27 -0700 (PDT) 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 274HbVdG001427 for ; Thu, 4 Aug 2022 19:40:27 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=LUZkL35OSOOKzsUX1V7Tkl0+WtsSIHmQwtm1icpP/n0=; b=bIstuFmUO+hL7TUax8Kh6XmMKuXl4OE5pKQs5OYqCXhzXAt+dx0N0ij5SySC6K4hy6pR CCloXUh7w/xdPqrn5ONdOidzwpA/9+DGamHVIW5BMJSkzMIpnJ820n3uoj5zbjvmQnpi oRpU8CbOeyFYw7YXXHjcD7Oy1dnscEjbsZ5eKHQosSxxrnFeDxYden3ll4pWKOfyqXIi RB0xIZ46RslK2JVY3iIH0hAW0Nd+A9axe3PjeeRoEtcLK7tlypYlUBWO3cwbASHh2/QE vYnBxXkifT1A3sYigjYBNjlzZkf5b26IifoiDOVg7PXl7KgzO3A/JET84ZtdtycVaCJX 5w== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmue2x31c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:27 +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 274IH90g007562 for ; Thu, 4 Aug 2022 19:40:26 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34b93d-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=V013/rGXIGnzGhMrgNqlZkyZ+QhNq1YNbGTAllJXOK3KnvTcgJP23A1gc9ZB4vXj6fj0BWao8i+TcwXYM6JIEb9GLBXk/pxctDZUlgPpkF7884giGCeM167tpMjzXENSaf9+b60bDK57CaB0jUjFFXkyPSKkXo0lJi6LBVeFrt4awKbkyKqhpnoWPiSyX6ElQHLqI/uL2EEdpuWu1gMSj4VBl/5fWytYGtzC+e1FxmovZvxrnjV8KX4J4jVv5dIW7CjkihYgCAHCwjDn36UDhGeTesCt64YlfsIloDM8b5koSj4Je5+0NwzzhTCXDfWEjxlkEJ3wIJNZ7rwli5m0mA== 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=LUZkL35OSOOKzsUX1V7Tkl0+WtsSIHmQwtm1icpP/n0=; b=ewRJbhPrfHA+uibjCs64Bm5c7swE25StWx6F4zoOmPiX5GTvMzxoP3nY4ngeCvTIuJaqav8D/Zn2RyC0cXNgoXPiHsyr4L6J/zpLPxDoGmZK75dqAm6mXCS+O9A3kA7yyXNtk7R8McRciiGxZ8b7JAzPeuM8IFfDKHAGw0GK+dQHWAlb/OVbYKM3NV+oXumHUYe7sdOV7uqOM7TZt8ugJF3p6pzGwf3WHsTkJxLufrkl0eklsq0PaML0wuB6I4KC0o4EnTtbwZnKMqSqsvz1KYc1rfyqMMrVwEHhwSuyukFueCWIGutVTQ9Hn5R0jpg+LAClgrMaQvIlzNxn6w2h2w== 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=LUZkL35OSOOKzsUX1V7Tkl0+WtsSIHmQwtm1icpP/n0=; b=pUlmW04kgGam+/I2b5EIcM6GAO2MHBEQwINe9HHQNbBA+TGjWI14dfHvsb61+XTxfD7swGcOLXTrbMCK+pvbf4IwPQwM7ToYkO8Q2unol71WBMlSxHYECjSnYmDB3l8X6lU285hiis/JgyAoPihR7YDLFg57zACasCs3I/9REFM= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5040.namprd10.prod.outlook.com (2603:10b6:5:3b0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:24 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:24 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 06/18] xfs: get directory offset when removing directory name Date: Thu, 4 Aug 2022 12:40:01 -0700 Message-Id: <20220804194013.99237-7-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 343a44ac-b5d3-4968-2e4f-08da76512bf3 X-MS-TrafficTypeDiagnostic: DS7PR10MB5040:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KJRwasI/tKq3iJ7LFSkLjAYzLRp3qfWsPy6V/Ac10U1xEJKPho6YNVS7deHGLLu85gBtemATA7AT4vCBUbxqrQki2ucMk5x9s0ytLz8WkyF3BWZQW/wyT1jCmKAGi9IkiYVeci2hvOXdZiBITal/WWdHP2VYqNG+hCptKgft+mQpeLjb6Y5q415atTc3UDMeSMRHlMziPgGWmRbv9vESAv25/MPTJyIHRjCIId3WBHsnA0fs3tcQzIOBSvNHhNJxCCF1KKKY4ZpIm6hJDrwN1D52oLZxevbeXB72aTtq7+1+IqT/1vBdeaBAfrODeSNqqwZer/H1z+Q7sCyQukar6rt+8amB3T7Apf5NoujjdPv7sGqmoYH6rTNQHarL/Z+hr3Nv+w7NKIZ9m1BO7cfR4yxfwkXqZZbxuWOqngBXy6uIa22lzYVErduOlLHyqcZR8l43YFIGXOqQZxbHswZ0f5+G7116I/eQ/ymnirUPDANv2tDVKrHAbdrVE0MaOHazjXmXJHt7hEZjRI+KXc7Wu3hwTZjHCq8k4iMoR0RtbLfi0bgCZ/p6RezK/kLdFWAhl/2Qp2BnNSgqxr++KSG1klD5jTCK6ruJPXGc7Argi7btcPZR6jQE30cF8O5UQ3Y/qFBgcF6pGyzXpJq3R/W+RSpnC/o8D1r019YhED8hdoli1im3pcVFL/bNhJ67CsXwEtHkilYYU1riFh5iDCBFCWJdM8p4kcxTwPcnlzANxiJNGe+I5Du/ly52iUhhNEbbmNhXFg1a4IJOFfDRbw5Z7osSUAZD7YSQbedTZ11Ufbg= 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:(13230016)(366004)(376002)(136003)(39860400002)(346002)(396003)(41300700001)(6486002)(36756003)(2616005)(6666004)(2906002)(83380400001)(478600001)(316002)(1076003)(52116002)(66556008)(66946007)(26005)(6916009)(6512007)(66476007)(6506007)(8676002)(86362001)(8936002)(186003)(38350700002)(38100700002)(5660300002)(44832011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: j2zLo6iXzJdJEUpYFVB6JaV9ff1XviRR5pm8Bly24+tixM7Jqp6Q04nQXbEdJxgi20ncwY/yoToQzBuSvQiALd9IFACtAVAqzy9eEhkJZQByC1ZiEu3ZqbknFuv/iT+3JKROXH1AVKyGaLl3QhMmnx1wwpAJaUgyxWln/Ly3uEX9borxyyxLwYKDgSr6BFy9iKJ/YUB8MWgo0wKDvP081KEHW7wvo4wFwfPuTr39RI0+kaE4zSAjnHPO5jkbKbJ4iQOFRi6sV/Mr+NSn5+jp28OwFOvXz7vExCTEOxX0ic5c26XTFKbMFpRTNtwtR0XRxuLkJVK3SoIpMnodva2fCXb2ImijjgWGobIvYQQq60HZMb2Xz8c7ObHDw+WuNJeBYRGtEilCPhUzRCIPJSvVfWT/q+ZnTZKdUC8hPy73RO19UROEpq9knkS0IsVZ95eLpZkGwN0XV004EhxyGb7tuOdso7BM6IyBXGmJTWDZHmbLMO7iyfZw9m1BzJhnPvt10YIUD62+biEVgqL5ZORjWPNr++8dp5CTBC1Dhi0C9DgGHWH35iYegQkgpHvvvcp6iNpzQpIFHlRYILNdN7SuiGiiHgmwqRLv1rhFiGBwHZeXSOhfYZtE3xLJ4d03QxZAYOwLor1ZyfO384ikwQvf6iqdxAyNHAu3+dplZ1lZjzgk1Cjje9X/q8OdjOr83A1OrzIDQQAEEGNLQ8HMxQ1DGbcPGXXkS2ZRso37dCBTBG5YjjxOJWW6evsHBbXuTYv4EfHMPtIxhXoHXsAv89U9cMElfS/lEaXBt03MLEqEbPUq/Bd+gtH/NjH+bL9x3lSszG/SSnzVA48+GGp+KcbwzpdNStsbcSOnTAO4D3YRuFfi4qLboKCf+Gp71x5eac9SCIKs290DeTKIqSm0to0f0tc4rhHK9B9bAW7ZNmDHTQDDFSGZkyiivG6PB6etHXZdcnaFsdi8Upc/Supp6QTgJNh2P6/K/6Z/Jb53GwhDbj6l3Kuctvm71pHMS0Je1VTT1jLpH4p46Z/NGj9Ge0GL/kH13hzN9okijvRhQWR3jq5mnQVOjsywBpwriLosq75aQD0Xg0L23yK0tcgs3LqBWALuGGL9AUVdQnXpBVpEUiGV70wtLTjHln9SVFLDEsMYlJNII3Hd+32ym2LrkAD1tUtuo9/iTYw/Exkk63m9y2i2Xou5SxQ6s7ZXxwTFptlTl7V95b+JG1taCPqXFtT4l0YxtwIJsOL318CmxBg0jT7G8s87kDmbD+/Yjwvon7kc7Z3G+1NlHh45SyHH3E2lfLe0WlanzqnBjZw9OPpD2MiHOcSp3DO/BlXZD4lb9p7sEnRNERk3v17ENIZh7eBux+LgNc97v+s/p4mNcmRMgiSeorP8lHUZQ7CfUkiUbckoGgIerBzh9qL69xTKn/1ZIheO+zh+OE8rfpu6Jc15gaR+P3zeQM8Y/Fht/pIdTJX00ZukbzXLnW9utxE4QEM9p1qlv2lGgqnZMxtzOjr9D6HRi3Y8S8lMgzqJvF9K7OoBhd3eP0BnMsU8tALGpa8MjHfUcRBco/C3xwYMu1w8Yb3Su0qzJZZ2BH7E+TjaCMrloDklYt7tRJl4Z2Nyi6gorg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 343a44ac-b5d3-4968-2e4f-08da76512bf3 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:22.9538 (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: 7W9hVoCweG4O1hN5zHXEHzLAmJXP10cC2zDHdiHuEIw+wMsVJmQ9B6D1M1CGoJMyVoHu6X5ajGOuWvGG6SLIBRBcBMHRj/wTUk/bJ5GrNw4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5040 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: k13yMUTTdtVan6RSu8b9wYdi042eDl-f X-Proofpoint-GUID: k13yMUTTdtVan6RSu8b9wYdi042eDl-f Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. [dchinner: forward ported and cleaned up] [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t, Changed typedefs to raw struct types] Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_dir2.c | 6 +++++- fs/xfs/libxfs/xfs_dir2.h | 3 ++- fs/xfs/libxfs/xfs_dir2_block.c | 4 ++-- fs/xfs/libxfs/xfs_dir2_leaf.c | 5 +++-- fs/xfs/libxfs/xfs_dir2_node.c | 5 +++-- fs/xfs/libxfs/xfs_dir2_sf.c | 2 ++ fs/xfs/xfs_inode.c | 4 ++-- 7 files changed, 19 insertions(+), 10 deletions(-) diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c index c0629c2cdecc..e62ec568f42d 100644 --- a/fs/xfs/libxfs/xfs_dir2.c +++ b/fs/xfs/libxfs/xfs_dir2.c @@ -436,7 +436,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; @@ -481,6 +482,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/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h index 4d1c2570b833..c581d3b19bc6 100644 --- a/fs/xfs/libxfs/xfs_dir2.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c index 70aeab9d2a12..d36f3f1491da 100644 --- a/fs/xfs/libxfs/xfs_dir2_block.c +++ b/fs/xfs/libxfs/xfs_dir2_block.c @@ -810,9 +810,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/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c index bd0c2f963545..c13763c16095 100644 --- a/fs/xfs/libxfs/xfs_dir2_leaf.c +++ b/fs/xfs/libxfs/xfs_dir2_leaf.c @@ -1381,9 +1381,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/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c index 5a9513c036b8..39cbdeafa0f6 100644 --- a/fs/xfs/libxfs/xfs_dir2_node.c +++ b/fs/xfs/libxfs/xfs_dir2_node.c @@ -1296,9 +1296,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/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c index 541235b37d69..2dc1d8d52228 100644 --- a/fs/xfs/libxfs/xfs_dir2_sf.c +++ b/fs/xfs/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; } } diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 08550f579551..ce888f844053 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2506,7 +2506,7 @@ xfs_remove( if (error) goto out_trans_cancel; - error = xfs_dir_removename(tp, dp, name, ip->i_ino, resblks); + error = xfs_dir_removename(tp, dp, name, ip->i_ino, resblks, NULL); if (error) { ASSERT(error != -ENOENT); goto out_trans_cancel; @@ -3080,7 +3080,7 @@ xfs_rename( spaceres); else error = xfs_dir_removename(tp, src_dp, src_name, src_ip->i_ino, - spaceres); + spaceres, NULL); if (error) goto out_trans_cancel; From patchwork Thu Aug 4 19:40:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Allison Henderson X-Patchwork-Id: 12936644 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 59890C25B06 for ; Thu, 4 Aug 2022 19:40:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238897AbiHDTkf (ORCPT ); Thu, 4 Aug 2022 15:40:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239066AbiHDTk3 (ORCPT ); Thu, 4 Aug 2022 15:40:29 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3359B559E for ; Thu, 4 Aug 2022 12:40:28 -0700 (PDT) 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 274HbRX7015052 for ; Thu, 4 Aug 2022 19:40:27 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=+NzCibinHp779v1IovjYIjGazBzPOeOx99XbFZqICBo=; b=dQMM/FtAVFCzBwXEkmwgVB9Z0qWxseGciQ2Rvct4WLQasBsk/lINXMYgr6YyYLYheSKH XC3VQOIdgt5ted0Hbmxd+5NNanfleGWzfh754KIHV1SDAXZlqsldWSTwHsg45gyKdUMb Ryly1stTktGrHliBYzCxF2AXwn1Ynr2PlZUWcG4nmpN7KYKpi9rZJwRiJIvpseVKE0MA 23RjKqlJpU3Km/I4b5IDQP08ttjUVlgsxudWKfVvAPyRN7GtRzJWKpwI0kQYnVVWcM58 0X3f7ao+LpTik7AB9mj4L3jkl0pYZr4b74czF6xvOglq2IgcMCWsGsPfqjaNdlSFqg/7 Hw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu2cdn43-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:27 +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 274IH90h007562 for ; Thu, 4 Aug 2022 19:40:26 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34b93d-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dDHddrFqd283th2EweubijQs6Cr8eVuSUeCN4yWC0A/Ry3R1DQm82krJQw3pkCR6FENillOcGq9SVrqrpCnz93F8gsGeTf+eos5zb12kiK2TwkrxW7ik8YpqsVqkxs0P4mnk9Pp5GMfcBj4DMOMtiurAjr2IxwAQl6HO4HgoPGmRSIjr1BcC9TpXDBHsIhp4VrteZThonEPV32/uXv6dO1d0SAs6XbiMGbni6WyppjsS3Wa9WzKAwmbW5XyHXu4Te23ygCmop6tur4kagMgzbkkko2TYa8TuenM9BPyBcCsIbUgxtYp1ctkp0lPlJhnamEzwhpCl2V91rHH0ZVr9wg== 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=+NzCibinHp779v1IovjYIjGazBzPOeOx99XbFZqICBo=; b=Hf0WHr3WhfAi1zZwXlSCnhkJrw2moN8UYQjHzmU6DnTUKcmjm7q1QfTYoIUAhUDek/V/lEj6sBmfl2/Hj+0r6SxuXLunW8IoKXPlPWTYQhSrOOcjhml/A4wd6pwwO1oM53g350gf539AwoKGTNtYRFxURXDAUB0X92wUkoBx2rPUITKUci1JGLLo4a52nZE9ClvHIOIJIfJYJl2JSwjwLlHFlEjss6/qd2ReG0FkJcKqsoTZ5xVDZN9sRBDuqRRF9m59kawVHGt+QDHS7iI3uLcpooru+kVeer0XxkpMWkwu0KW4IbrpxOveh7Sypc8YfcMi5Gf7mSYKecAUS9DbjQ== 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=+NzCibinHp779v1IovjYIjGazBzPOeOx99XbFZqICBo=; b=FhkP0iPu+009b2RCrrJaAyCbbGOMFu5RZahCxdtOTLF3422UXLYaBTUwJEhlNY6x0IBu9lYLNmpnW2Iya8SpWgqWHNT/CDT26/oVkxdZJ9xx//8loMgIpa0D7VZgWh5+/0pAqcMZifxZI6Np7vJYK5yVnPiDlxQG4Azu3wvLmeQ= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5040.namprd10.prod.outlook.com (2603:10b6:5:3b0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:24 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:24 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 07/18] xfs: get directory offset when replacing a directory name Date: Thu, 4 Aug 2022 12:40:02 -0700 Message-Id: <20220804194013.99237-8-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fc3811e2-ea28-4d1a-6428-08da76512c2c X-MS-TrafficTypeDiagnostic: DS7PR10MB5040:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: /23LVzZIeOwgpaD+wsagE/eY67K8xmi/bYcns05EqoQ2Da0+oyzef7qcFsoAiTDTOoygcZDtsUEa2unVxT7ZyMF1R72rV9bzmaf2D24u5716Ddeml3CMjp3FU1IXL3++q2wI7uH+CdWhjgTwp8WNgO2EzyVwhkpNBIqE2Jjq9yBh7ZLZLK4yuDKwWwI4al5NEua8YfVvE045Pe0TEg1wShyFuxVL6xyCJx11vrrJpJwJwmVvEKkUAZQXaIdCZ8b7Oht2cRrhKPpdTN22L8lPVcCiPkkzfOvd2weN0PmfvOBtsfrkDd+cAWE3DncKWHhV8gccSX2fvuL8bEbNyNIU9kTUNvyE+RtIXeDtvjlEU4zlaCH2iK0qLlCuuGAWb7dFmMstPGqtSeIbYNuBol52+eHy1iOMpxeuB0VA2GBwsMnJj1JaTI8zA1zt+COiLZLW2iZhEBa8s9d74fnAYoNTkvv5b6xVO/IQUpbE2PQ87SmVlG/2gNOt1F84CNHKeFp+OxJK8UbpO3YuOhsr9pl3sMU1L+pDzpWTiIOr4GPEqU3pyU9809cFSomg0Dtn3lfFHRirsJkISpqAmho9DVY6JvtcGz0b9PwQ+Aa8tN2qtrEJYoPsdrJYN/zmEysF+CzIdOf8dOMVUiwElPm4cyUi/cBn2K3TycDZao/fOvCkgEUTAqthtYG+49BDrCx4TOMKeI8nGqyVrndnL9d3REq6RM3eMys1TVcGMG+DLsp1bh/6JXdc0uQFyvv1zRJ7X1jM64FDU1QdCdsobzf8T7HWJeUv47wrE/R4wQBaMLKiCvs= 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:(13230016)(366004)(376002)(136003)(39860400002)(346002)(396003)(41300700001)(6486002)(36756003)(2616005)(6666004)(2906002)(83380400001)(478600001)(316002)(1076003)(52116002)(66556008)(66946007)(26005)(6916009)(6512007)(66476007)(6506007)(8676002)(86362001)(8936002)(186003)(38350700002)(38100700002)(5660300002)(44832011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FhgmIeM97qC6PR/cWyJ0C/Rrcumhk024w/OjL3REbsHQ4N88gYRZ7gWRSb4DdaxqTVzwGxKyOKCB5nXXBMaO4EkQDpvmy5EOvsRKQaiprPcM+L6sMZB3YM6QRcliLl7dO8BzLg+QKf+twyy59VxCoRRfVeWZEhZwmY8pTYKvCcH1ieMUWT/Ol36R6JiKfW8MRPKh+oy5XypcpA09ZmVIwTUO9TOXNnUfNkRZWscXlOZUj+P3lRMt61wfe/Zd7P3cF1W4TnV8x1By71b/mRBqAX0QZpCkUUyXUSrr2ytzX4z4VHL/i20ITZZomecFm/6dwTzrX2LCFpNS2XOhMlvgh6lPowecpeCZRNeP/GP2EA1ZJ/fnxnxQ4zXfSouEakPopSQu0x3vM5afL2v8QD1WfmA/6qLf8VRYtcsYlIs5HFJAGxRXOPfI0hf4tRrGoVnFmuWDnarT7bZfO4ydAzjwu68HF+m2/+5hVKEvfZdxypN2u0Dlo8ZcQT0Jm4WtGwQUHj61R3Th3pq3FnuwwZsEQ9Sg2bVG4P1pbVvsCp9FmNNawrVE/Yeob0CJCYtFXTu8d5HQ3pkOi75gxsAsdrfCd8Qe7acnXivweT4PGCv2Dq1kYdfti3+vKkIHKFwm2arN2CZpIdy9jrC3g0trsjMQTChvRNTLmJS5UzeQu6n8EtXif9bx9o5CIbxrBpuOxXBIh+50J6imIkVN3veEcf1Tp0SkRIwCpg5WvSvZBppQOxK9lWpcWnTbeqVvP8wDk6mGlksgE8ofupGtcZO7oB511Z97565Ns8+4Q6gxS0Zt8626rxFC+rABjD0Xgqgj8FzIJ6p/cPFfYoz4pvOOpyZt9SoTEy5zL5nuwsv6iqKTV85KXpYvCYdtNIt0v+LLelGXzKK1TpvgKZo9oxm1k+yfySL7k/bH7+DmLSmiJo7dLQZ5cViXIe4eH+ski5VAl1UCXoR8njSo9vz/Re1uwBPKp2uFAs1Hc5g89ueHCDGBwAndbEYqUifWuI2H2WuvwJhYvF6iVJLvsvsYvbqGWnNede4F2864T13ZUZreX8xn1OynJYix+lo1v6hLCnWxPGDEk9UGUx7X9lv2UfE2f8Rx0sP/4ts49VJJclbPS1QbrOkOS7dDS2wCPS4/GA3VYGj7HmZChMxFVZ1jXEUOyXhGRbLo/YvSrtC2g2dPM3DY4Xp9slpElHVKruLdeWWHOgcatpwtuyQEsLaeMkV0Pw+ZRKyXTNP7PcsKSN1ijXEGTSZ7uxaxNegNucEy6opzhxVp8nSNQwXUQXqLt0T2WLc1MRkOHNcqCzQXy23AU+yjNCjCBmFVRAD3vKJZ8TTAuUHdCIDQDLBTJYS+CruHnVHIBab3HK8tLR5Tyhwk37IWdvJRSK3V4nAfRwSGZUqLAg5gillsxZ4oWRh33LynGGa68vek4BPsEgK+jKZDcXThz4SmgQ8uAtzgz7Ujn+ie5hXSoHTHusgH5oz+fCrJj8ZngZGipPgVmHJ7dP4RmXXMvAaTfKnNsNJTpPkpfvk4UUm+pdYfKohA1qf4lyKOGgvzHA0BX63YM5V0uawvxFEjxW6ZMa39LAT0zQTdGB8E1IX9AfVEuAHdGL7uHosO5ABvQw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fc3811e2-ea28-4d1a-6428-08da76512c2c X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:23.3443 (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: Vs4kW8ehokDOehUeCbGlOQWe5Xb+QyctNHm7+KkeUY9IfxT2LvMNLMwt8Vhaaw/WTNlS1GokRCMOuqIN3z0Bs6SKkQUUYg/MBtxWFxpmix4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5040 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=952 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: 4m_sCasf7GmQpCzmeqhLdOXGDEyEiBvh X-Proofpoint-ORIG-GUID: 4m_sCasf7GmQpCzmeqhLdOXGDEyEiBvh Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. [dchinner: forward ported and cleaned up] [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t, Changed typedefs to raw struct types] Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_dir2.c | 8 ++++++-- fs/xfs/libxfs/xfs_dir2.h | 2 +- fs/xfs/libxfs/xfs_dir2_block.c | 4 ++-- fs/xfs/libxfs/xfs_dir2_leaf.c | 1 + fs/xfs/libxfs/xfs_dir2_node.c | 1 + fs/xfs/libxfs/xfs_dir2_sf.c | 2 ++ fs/xfs/xfs_inode.c | 16 ++++++++-------- 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/fs/xfs/libxfs/xfs_dir2.c b/fs/xfs/libxfs/xfs_dir2.c index e62ec568f42d..e603323ce7a3 100644 --- a/fs/xfs/libxfs/xfs_dir2.c +++ b/fs/xfs/libxfs/xfs_dir2.c @@ -482,7 +482,7 @@ xfs_dir_removename( else rval = xfs_dir2_node_removename(args); out_free: - if (offset) + if (!rval && offset) *offset = args->offset; kmem_free(args); @@ -498,7 +498,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; @@ -546,6 +547,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/fs/xfs/libxfs/xfs_dir2.h b/fs/xfs/libxfs/xfs_dir2.h index c581d3b19bc6..fd943c0c00a0 100644 --- a/fs/xfs/libxfs/xfs_dir2.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_dir2_block.c b/fs/xfs/libxfs/xfs_dir2_block.c index d36f3f1491da..0f3a03e87278 100644 --- a/fs/xfs/libxfs/xfs_dir2_block.c +++ b/fs/xfs/libxfs/xfs_dir2_block.c @@ -885,9 +885,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/fs/xfs/libxfs/xfs_dir2_leaf.c b/fs/xfs/libxfs/xfs_dir2_leaf.c index c13763c16095..958b9fea64bd 100644 --- a/fs/xfs/libxfs/xfs_dir2_leaf.c +++ b/fs/xfs/libxfs/xfs_dir2_leaf.c @@ -1518,6 +1518,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/fs/xfs/libxfs/xfs_dir2_node.c b/fs/xfs/libxfs/xfs_dir2_node.c index 39cbdeafa0f6..53cd0d5d94f7 100644 --- a/fs/xfs/libxfs/xfs_dir2_node.c +++ b/fs/xfs/libxfs/xfs_dir2_node.c @@ -2242,6 +2242,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/fs/xfs/libxfs/xfs_dir2_sf.c b/fs/xfs/libxfs/xfs_dir2_sf.c index 2dc1d8d52228..2a8df4ede1a1 100644 --- a/fs/xfs/libxfs/xfs_dir2_sf.c +++ b/fs/xfs/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/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ce888f844053..09876ba10a42 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2487,7 +2487,7 @@ xfs_remove( */ if (dp->i_ino != tp->t_mountp->m_sb.sb_rootino) { error = xfs_dir_replace(tp, ip, &xfs_name_dotdot, - tp->t_mountp->m_sb.sb_rootino, 0); + tp->t_mountp->m_sb.sb_rootino, 0, NULL); if (error) return error; } @@ -2627,12 +2627,12 @@ xfs_cross_rename( int dp2_flags = 0; /* Swap inode number for dirent in first parent */ - error = xfs_dir_replace(tp, dp1, name1, ip2->i_ino, spaceres); + error = xfs_dir_replace(tp, dp1, name1, ip2->i_ino, spaceres, NULL); if (error) goto out_trans_abort; /* Swap inode number for dirent in second parent */ - error = xfs_dir_replace(tp, dp2, name2, ip1->i_ino, spaceres); + error = xfs_dir_replace(tp, dp2, name2, ip1->i_ino, spaceres, NULL); if (error) goto out_trans_abort; @@ -2646,7 +2646,7 @@ xfs_cross_rename( if (S_ISDIR(VFS_I(ip2)->i_mode)) { error = xfs_dir_replace(tp, ip2, &xfs_name_dotdot, - dp1->i_ino, spaceres); + dp1->i_ino, spaceres, NULL); if (error) goto out_trans_abort; @@ -2670,7 +2670,7 @@ xfs_cross_rename( if (S_ISDIR(VFS_I(ip1)->i_mode)) { error = xfs_dir_replace(tp, ip1, &xfs_name_dotdot, - dp2->i_ino, spaceres); + dp2->i_ino, spaceres, NULL); if (error) goto out_trans_abort; @@ -3004,7 +3004,7 @@ xfs_rename( * name at the destination directory, remove it first. */ error = xfs_dir_replace(tp, target_dp, target_name, - src_ip->i_ino, spaceres); + src_ip->i_ino, spaceres, NULL); if (error) goto out_trans_cancel; @@ -3038,7 +3038,7 @@ xfs_rename( * directory. */ error = xfs_dir_replace(tp, src_ip, &xfs_name_dotdot, - target_dp->i_ino, spaceres); + target_dp->i_ino, spaceres, NULL); ASSERT(error != -EEXIST); if (error) goto out_trans_cancel; @@ -3077,7 +3077,7 @@ xfs_rename( */ if (wip) error = xfs_dir_replace(tp, src_dp, src_name, wip->i_ino, - spaceres); + spaceres, NULL); else error = xfs_dir_removename(tp, src_dp, src_name, src_ip->i_ino, spaceres, NULL); From patchwork Thu Aug 4 19:40: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: 12936645 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 E5067C25B07 for ; Thu, 4 Aug 2022 19:40:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239266AbiHDTkg (ORCPT ); Thu, 4 Aug 2022 15:40:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230456AbiHDTk2 (ORCPT ); Thu, 4 Aug 2022 15:40:28 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9361C6407 for ; Thu, 4 Aug 2022 12:40:27 -0700 (PDT) Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 274HbggR021114 for ; Thu, 4 Aug 2022 19:40:27 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=N49A7sfQSuou44N8vGldnB1tZBot+KCgxOMxLzq5p00=; b=H8uE3mHXyqprW6q7v3rtTvgqXdHNqRnPC6qZQTHPGhB0MyW0L2SkMliaoEjdlau8qAR1 hNZTJadwIVB2edvmA6J2B1JO5eWvZy9K32wibQFVpLmNpfgCdRgpBJUlCG6CScJRx/RX bSPyWPKKDE53Nb3+TU2oiOUuJuojMeCBSMSdoMZy7q8YFJlLE+5xRzxYpB4dlvjb2Yiy bvAH6a9sg2CwDdkTS2cK+HYTNxomQjsqZu2wfpO5zkYVc80pHaHVo5m3R2ZLVUO9XjcO VjvLVkQ+XRci0JesuDcxZ2fCcka2KIQByQkNbHAOYoigRITYHUvwNF+/8UzHHwl9TUxb Eg== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu815xrt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:27 +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 274IH90i007562 for ; Thu, 4 Aug 2022 19:40:26 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34b93d-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N+LUwFDLauxTtuFRVdee6Notq46cBJV92a3vsuJ70FlEwg8Gl02jgcSFPcZhV8Hsj0WfpaEcJUAtWxozX0pzweLILSyxXHlcAi/vzvc76S4oUsbNie9gp6GvWIlIaSsyeX0QzVPTuGi92cp7GIQj+DCY948puvnNZTPqOfEX2MhyJP+bFT9TJ4QFNn94vO9uWF14b68fJgIPFbzU8WiVRPpP6Bld5rBftuG9bkGha5WxHsyd+rctBuGeiVkJ/hXk+YAKr/pxrRQviC1G174nnXOeY4Q1hnC5Fw+7pI7ftfkoUOKXQipriJM/Q+dL2vi2rpLuJpULoAs7cQlTHBnrYw== 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=N49A7sfQSuou44N8vGldnB1tZBot+KCgxOMxLzq5p00=; b=hKRysOEjBtJ9nvtXoKdqA2YiDid81/YQz0KfrVGj9TiX6zQkUoJok3iISQEoCmmaH5s2V3ZOCZE2FPE6Mfti+odPKcip/vtA42Pf5On0+rgtTD7azlv8k8dDAY+RH/sm0sguWv9sejq46uBlLhgo0z+TtHKzLe2b4RPlGGL9/8CJpGnpindZ9A5U6TNiDkATS/LrhpFkZBVgGt93Na85ngrW40Nbn+4W9jaPaJpq3a1VjP2zWvWmUwWVqQobVGx+C0Mo5ESeODzAEFGX/3zjTV1PHuZ/rSmGRiKXd54x1bLBoB0gNH04bOCRXRKhdkZWX4GYFl/1NvbwKIAmrclekg== 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=N49A7sfQSuou44N8vGldnB1tZBot+KCgxOMxLzq5p00=; b=xenBAyrkNakWk+uIkHR37vUhNaLuBwGBTqvt0gWOCWeS2Gm1/obhEuXpXnStVP4mohyDLyi8lku7Z3v77W2Whq8CEsWmE7HyVN14mm33ZIt/Jmse9ByQwCMzbymiTEGI2Ldv5SrEjWkz4okDgPO2nP1lo0cni4orieVuOQpbaYY= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5040.namprd10.prod.outlook.com (2603:10b6:5:3b0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:25 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:25 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 08/18] xfs: add parent pointer support to attribute code Date: Thu, 4 Aug 2022 12:40:03 -0700 Message-Id: <20220804194013.99237-9-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 17123962-b702-4bbf-d586-08da76512c60 X-MS-TrafficTypeDiagnostic: DS7PR10MB5040:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +SSQakmDFxBSglcqA7uAp10vAFZheqeKvwRDoSZ6XkJ56NBavBlht8fGvWJtT3+soc4kQ1/WfScJTMC7pVWLbxNc2KdZQuPesUUkiAxzWn6ycZYC7hATmiccH4Bjt17cBqF/GwOQfn0GdUvNx7rnFrMLCykMby0z07WxazXm+vQIvpRCo2v/SkLryOX9mmk+3n8o9w0MHM6efwj7FyZVzae7hEsYw9/TFP2OHiHIokYzlc8eEk0/VQ8J9M/deyX8VRbrEQ24y1V5+vvkTk7Q4J/Dw5ZOE9bIOgE0lPMlfkTFHma/o4Dkm0AuyvfnSSxi1wawXY+ytdxXEqiSEM8gPzM4nB9ifBk63gRdmrp76oZmDvQBz02lSM42Qxi4tSgC4IS2CR5gMTH1AyfuaQ+GGGlXYB+9N9eQqybfIuLOn/Xkj/E8Sy3Xpxi1BoRy86Tkfz+KYHEx2vg527ubC6w59RZo6+V+s1gHVAIxa6NSLa4dBi/zGkvhxzxNX8/+Uv6jCBhs73vfbEgJix3UMYJKWJyhGVeEtNnU4VX5xK5UhP9xM2j+XyjBQ+prJAOcwZz90vB8c9bbouRYrWvvmJXgqBeJySFpl3e4iu0tmizQsAnjqKP2xG2fN8BUaT1WvTJd0z4j+fZrgUX8wmLBwEdx5uMOol3wTBdO0ILlIiEMXmccb1S5Qc9/KSpFDxUe+BR/duD98YqG0g0XX2UUxIYDeI0eDTv1bYKQ9sPfzBPjIlbLALuUlyp1IbO4Hi5vXkAlMcylk4s5MuQSYSidnrQ1vPRpnc3/5SkkDCkIZiokbKs= 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:(13230016)(366004)(376002)(136003)(39860400002)(346002)(396003)(41300700001)(6486002)(36756003)(2616005)(6666004)(2906002)(83380400001)(478600001)(316002)(1076003)(52116002)(66556008)(66946007)(26005)(6916009)(6512007)(66476007)(6506007)(8676002)(86362001)(8936002)(186003)(38350700002)(38100700002)(5660300002)(44832011);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MJZ4kWdikNsdZh13CTuFW2UV+ExO8FYZbBXH2Ym3kNXguQVfuadMzQQGK63VIlhtHSMPNPcYtYuTPywbqtmkWw1tmh47Ayu0DddEFuJ1mJKXdOvYVcVqBrTAI/wxRDe4GUmjvH4j3i4yv9cnkd6ahA3dcGve6Bew4oilJL2EHR0j5pOE+CjGr6q6/4snnW193+Ap59TaPWCN6KrQpyzhjc33yOwtDleGvhyh6bkzEolAdJLiXJTltSKuXg45bsQjcR/Pz9Yk5q/ko3CHLsmkM6gOoQMLAWDMZzhVX5d/5YTY0/Yx/TssDWy7FRJxt/Osd6dGCLWVMXcasHY0ZQx3xoG/lBO5CyJ1rmYfiPk5uy7sJR+ETF4hqj4qRvrdTp4dKL20Mol0pr8j4PQqxddEglVAeD0VEf/EhOmhcxJOARTIAn5GXbCUURGEfRh1HymUCwkJw7vO3i5s/yM8lP6FLmDgb1fse3moeiMqFWPQOuLm3JAVNfePEvOHO772K9DXKW8954yJD9fw6cCguVWOkpCPBKB3HRLwt/0R0VHgF6QlwY6dJZeHKfPvfFLP99muBxzaugPd9TKO2ftYCC6qFicLMlrckgcC17ccTMSO9hnwutE0K/fCzLdqVZWEsW1hPCf/5yfgjOlHpaXiuFnzXucPw3iIQwQr3wrKqJ7uq2aUfpAtycyRuVtmasp6wkUKvJM+12M74Q5ea5a7ggpW5U4D+qL/qgT3LMklBd8mQIAcv0ddyufcHrTA6hAPQurNZMsWsCcVmFL4TjkNL6rB2ujurmE4yL7im+939/17H0FOmAjKNn6F+vtQfhpKJDjT6sMLJtuYKz3MDNGTw5IM6Upm8zym0lYrz+FxnepGGmDeYs8RCUSz8ibDX8rzqaHvZe1Kgv8VKvnyf+5L3aJ8058apGFnddzPSVDFfItQH0pIAvrEKzkofvhHlVJnH8CjxHyKnDaMD2SWwIJOum3hnEdBCvPTSPMKwoKBAEOuwXa/2nMH72k3pJFQMsmlWcZd1UUAhtMqZ3ps0h9jE4p6xwcb2ADYsFMgnCwibpivyu2V4f3dlzUmWu2laQ5x3LZjWv4Fiq+amguShArenC919reoTqgwdlolFLaohSry4uMj7ROHExmwMUH08x97nY4Bfi+z7UoCYEw323o04NBlSUofaa1P01xNNlqOD9KO+o7/TupVN/UUme0QFcmNKOXjcJ7BBtnexDM5M9zOB0O06pfiCRcClnlMnmrgZjcJg1FRlV/iSCVYabdisvLUiSG5gdWMAVRDUAsW7OXaDcE3WuIh5qMKWx7Lvors1E2dBb16+tSIAnNQMjkrZ0ZCWwx5KTYIyunG40SmszPogU7c2AX8P/TllH5qJFDFkv/5HZDpV1cLpDXYVbTgwB4DveZ2Eh7e4w8ZMjriN/3ZEjDDL2nHMQKUQZXjIr0PdccToLtejNkOQuCry8BlIVaMQJVG2lhxBmLpwGXPeGBvoFanXKyRM/4fw8K6PTDdVTijI8fLZtVjOSOrdii1WNyeYL4n+rXHA4PmnS23C6vblPAR1j/8i9g9CKzAeeA1DrkZ1HP9qXjWLW5komUqxvU+4OPxAmzhVza7oXf060bGE1jV6w== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17123962-b702-4bbf-d586-08da76512c60 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:23.6255 (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: 1xP+IbY5NocM/qfX8xR6Nj1RSyva7xb5To+OuBge6XIHXiEXdcHYVJbfwSmbtJwVDqfVaDsEIWjbRKyUqCGfR1JnsZ1C5Jwmw+thR+LJD5M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5040 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: EzWYpSVY8GWO21iDX2cp5r3TOu_NIyUO X-Proofpoint-GUID: EzWYpSVY8GWO21iDX2cp5r3TOu_NIyUO Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Add the new parent attribute type. XFS_ATTR_PARENT is used only for parent pointer entries; it uses reserved blocks like XFS_ATTR_ROOT. [dchinner: forward ported and cleaned up] [achender: rebased] Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_attr.c | 4 +++- fs/xfs/libxfs/xfs_da_format.h | 5 ++++- fs/xfs/libxfs/xfs_log_format.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index e28d93d232de..8df80d91399b 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c @@ -966,11 +966,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/fs/xfs/libxfs/xfs_da_format.h b/fs/xfs/libxfs/xfs_da_format.h index 25e2841084e1..3dc03968bba6 100644 --- a/fs/xfs/libxfs/xfs_da_format.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_log_format.h b/fs/xfs/libxfs/xfs_log_format.h index b351b9dc6561..eea53874fde8 100644 --- a/fs/xfs/libxfs/xfs_log_format.h +++ b/fs/xfs/libxfs/xfs_log_format.h @@ -917,6 +917,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 Aug 4 19:40: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: 12936646 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 E8A81C19F21 for ; Thu, 4 Aug 2022 19:40:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230456AbiHDTkg (ORCPT ); Thu, 4 Aug 2022 15:40:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239133AbiHDTka (ORCPT ); Thu, 4 Aug 2022 15:40:30 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 116A5F3D for ; Thu, 4 Aug 2022 12:40:29 -0700 (PDT) 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 274HbOZb024334 for ; Thu, 4 Aug 2022 19:40:28 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=RfDQaFTJ2peyZtPxJgtawUcik0Pb0vWHQCcSJCeqo7M=; b=w3h8RsdnebkYQZOW7coDFTxP4unXTo+agnDXE0GRbrpbnjgEjp++TKv0EGk2PRH76l6j vkcOLq7yYdim10dM23YNT1xyWNzx0ebavJ0PX9I36xpFfF4Poie4JDWoNVjkADTTI4Dh g/8rK/5sm5PlKimvuOGohOuGMz0JNL0FRZuQpyO7Z0SDcJhzTSANoiaEiw1UAvEnx4Nz 6rlf5MxnFlfEzuVoJHefvJORzQpYXYeor+4fQGtxz+FsCG/y9ycFV/R3UB/7vG4gxGgd BN6WloU/gMX7B8DqJ6BhScCdT7fqjv+qRKygzXaElj0Dh9QIan7ebkoxCi2RAD/ccJRF sQ== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmv8sdyqq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +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 274JO4XB014188 for ; Thu, 4 Aug 2022 19:40:27 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jo2R6usqcH1Uyk1EpMy0Rct829+VgvfLq65PRPGOme4ZKCIv8ZcWj9OVZmLTJXI56C6+OUX1KyZfqLq2MPsrRIB0zfIf5wVX7J/8NZa+i0AkwKkA5Une3RbWTMp1PeZ+KOseLNtdn+asW/EglBw1q8M2dhApR6IxKVTzy1nGvAIXZsMYmZnOKqfM6pXY465Tdd9I0OGqzOEALv0hcr/FzFMcRiuthmu3UYWoIbHGxLlzsWrbeGUIl61KcLmbZuHprzInmWw9+LvzpArsas2pVHE0JNxWubk12CqtwQGLfE2intwFi7i7Am9jZmLl8UdaDZDdpMlXToQ8G9Lh6XX2RA== 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=RfDQaFTJ2peyZtPxJgtawUcik0Pb0vWHQCcSJCeqo7M=; b=QD8y1tzZA3wI58RQnGExHii/2jGiXIA9aRJAVVuIGEAny5wqw0hM2tEKZHu1ALd/XrRYsdwguuNQxiAQs/zos2JKDO++PGL3zFLiwx5e0a2bwMH5B9XEn2ie0rlobiFHDNEbPYGVOXGjO6KJD4NGOzlMGyjY7Ac/wsYwjTaCPiJ3g4ca3WHGAIz2nAT3F1IxNq/wg9A321CiDNP6xQ7UzDp9EM3HbZzsoeL6/ta+PR+8aiO0S5iql84K/lOKqDpVVR5gDPVsI23B51OW8OLHgcpaGvHT6MMGAz6USloVG1wGeN39LibsnfvIVnLbGS0fEVmbWWxlN55J614E1CFp+Q== 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=RfDQaFTJ2peyZtPxJgtawUcik0Pb0vWHQCcSJCeqo7M=; b=m9PGUAMf7ClEmHq7CUBDK0yElGzvscfWFlEM1MQkvIc/jmPw8vEo464QLCLObdfCckWsc86J+yFNK1XiK0MJjiFCqZSTHSwGzg6JSNKwhsJB05zx5gg9bV2upixNQXIB4cqFgI1oM6azlpiIOl0UJGz9UO5VVzH5RjcpN9Sk+FQ= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:25 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:25 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 09/18] xfs: define parent pointer xattr format Date: Thu, 4 Aug 2022 12:40:04 -0700 Message-Id: <20220804194013.99237-10-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e548e9d3-af01-4743-ca7a-08da76512c84 X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 95+FmhUz9kMlvzl9tStKCA2quYha8OgiH05W5askXITslyPKycu6eK3DLKBnJ0G0eUpLxsiQ+4OlhyloYvXaFktx7nuE5+85pX0NjWoojORyXDGhbwN4tCCHBrhBtvD0PsSfWwwjvE8/iOd0lKonnaadMcSXQA9WCqYdecUd9LlNI3oxdHZ6G0cBGyk94B/KKjI7o2ffuCpNf6s1yX2fdigy2NWXf06bdAE6NEFJDSaeMI/nETpDfBkY6FP9ydbzlazpEqrLeD6U1WjHjJEia4GbJ6He7jY9mygSeLsvGsHlhgfZgrUP7BWSn1Ks6QUeGebjdO6zA7EncqtoRV5Vc9GUPBo+SikvVh4GwpGvLs987cHkVGI6qymaQodlvJvRInAkEX8Ic5NyhTtosUziyRRvHU8CQ0Xa8nLgOLmVOoThDoHaOZJ5+vmj+QeX7QeZeLJqqbXb6uFKsWjHNc/UlYuVgNDa7JvDEOzLcASEKmC+vtBUsVQ7Zkq9RmI/O51wBp6fQDGCIhCtCMRd/ZDi7H5CNuL/LJ5CfojrTIizHG9p9li2+gjN/JszlNZFOqQPVTsYKXxg33vVxKvsb0aeg0yIefNxP3df02BVR5prtNGazNA1V5XYRHbKZNXAgp9V+080dcqshc7ywg0wLSEDrfDVrYohdizGaUk/SxhWb+0DP0aSpT3wJ+YCYW7GTmmD/R5FP1VSrQFeMN7OjYB2QL2VP6EanKHYsFvHVXPGPcB1J5iWx2B4or7qSZN1P7PzonhGxKaTXlLpqo9gBQNgUt+IgTgPfkshzooPPnrMXnk= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: HEZnQl0h8Cu+L0WtTEfnE4jtI4k5Bh5wAGt5TkORi6Es0/Tt+b6BaNo5xUzvaZL3aFCQc6+6Eh1Cj/BHiFYqnbbCdMS7BpNTIbOyN0+mQerMDfjty+xvpMogU0KjKBh8Q8KoauLG6ZkYME/FQWMgDCGIXOFJcC3qP9j+/18Ifb4jiil6KOrc1PXR00UNUkzVcV3GEYX7lkqXbkdNcyPeMB4q7IY0sFSW/n0uol4t6uXgn4ISN2vsGCCeyStKp7K5FF8CeV3otklLv/9vPtBT98+tQrsRrBQnYp2uCbSbaIidUuFz3XXamOH98dxUWLrinf5KOzMQNl+RNUOKNtKfYCTekYQFwBaYodh/3Jk1tzaGEIzJmnNITHOs6zobbrFgY66ABxDpvLe7BZz0PKr9g+u8sb1yXCAN8tD3774s5kQSlycyUG/dLlu1ojS9ZQo59wzu2K6L3kuEgxxuCttSsh0JmBqSm6phoB2dyb0yHOgbMcRQ9fqfkVIYvEhSRNqSlDrgWGI+iJmuqiYzHBsSyW4mVO2uZnMVQ7dVv7azKODW4MznKrxx9CoM27+Gdjlx4juBuxb6vU9FiZvcBK/kMAGzi7mPtpMnW6ybpdtxi3IkCEDof6OKSpiHnIjKLZnlD/nfZBUz411ZA727XFNOt/Td3z1qvKuZaa1pTOuKrG9JUNlhOtX/Ci4e9l/qWbrmww7uxc2yBpkxgOxlwxtWPJYmjfvVFj7I4rtmUxXBHiRtSc3hfN5nKVkgr2YpzI4tTTvMqjk4ys4KstPHSvCpl9691CoWun5q6G/5Lfhf5tRJHPg8s4IgXfaf9o2WSVFu0x2p1xqZHV8hAMTxwvlEFXUOJdf7LMUxc1Ihk0vEDcI6wfvS6Kjr29+wNsb5PFUkvyTJutQo11pLwzVaChhWskbyBDEIPMQL3Zhbya9idBRQOeyauufYnPLHouahXWRvucc93fc+gUKRLqfX9PFk7R2HXjFwG0/bR5wMpidPhRhz6fNTqsunNxEDpM6vYInQl5cuLqDJToPuaU3HohnkAuydtasdx8xJMMfPiXKRIldFWfFO2AdNiUqM/Oh0gksJx6O7a2U5c7d75oecHKElKPLZkVHqP2NW8jxKdN11UMNp+GTOHSe/AhVpdHZAPY8cqCXasaJZGWzhFmMrEdNoPBKEtgIJZwu+0F4Vgs3I5XNrKGxSppwKaPg1XsJIfmoQZMv36Sa3op87v2ebw384kvsOMXjtC5tAPguqCK828BuVJe2fVJCOPFyLfmRCT5E0LsmO/sNK8K314jK8g3HGNJVPcxQI0swcSCouuSJeLejbQCV+GNzChxmR/4rxYJQlPga/x8bd76Z9Q7grKYT5lflOZfyWeXwjBMGYG4pCvBLMEm6cxH73ltmy1yKa5d3RhlOLZyEarVgssDe8WZ2v9sB5kfSl7lXpWaqvZj/BhI0/PHKvYiPFK6yAT4CN8tT7sS51/sKUBUPdqezugUmtAoTunEpnoodFfwggIjtRWttaxcBX1gYc14LDsqJ+43Lmq9z93n+fHlT6zTpuDEoSiF4Jq1oRj9AZmUbPxVvGPyi49EY2Lu6eJhARrjA9kpPcD1cJR8ZdSTALh6AbX3j3nQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: e548e9d3-af01-4743-ca7a-08da76512c84 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:24.1736 (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: AQYv8fjwsltZHlV60RjMbk1XjuFIOhcySCcKx0uS7YII9w/hzU+ChbzIArW3+q5Qzjt9zW9e2+faEnKKrBz/HiGjsDBmyNLVqMMZPGd8YYE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: 8BBbuhIeCBraEDSKOhG7SAOrvvs9Uu21 X-Proofpoint-ORIG-GUID: 8BBbuhIeCBraEDSKOhG7SAOrvvs9Uu21 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t, changed p_ino to xfs_ino_t and p_namelen to uint8_t, moved to xfs_da_format for xfs_dir2_dataptr_t] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_da_format.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/fs/xfs/libxfs/xfs_da_format.h b/fs/xfs/libxfs/xfs_da_format.h index 3dc03968bba6..b02b67f1999e 100644 --- a/fs/xfs/libxfs/xfs_da_format.h +++ b/fs/xfs/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 Aug 4 19:40: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: 12936648 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 114BBC19F21 for ; Thu, 4 Aug 2022 19:40:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239031AbiHDTkj (ORCPT ); Thu, 4 Aug 2022 15:40:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239142AbiHDTka (ORCPT ); Thu, 4 Aug 2022 15:40:30 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6FC3960F7 for ; Thu, 4 Aug 2022 12:40:29 -0700 (PDT) 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 274HbRX8015052 for ; Thu, 4 Aug 2022 19:40:28 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=siMQJNZfSeWLQlzG5I8xst4ASguhdOApHe0+h3FuF0U=; b=LweqgGBgCmaBOSwyiPT+W+ggjJz837rfXjZMazp2wZXzShfufTBzllD3Jk+K2sM2U9Hd RGzsP/DjtpKxOToc25jBtmRYRDhVKHg5BmYS0Yfb9MPJvXchhAmRwXEIhyW1em6MbbHG ZWigLqKWrj+gOdX0+YkGcD850hq/tc4CaFSOWiXgFX2Na5Tci4aSf/z3XQy1b5j+IdRk xKVmUfxfjov38y4jN4O9zuTsuvBGEvv03wP4pJYuKZHuFrjWLRiq4b9/tJ1xqhV8BqHs Fb9QvnSGEoTvPOQc5z/bJXJaXVL1Zx03Ika1hzcOm6fBV0WSVQc2SJyxrlRgjIop+sOm Hg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmu2cdn46-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +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 274JO4XC014188 for ; Thu, 4 Aug 2022 19:40:27 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bc8Mxi0dmzADU/jpSPMVsoCe4eVwcp29zzqu8dXGDhUJeLBW1pVdAHzW/ucZErUhpmteqeAlVbcqHu4LTqOn5zgxxqCh1UWEzeyKkb9QjlsKMBJiGGogVoZNciZ/L1pLETFszGSPNx/Jqy9s/HCNJ0ru6yi5dyiXDQrgbQR68wLRWASPQ8WOz9Dv6ZU+BnIhIw8tTkpzSYbmYDHa0+gMVHP24fRBAk6ZEBNwzh38GGjPu4kiZnv1cojkLVslGHFuywjRLtPVsby0F76wvVl8dMRNHHb9s055YlXfnWJYCT5ydtu/wtTu8Y7PTKBhjzMNq72cytWM5OgTzYCWo5knNg== 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=siMQJNZfSeWLQlzG5I8xst4ASguhdOApHe0+h3FuF0U=; b=kn2m/6wPx9SvVubYWbI/k/yH2FkI+oHs20JBv+/0OB3h+WixPe70lt78IHHV60hh2SCyeQMs9//CR2StCOEkrMFIKQ3V9W1G8x2LTTaCOKqWNbY+q0Hqco7pRZm2dVG3BQL54OTox5LpuBuf+I3jyrBVOXdoHHG8LkXJ+9Jr8rYXTy15TUZvgd9PKq44bbSO5NTIZbH9xqbrkSWmjacjoYQ/uVSyNGKj7BW6dKlEvtoS/3oVTUXDOa8mncFRgwOAh3TBm4bIU5E+gVTAKwEJyQE1IGjoIpnkboUERFeLcj75FNf1uGkiMBe9BbvQHjhWo18+of22loRzPUQcqx34Cg== 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=siMQJNZfSeWLQlzG5I8xst4ASguhdOApHe0+h3FuF0U=; b=wX52CgcG+Q6slANndCZQ1BMNh/V0RlPyQ9cvadO1KUOtlzlNXWiAIiHfd0EMWCxyxP8/IFqW+K9xr9afhG59yN+iz3bEAJ1N+0Wi3W+jA5/uQUth9x8iaLL6tVjxSP3PUsQ5U5lmHwCpWd1u3V+Z43cVVpRs7S70tlMdKwCjYW8= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:26 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:26 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 10/18] xfs: Add xfs_verify_pptr Date: Thu, 4 Aug 2022 12:40:05 -0700 Message-Id: <20220804194013.99237-11-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0a03e3d4-c908-46e4-9b37-08da76512cda X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Zb4rhIKYIDKDiEtdLytb9JP4Hnkxoy3UYbP/tsvTZdbFmWoB7qTKzs0f5NZmbgwVsjS78cXuibfvS1JE2igZOxS4ndyrW0MSLgMhLgAzqZzxOo6yd0pCZ3YmRXk2F7D68rGd+u5OG+99L4ywLZF4ytQ7dauvjj1oC2ivssVmS+0QZlI8qvu5yY2YbIGYYpaUZtOEPnItnbdyrVI+D2crxnsCcbBf0xVLfVsqlFDgc9FugH42jUVoxQEBPjP+DE8PU50y8m2oPXj+OR2Qw/mt07ZXrOuU+TGNAbYzJ2SRjxPcm5LyTjg/OY4QIPgjXw9k7gMfnUhSLM5mHa6Kz/zQMK1fzdIlG6TcXSG/GvGJDyOXSmbLcG6iTtOzwQIjTABmXC0+GhLCPJBxN5oK+v4iKhyC9OH3iP0dvHl+pSLJEAO4Jx2f9k8yu2j0+bTroj5Lrp7W7Px92Nk4dk+h7UxKkJjlqI4jhwnlRcwbr4bJmk0AXbc5LWfXDETi+9fukgEmTdI3MMB2SkoryX1OLyl4j9blgpahE4+nZC3GAnrG/fdBEVQvIF/i5AUR7JfLOHHCjd3Ri1qA38xrke4zFhqU7dMjb2OO3b/ZXxsOHl7Ejl8c0A6C+3qLwoueNkILqoBVsKFvSrzRztZUgpW57cAyoKkfCYoT0jktqbGbP5e6eEXKwplD2EyQ4/aQ/2MYaWLalXbGXW7uDtxREnizPxJNRs4Q18RsOxH2F93UNFYOBUTi3eBAkywx8ReCfU0ARXSl+uNcYm1sr5yAwXI4iK61WdB+2wapd8kw4z6e7JWLRBQ= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Fh+CHGDPMna+QWAt3vhXY9ZZ+b3IyuAUNMRiUrGE0s9QVNnLy8m84rAioyYCjoZZwjCUQVcC5cnJYyEHSagEBBilJ2pzRAC/e/Gq4DDW4jkKBn7bRcOTgFOUCy0LTtKBlElak/hQ1I2tMvWzsrw/+31yr6zDvZxbBWyJbTBWciNcLiiZDX0Hp95MkR27H5WnV7nXIUlj63WjnI8YyJTL2kb90FfxZ3pCKgzBNkYZ9VErfUeYdoNild3BN65jFpXICUOkgkGwtNH/Skqp1jY57/AkmcI2cVk8iiTz/3cbL9LS6qRCmsG9KSm65PGFnFZS6LVQDWoubRSq9CmSS77d77e6nD+kWLvdt0+TyYkddcZ/EMsvtwhIqRkl4nC5YzMyn9VnUdlVJhgfw2/VNB6C9QyEkE+nAbgW9y7dSzPuVuno8IFpEm1cMDf311ZWd8/9T8ZbFFCVYsAI+GaI1dAKYojT3zFecn7rG7HcsHXmk38MDazzXQrWZIqIQaHJHAUWew4SLRejKPo3Xss3G6SfxohW9cPisVdwcur55AHRHuhkH7rQ0+pZsyS6DSkCCoK+sjca8XXzWqbymg6xV4f1ir7pxP6BuUN+iswOCi8zNrRhVVxjEMiDGxqdBo7oFi6vjo/J5NXCKSIb8exgCuqfZ0XHWyBa1CNcVXVwL6txZyDLvnA4rGxP+OgSqig8fkQytrf7Ny/wljGQX7lR8lnY6VuhJVRCVcR+MRedu8AHgRwEEMbsyTfZYf5Sidf+14flUdrXLFJgaVjHP+hPiUc3p2yHkKBAncIDgc3Pv+KxTcxkkRBxx+eMJPWgIBV2ph4mshQIfqzen8y83Ap+KXiR/ZludMEnffC/ev4GiAmbgwrVU3QD7tf4F3vtlaPOy+E52BkyZoI4utXZSxpYkTWjpWmuAYZzHuBA2x7QNyjm8LMdowvG7177m10f272LP+mvRs/+p9kB9kYcypwOXoNO+62Uv68j1pV0RtIUp9vFR1sSioOrXhBBG9/Kim9eEql39ldXOvOLFVPSm0Z6rgv3siwQQaVkgr/2krET3QROxeZ0z1kJ5PvmLsY77TdYbzHZsftYsNAS5DiNCCGWjEHbB8jgwMR94VwQTa29ltyGcPQVD3bbPmfoWmYF12A4xOOsAQ1Av2wFHcc2uKkUPaV3x8sPKIHmJ1UwF2XAfF8gcXQAfrufOZ6WwHMKeIrtVOuaeaV1tQiYwCGcLlvP070uk1w+rtMcW/DeQ55JQpYqv7/8x1OV958jhw6sxrQ6RJ9JD2NXIQcL5Gw8akc9cqS6ipFJ5SZXj406eIr7WIJIK9MEowo2ZhkNwfrrvUNP4/hRqhiLPjT5lknJQISNUq/8NOHy2HBdbfjz8OpTHreGAjjI77Fv5JnhTAWh1/Ib1bvOmxCJj+u7VSrFai+0mygoVxjt1DYNkcTnCJKusEjV3Sbu8UpGCJM19VJbYQpN/rJc32IR3h4pMk/FMUpkxmyAJQW6ZW7SW+hBhyP43DVaVRShzrMBRXNZFN8ZJH1hdFzWXWWBEyPqR65xikuMp0OcdYwku8LdbJTTQQMGb6fQQ+6rVFjgL2TEiCh4B7p5C2t60uVVyU5MJOiqLbJocfOTjg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a03e3d4-c908-46e4-9b37-08da76512cda X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:24.5488 (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: 40dsvPdCLBQkJ7I0zf+yQVKk5MDQQfvDl/u/cgUN8elqWoS4HQ0iEt77mqDdoUKWpSdKlAvDV/E+etiQfJoYPExL71Qg4hSCLd47VIsy+0Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: 7lne15L7NDkLkFGWvSBDQHUXSz8_YB49 X-Proofpoint-ORIG-GUID: 7lne15L7NDkLkFGWvSBDQHUXSz8_YB49 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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 --- fs/xfs/libxfs/xfs_attr.c | 43 +++++++++++++++++++++++++++++++++++++--- fs/xfs/libxfs/xfs_attr.h | 3 ++- fs/xfs/scrub/attr.c | 2 +- fs/xfs/xfs_attr_item.c | 6 ++++-- fs/xfs/xfs_attr_list.c | 17 +++++++++++----- 5 files changed, 59 insertions(+), 12 deletions(-) diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index 8df80d91399b..2ef3262f21e8 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c @@ -1567,9 +1567,29 @@ xfs_attr_node_get( 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, struct xfs_parent_name_rec *rec) +{ + xfs_ino_t p_ino = (xfs_ino_t)be64_to_cpu(rec->p_ino); + xfs_dir2_dataptr_t p_diroffset = + (xfs_dir2_dataptr_t)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) { @@ -1584,6 +1604,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/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h index 81be9b3e4004..af92cc57e7d8 100644 --- a/fs/xfs/libxfs/xfs_attr.h +++ b/fs/xfs/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/fs/xfs/scrub/attr.c b/fs/xfs/scrub/attr.c index b6f0c9f3f124..d3e75c077fab 100644 --- a/fs/xfs/scrub/attr.c +++ b/fs/xfs/scrub/attr.c @@ -128,7 +128,7 @@ xchk_xattr_listent( } /* Does this name make sense? */ - if (!xfs_attr_namecheck(name, namelen)) { + if (!xfs_attr_namecheck(sx->sc->mp, name, namelen, flags)) { xchk_fblock_set_corrupt(sx->sc, XFS_ATTR_FORK, args.blkno); return; } diff --git a/fs/xfs/xfs_attr_item.c b/fs/xfs/xfs_attr_item.c index c13d724a3e13..69856814c066 100644 --- a/fs/xfs/xfs_attr_item.c +++ b/fs/xfs/xfs_attr_item.c @@ -587,7 +587,8 @@ xfs_attri_item_recover( */ attrp = &attrip->attri_format; if (!xfs_attri_validate(mp, attrp) || - !xfs_attr_namecheck(nv->name.i_addr, nv->name.i_len)) + !xfs_attr_namecheck(mp, nv->name.i_addr, nv->name.i_len, + attrp->alfi_attr_filter)) return -EFSCORRUPTED; error = xlog_recover_iget(mp, attrp->alfi_ino, &ip); @@ -727,7 +728,8 @@ xlog_recover_attri_commit_pass2( return -EFSCORRUPTED; } - if (!xfs_attr_namecheck(attr_name, attri_formatp->alfi_name_len)) { + if (!xfs_attr_namecheck(mp, attr_name, attri_formatp->alfi_name_len, + attri_formatp->alfi_attr_filter)) { XFS_ERROR_REPORT(__func__, XFS_ERRLEVEL_LOW, mp); return -EFSCORRUPTED; } diff --git a/fs/xfs/xfs_attr_list.c b/fs/xfs/xfs_attr_list.c index 99bbbe1a0e44..a51f7f13a352 100644 --- a/fs/xfs/xfs_attr_list.c +++ b/fs/xfs/xfs_attr_list.c @@ -58,9 +58,13 @@ xfs_attr_shortform_list( struct xfs_attr_sf_sort *sbuf, *sbp; struct xfs_attr_shortform *sf; struct xfs_attr_sf_entry *sfe; + struct xfs_mount *mp; int sbsize, nsbuf, count, i; int error = 0; + ASSERT(context != NULL); + ASSERT(dp != NULL); + mp = dp->i_mount; sf = (struct xfs_attr_shortform *)dp->i_af.if_u1.if_data; ASSERT(sf != NULL); if (!sf->hdr.count) @@ -82,8 +86,9 @@ xfs_attr_shortform_list( (dp->i_af.if_bytes + sf->hdr.count * 16) < context->bufsize)) { for (i = 0, sfe = &sf->list[0]; i < sf->hdr.count; i++) { if (XFS_IS_CORRUPT(context->dp->i_mount, - !xfs_attr_namecheck(sfe->nameval, - sfe->namelen))) + !xfs_attr_namecheck(mp, sfe->nameval, + sfe->namelen, + sfe->flags))) return -EFSCORRUPTED; context->put_listent(context, sfe->flags, @@ -174,8 +179,9 @@ xfs_attr_shortform_list( cursor->offset = 0; } if (XFS_IS_CORRUPT(context->dp->i_mount, - !xfs_attr_namecheck(sbp->name, - sbp->namelen))) { + !xfs_attr_namecheck(mp, sbp->name, + sbp->namelen, + sbp->flags))) { error = -EFSCORRUPTED; goto out; } @@ -465,7 +471,8 @@ xfs_attr3_leaf_list_int( } if (XFS_IS_CORRUPT(context->dp->i_mount, - !xfs_attr_namecheck(name, namelen))) + !xfs_attr_namecheck(mp, name, namelen, + entry->flags))) return -EFSCORRUPTED; context->put_listent(context, entry->flags, name, namelen, valuelen); From patchwork Thu Aug 4 19:40: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: 12936649 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 DCB12C3F6B0 for ; Thu, 4 Aug 2022 19:40:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239133AbiHDTkk (ORCPT ); Thu, 4 Aug 2022 15:40:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234628AbiHDTka (ORCPT ); Thu, 4 Aug 2022 15:40:30 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C97C17660 for ; Thu, 4 Aug 2022 12:40:29 -0700 (PDT) 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 274HbYB0001460 for ; Thu, 4 Aug 2022 19:40:29 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=QmqzOcgnG9Wlu661xvk4KAibIhyTM3ZJiJGmHaN7aO0=; b=bcO0oKI5lZ8AhhjAuKDjvwB0dYA4dWWon1a0tHpjFvDeqbFnAYrJ/zLmRNEAMOzVM780 LkGH/3IepB/NEkTpSynkdJaA9oh05tKc0TyZ34RTGB+mwAe42vB5Go0ojUnqZtXCsZTx ZcBKH0mTqRnu7hT9dGXrGT0aL1R+qiebdlglWPR/uiKYBkqCtSY884vVUU6IDr0Y4jrx bV+t8Mv8HV4UbDRwb1kzdErK3E7zp76hzLFu3YFzwEGZT5qFxckZwAXHnsuWTZox2mlI aH9u3L/x9K3cifQLUQvkP16U0jpG/yKLkbtXq5nR5Y/BEh76B8oEMe0Sodc+JYlb/Jwy Zw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmue2x31k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +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 274JO4XD014188 for ; Thu, 4 Aug 2022 19:40:28 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YHtV3fAErKzoOx0BjYElWjFZNBVposHIgJWUTcOWfxjtbbOZXqRe0xa3COH31tacL5NMBBGmjVP48Vp6WhtFHjUUIHR4HK27ixnXRG5QQ7otClYeB2xVGTeYXE+fGn79g4GdqMoMPQn5SK/wgTaOHyNVmJlZ/3c2C57ukujE5WVxjqrDP6w2DxJBs/lf97xNMw6nG3kQMjmq+tk9qRoTvKNLiTpG2/x0+8Cupspwxy200QLNuREWnI/AW00hrjGkDzTGAfVv4htLbqJ90EPB00pL0DjhuuTn5A4zygzX91S0e2kIeDdsI8KP5TIdmYCWDSStIxMj05Wv9LmvG3zCRA== 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=QmqzOcgnG9Wlu661xvk4KAibIhyTM3ZJiJGmHaN7aO0=; b=Yl2cLNcQ90kf0ITQ2CE01n0LSxK+vA27h1oVtPrJfZI94CKBTQhhpeCHjaHjKEla6vSY9VqMHCFrWxrQXBFt6fAb1LLM74UevCZIhzVNBGXiKZNpe5noTpkKimk1vS4ghAJUDoKDvg7g7IfWpKlx+k1J6UMwHwto6a2e6sCZq9U563JCv4W2qXiyX+53DcrcH+p2hSBfX7F6GjkydTiOdImPmsADnMvfNHDBLALDEtplNQ6f0eKZhyyZb7Zk2dZODd9kYZ6In3bVXoNRuJUBkPYY8KFlVgIbSmBqBAvRe25HPltd3EdDXZ+cQnGCaLDD9upCI8COFCs9Ns8Kem+MIQ== 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=QmqzOcgnG9Wlu661xvk4KAibIhyTM3ZJiJGmHaN7aO0=; b=rfc4bYKfyEP3KdF5tV4KwmC6JNuoX+AdHykXyAhKZK72Qt81P+9ztWCaegwJQx9w0W9to4U82b/cFN7aj2v0sFbGzs3hqyebrR3jRVYskZ1eXti3UcC2Fn4kRpVXRGdFLhVcB6MeGkAJHNTZbQfdrOyP+Am+h11LRJCOAJVbFcs= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:26 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:26 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 11/18] xfs: extend transaction reservations for parent attributes Date: Thu, 4 Aug 2022 12:40:06 -0700 Message-Id: <20220804194013.99237-12-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 24dacf44-9379-404a-62c7-08da76512d1d X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KAjTebul6fV0ZBgvdn5cUiolq5qqWS4QBVsjFmjnQQgj820q1Wzf6ZaP27JVJpCAvw0x+L47fjEa3P/kmUEJgdpBiYOVhjafcj38ySiNJxWkyVejW/2G34DSYllMA8ZBFk4pc0zuZa+AtqQ+P6txkhUwfD3tBAdIAYDcl735mVmkqLfC9bfz5Pj2BisHypZxNMp4e439IeZhQYK9abxUXGSq0UJEghT7SFE6TEZWbB/EIOTocWJvmpr5EC3EEnOMZLiurNBH2AFISxA7DvC1Fnd/I+TyyN140aXcX8SmrYU3VyFa6+nWauwesoxYd0fN7M0B18/jgWDamzNEcri36GAMZk3VVMYl55tGjCYfHCIASQKk+gk41HtQCjpn4WoKi+fA8bbcwA3HdNOdVOdiXtnxlinyOWJGbGTysDc+YCaw16yPbUOiOe662AKiNc56PnPSDZTtvBDjejrQ2O52A69cs1b92BY1FUqOWp7YwLEQGvWTyHjGwBUc8vREQOAMAYz/pVuH5HJrvuObTlh+CCeQeHHJ81JKgIyypOUsIlVwGCKdGGcx4DuJiZ9dPAxOfqKDWoyv6CKwizALjz/ff1fvK0BKkuRb/LSPcOCauRW64HQBbgnfmbV3NQi1M3w/H00PT8yUl3Lcquuii7WUvpVEYL+EHQvxZNWoHup3DYl12HYkUvAhlInx9m+f9DuniNlY7ceM3XJ0xL5LjNGFNelD0u1TmzpiRYrYkM9afVRiBWuJJb1NEl2uCRDEIzSj9gHpL8D8unSclGK0V0vTTvE5dxi1nqQ8yI2Mn0lpOxY= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ZI2d+C/k8r9eLWptAr5RvVjLieljyZFzn+ojPLxmMDuOCqVUaJ9Gnh2IKx1vJXdXeEJTvDMbD6spU6Tm/BVgSNDxuKcFgDRUQTOWLm09FK7sSpn4uQ4qX9c96AvNp68W0pXZg/NXH5JLYkzgmV3GrmooAjTHtQAYJO1jRBkjJMAVW7VCkIMIyqaG85K8xtL3ARujof8PZQhaiyiWs912Je4ajH7K84xz598lGcdSE7xlTD/2/k58Z8iKfDHPE9yu4SiQWyYMqQye5GpX4QSByPu0sljqq4b9+1nKYTwSGK07a/S6E8lmHDW3wMlwIwu+251A638vrR47bGTanJda3rm/2eYYAGPGlITy69DfJQY2BTySe+1rXLNPFnOTTummjEr7EcJ/KJWtEElJbCZ4u4q3bz3W+JJay7hMS5auyPI+LUXGPZWbJahk4JkMcZbnE0iH6G+gjrN65WIGkdPmw5Y54PpU3OiDccTAbWj4cJ4JOdAd5/OoaxIg/3TbjttbSDr5ng+PrCy45OdwG9iFYEEdtmmhuGw6lStVUHaDFRfKh4bjJCf/hyRsKCEn9JOS6Pfwh+fJAfI+IUaCjsD/8FhslRvvrrU4cCSPrqYkpfGIgMRNsIe0zkIntnC6e0FExVRAkIrPgkr5WId+N0k4XJtVS7ilrtYp20vf8Natir8iH0EbAKac79DSQNjMQTJTX/ohqJNDhmXoZhmksyyPJW78C8aVRn2Qjia3zJQtWoTOVgzndm3qsrLJhJOcJd+BK6PYSS9uERHabmxKqVEraMYrgXqwxUQVQKhUwDEa0fyvyO4wveOaOYQqZ7RaqyIpHCqtpqvw+5/k+fHpZEyrVPVFI3ybwpdJNZz8tXznN37CgF2pzbO03nfYtz388KEKHrPckrJh0pCrMr7ElL+ms4Z5OrbjHUyCoAs2VRKgepVHlDSGkFmZA0w4LBmISWU+1Im3DV1FRU3dwkkxLHaBk5fEd75ZY4MbvruWSkFTHt8rbTbtTbnvCnYpbKmFLvRzCBgY4183QwSSkWof9aH+0iNi9c5S8jpKvA7U8Xsm4UdwEJbju5RW3ZVcH101M7XamwfO7fzXfr7iOUcB8FeDA14DCZKvAu8A+NswDPh24wAVsaJTUWDP5uoXc6jl5FESfhGAQUSCf3J/t985m6LVqKx+/865/H1GHZyD+lyCGiw6s4kk9+U2wWcFjc3C9Kvj4EZ4tWgn2XnT6VCevkAQx0oRXQqFWr607uRJ5wOrAtS2z0G8wDh0LMca1D2ph1+YmFtaLLt7j1ZnUqNZaQ/xScMZ+Nwpum9Ed7LP7At0NYan5jHMFcV2D2H5P6AiU7T41wCRWa68vyz37H58M7g5w4m2fg1I8uzOxEcEU/2jnpZB35QObLbDlznhVZGtDHMkb/Zz37C28o3lEULZsz6ZbWA/4PCVueFrT9MIzE4PVeQmk+bVCplDZI+4tysC7s/tq2IzhrB6kDxWDTLUjg09SgUNUoBq4Y6GlAP37RmoarfZdssci1tH6HhSisK/y5uFv+luhKOi300LCjs4U+J4lifZfSNmuw78DUZtZ1ywkhoi4zJrpjVEASR7ofIv/G+2NaeYZlQmAA/E4aBFMeagIw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24dacf44-9379-404a-62c7-08da76512d1d X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:24.8769 (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: DTbpiwpj8lpjKx2eYhR1sd2E5bLFeJWBNgvYmwN8yTRDQYEGOP9i+4ruvhJa2Ouz5swlVsdo+/qZILo1dwNZS8aZdvtKcDdMddBbGwqYERI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: Td4DKX94c0fLCulJm6swo-azV6f32FPr X-Proofpoint-GUID: Td4DKX94c0fLCulJm6swo-azV6f32FPr Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. [achender: rebased] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- fs/xfs/libxfs/xfs_trans_resv.c | 105 +++++++++++++++++++++++++++------ 1 file changed, 86 insertions(+), 19 deletions(-) diff --git a/fs/xfs/libxfs/xfs_trans_resv.c b/fs/xfs/libxfs/xfs_trans_resv.c index e9913c2c5a24..b43ac4be7564 100644 --- a/fs/xfs/libxfs/xfs_trans_resv.c +++ b/fs/xfs/libxfs/xfs_trans_resv.c @@ -909,24 +909,67 @@ xfs_calc_sb_reservation( return xfs_calc_buf_res(1, mp->m_sb.sb_sectsize); } -void -xfs_trans_resv_calc( - struct xfs_mount *mp, - struct xfs_trans_resv *resp) +STATIC void +xfs_calc_parent_ptr_reservations( + struct xfs_mount *mp) { - int logcount_adj = 0; + struct xfs_trans_resv *resp = M_RES(mp); - /* - * 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; + /* Calculate extra space needed for parent pointer attributes */ + if (!xfs_has_parent(mp)) + return; - 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; + /* rename can add/remove/modify 4 parent attributes */ + resp->tr_rename.tr_logres += 4 * max(resp->tr_attrsetm.tr_logres, + resp->tr_attrrm.tr_logres); + resp->tr_rename.tr_logcount += 4 * max(resp->tr_attrsetm.tr_logcount, + resp->tr_attrrm.tr_logcount); + + /* create will add 1 parent attribute */ + resp->tr_create.tr_logres += resp->tr_attrsetm.tr_logres; + resp->tr_create.tr_logcount += resp->tr_attrsetm.tr_logcount; + + /* mkdir will add 1 parent attribute */ + resp->tr_mkdir.tr_logres += resp->tr_attrsetm.tr_logres; + resp->tr_mkdir.tr_logcount += resp->tr_attrsetm.tr_logcount; + + /* link will add 1 parent attribute */ + resp->tr_link.tr_logres += resp->tr_attrsetm.tr_logres; + resp->tr_link.tr_logcount += resp->tr_attrsetm.tr_logcount; + + /* symlink will add 1 parent attribute */ + resp->tr_symlink.tr_logres += resp->tr_attrsetm.tr_logres; + resp->tr_symlink.tr_logcount += resp->tr_attrsetm.tr_logcount; + + /* remove will remove 1 parent attribute */ + resp->tr_remove.tr_logres += resp->tr_attrrm.tr_logres; + resp->tr_remove.tr_logcount += resp->tr_attrrm.tr_logcount; +} + +/* + * 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 assumes 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. + * + * Note for rename: rename will vastly overestimate requirements. This will be + * addressed later when modifications are made to ensure parent attribute + * modifications can be done atomically with the rename operation. + */ +STATIC void +xfs_calc_namespace_reservations( + struct xfs_mount *mp, + struct xfs_trans_resv *resp) +{ + 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; @@ -948,15 +991,37 @@ xfs_trans_resv_calc( resp->tr_create.tr_logcount = XFS_CREATE_LOG_COUNT; 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; + resp->tr_mkdir.tr_logflags |= XFS_TRANS_PERM_LOG_RES; + + xfs_calc_parent_ptr_reservations(mp); +} + +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; @@ -986,6 +1051,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 Aug 4 19:40: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: 12936653 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 7317FC25B07 for ; Thu, 4 Aug 2022 19:40:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239321AbiHDTkm (ORCPT ); Thu, 4 Aug 2022 15:40:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237363AbiHDTkc (ORCPT ); Thu, 4 Aug 2022 15:40:32 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36F986407 for ; Thu, 4 Aug 2022 12:40:30 -0700 (PDT) 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 274HbYXD024412 for ; Thu, 4 Aug 2022 19:40:29 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=D1GxUB38aZ6TiBtpDDGVLHcYXZizU6NwdeFGI63+jRM=; b=Ym72SEt/8wvSq7Xru2CGUf8/uHy0SNDtuoEWN1AB8VPGqxcThFhi0B6CeKGA2kJYlRvK UpfXp4naORv8qztOYvGtALdFFwb89lFaF8SvEFW9cQ9hkWzD6eet0npxfc/b1ADeG1DQ uE3JKinAHsvqU7hqP5JO1AbnemfQ+o80XBJBJrgFlD3TFe7yyMQqLFDSmVJ9/Rgk+Cbx 8II2RlYbEPRbI2ItwZqUaHs+ESbF4ruR40bySy2LCSfawJ6hNqXLcL7c/uUAAuw9myt1 8KRj2cbLzgYdsjbS+9YdS4p//vms+/59pYC7TPD0fcE+r6J4iPNhOfXEO/fqlXRPxgPJ tw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmv8sdyqt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:29 +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 274JO4XE014188 for ; Thu, 4 Aug 2022 19:40:28 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-4 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U2gHDvy0D04WHJ5++DlCQ0+8ZhMsGvnQxQlhLFeW10pVWqKf5CSihbFsojDtbSOnpZAEOUWUujyl3q7vxTRJZK3Vj/mGaLzxCJD2OJOaQ5sAAyyZqIAUMGsSp+56+SO7FatNvq9oY1bZIg9hAELFteigRyeTcanyQTGnyEtCPgpe4J+zfvi0sgieJ20/9HnL+NV2vuTPEntxjGtK3tb11M7rJhxm4ZE+OnmrFlGc1L/DzD0RDpU+P/n8Y2jHb0vLoqSpu5+XK6coWlSrJJsO8BxxgptK7OQkVrgEODPYUCRB3Ei6N+sxaA9DFvZZuKjXd+PU6FnkZjzClg+JxX+efQ== 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=D1GxUB38aZ6TiBtpDDGVLHcYXZizU6NwdeFGI63+jRM=; b=cM23Uny8QZzrRsNvvQ1klDivWuKiSMU3fFzcUaT2tnax4tUYQN6M8QM2cm3yFiJAV2I9z0TRvBn77V1lx8GkanZDfLuZQsLrJh/KieZAR17qdYng4dUDvjqYZQsWFsV9xFw/qCNQhGEITrpxAxfax7MIw/ZTv9HnTX7clSAKymaqDhC1MWe9GqDcyzFdZ3W67tRo9JPrBZEoU1ltq4xF2zMlPyMvGrx8ejOT/6HvpqC0oZSC5vizxJL+9BTqk5Q8j5dj3c0dlTlyrmf6ZeB5oUT7Ue0M8eOnNjjk/YJGqqPrLyLbaV/z10/QdcDT7xYEjdD0Ebm/H12RrH5Z0fJsBQ== 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=D1GxUB38aZ6TiBtpDDGVLHcYXZizU6NwdeFGI63+jRM=; b=WMnQ8K3Cnj3AFbH+cYkwHa8EV9Gr76L2LNxwvdkb4buhG0R5B7kqIWFJlKMkIiYkmxf13iu5kjTq/i58/4PDBZgecEZ7pqJPhzJUF96wsiaXXaqcoIRd00Cj+FlAjs3ow3gc/CwPnrCt1NeIa0qn+Otn6MrUFLgpTWr50hPmowM= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:27 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:27 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 12/18] xfs: parent pointer attribute creation Date: Thu, 4 Aug 2022 12:40:07 -0700 Message-Id: <20220804194013.99237-13-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 68ddbd31-50e2-42c1-0f9b-08da76512d4d X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bVzde34pqN/u7AQor9VYEvtsd4HHXUNwkxZNhDqmC79ZYm5KSdVdtZV1PNPApY9/OTuceTUbjsM5eIoJ161oEMyPhZPnCGY6NCYW/hVfnrkUmkxrg0ELYCLAH3CTFdDyGbwWE/7STW8SHsSIlh6RUofEasUjZFmt6rYB2DO5KHGIyYQ4kee4vZPDVrFjNPv+JheZT1SAc1p9G+DGZsoHvyZIwg0dK9zo0bCWdxZaw38Rz0ptdu44ZB3TDhSOBeCs9PO3frRsvXHVW0nz9UMBKhizXcEEtaa+k202/vpC+0XssIOuCHhz1+tUj3XQqrCo2PTJ7LpteyFWgFpIDMhOLi6I90/zLAwQIKHkLKOzf1KTp8LG4ARNYwbcu35ZIfzVyLJLX3tnrHtf+6LQvxD4ZySiFIShKYq0HSziitD92uR6zb+48TGCMAVDCp/rgUe+UJvhY3L/n+DBuk6/OlEsCUejDDd4Kv836MXqlt0O67cMZfE17GhnKKJFxOVQMuRTAg8MwC6V8+Ss17Udgtfrd7fYJBXr+6gfrcmSwwTp2UE/lBI+kxkpRLsgw6kC83a1XDGjOAGDw5PlRkp9IuL06/cIOiDgmnLF4rfaPc3hvgTCbCKuMsvaYrMw45sGPy66f7F6sOtl1D4WcoMBi7ua8Ev57GVv6zKSfniGuWlJHm9Q7Lqm4kKDDvx0+Bq4v1FiLd169n6qQCFtYbzsj1owH2fFXGinFqKBkhJCC2z2Szwx4FdqQFLp8X4NhfeNuEz2GBOm2WgVC+9Ob9UDV2UQKw/Gl6H3ddj99/wjqvY0KN8= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(30864003)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: QikzhP0DSPlyUnI4SnthV/sB3o9rRBUsDnUTlBrAEd9K9eIxtE91I6p1GJEhrFqL0PFjNYDdHJn/BRB4BK6XGru6cZvsJHcdD9MZzF+K4EoTyNLuis+lAGAnIV18xQ+QuERmmvWGrBkoPb5V16FeVsYUEcF6oj1O4JDi+9L46lS1cKO+nrNWnzM1T1Fh/7YOyJe0HV6sk/ybnoanyuwlESBUJkbj6s3UkPPLaGdLj486iygQGbuRLLEGNIL/roqVVvQ0G5Fv0Gf7q34XBJhzfiJmr8KgJfyPVaJ/+uqeuucEROx8xzzCOIfwY8W7eNPJKvOLKYpN6G9NH6WCWDakKZvdWhZ2CO0I6DM7J+BCTkSRymzmTTp4GYh8gg25rzlVsjD5wmc7cgplSEgthhBZLNKxOeoqj6Hwhqb82CKkZ6vSV/JRA9X2zCQCYFvppmVOzeCft5YO/opA7GHx++xdqsHdW4BvWcsYXkKPtm0R3D1ZfCBCpXy+rhPSpGCFFpDhK7tKms+8Ko+xnVN0ts4iKmhprPb2sJyLteqWb9ldVOcrzqbjQU88mbYbJpnmF0v7G6ZL/rpyXQgGTW+lcjR8EaP94bFQkvUOy71tLXs1um7sQF0vRjXPTAPy0NnrDPCw6vT5DzoGQMp/RFHBgw5Vleoro8v6XhCeHt3Gu4gxoaRcParnEiqN/z2gbXQq3HgQskplFAA1Tl82gcv2FGjEs13Hy5lVHS5Cwv8RkNf0TNUvJTWQ8HagB3abPnkC03bmzRKXdRWA6lgATqkE0mPv4t5btpr00C8q/MteOzpiC5Kgtz9NNWhV1V3mw1i9UhaBj/rsJiIBF4Chbo2HFQPZed7MtysgcbCkq9xddsuCXjff3kEGrg0p5QBQkgmHnOkEUCZmNh2amutL9mL1q2V5gysHFFKrQbjWt6vyH2rz2OHImzmHJT3dgx3tj/4CC+Hcl2bgsztgu/D6I/NZEL8bttTghhDAdvsa29pr4VmKgA9dqJGbn9TzXTEKVl+buNS+NkLFGlgOFbMMUFrxzPWFKom/+Duo0yaXSbIo81JgaL5uhQq1gbPWoFRtExFGa/jn3Eg6rvRBEDpxSboP+k2L9SvUpg/5ePrGHY9snj9yEP0tV3e0G8tjU4bvkMQy2M2Bzwmk8sLtJ6qK9FptpDIAu/gipfKbvCj3WTqoQ8KaAfaD4TUaN3+yOwhgyjB22DF+WfYazr6p3uDcQ/sdRLqSnB84AUzJqV9p1U6xPpCGfMTATeTemRDIPTpLg9dkrqR7X9vOIhYbT+2bINRTGVpwpFOrsgWweeN5UbEpTC2PuPtIXSiuFtrgBWZAWiBNkIi+JRZj2ILwM7e+taNmXYqU2Qzdr6qU4x3dvQpEMPo6tZPIFyVb2VoL487XHNxISSE38j7hr6S1QpuSoUlHgw46C75DuYQC2gConmJv8swH/P0d6L0JkkRMphZWmSpZvBzk7AfP/iUoI3aHQ7JUkF4R6nEj860DK9k4uy/P5+eHQBaKa3aGJmteyuoxqQltWNztAJMQTAbGAZuRwQddyW+SANxTT1yP/B4qa3YU9tfKTRAVSGnaVEDZXb/riBoT5vsBASlkSmviB3m6Lkhj2GSqug== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68ddbd31-50e2-42c1-0f9b-08da76512d4d X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:25.2362 (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: zTfEO6skAmn/5W61yyEAvzWQN9mIuj6g28BbVxOkKCtiw5EHzcLV/hMVYEL7LbZhARbsa3tkPkaleS01lpEuSh1lIw3Ll3/xzk0fYUzNgqs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: sSeNeRJGSCsvcG7cAtLTjSW6jnyzCnsd X-Proofpoint-ORIG-GUID: sSeNeRJGSCsvcG7cAtLTjSW6jnyzCnsd Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org Add parent pointer attribute during xfs_create, and subroutines to initialize attributes [bfoster: rebase, use VFS inode generation] [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t, fixed some null pointer bugs, merged error handling patch, remove unnecessary ENOSPC handling in xfs_attr_set_first_parent] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- fs/xfs/Makefile | 1 + fs/xfs/libxfs/xfs_attr.c | 4 +- fs/xfs/libxfs/xfs_attr.h | 4 +- fs/xfs/libxfs/xfs_parent.c | 134 +++++++++++++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_parent.h | 34 ++++++++++ fs/xfs/xfs_inode.c | 37 ++++++++-- fs/xfs/xfs_xattr.c | 2 +- fs/xfs/xfs_xattr.h | 1 + 8 files changed, 208 insertions(+), 9 deletions(-) diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index 1131dd01e4fe..caeea8d968ba 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -40,6 +40,7 @@ xfs-y += $(addprefix libxfs/, \ xfs_inode_fork.o \ xfs_inode_buf.o \ xfs_log_rlimit.o \ + xfs_parent.o \ xfs_ag_resv.o \ xfs_rmap.o \ xfs_rmap_btree.o \ diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index 2ef3262f21e8..0a458ea7051f 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c @@ -880,7 +880,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) */ @@ -898,7 +898,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/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h index af92cc57e7d8..b47417b5172f 100644 --- a/fs/xfs/libxfs/xfs_attr.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_parent.c b/fs/xfs/libxfs/xfs_parent.c new file mode 100644 index 000000000000..4ab531c77d7d --- /dev/null +++ b/fs/xfs/libxfs/xfs_parent.c @@ -0,0 +1,134 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2022 Oracle, Inc. + * All rights reserved. + */ +#include "xfs.h" +#include "xfs_fs.h" +#include "xfs_format.h" +#include "xfs_da_format.h" +#include "xfs_log_format.h" +#include "xfs_shared.h" +#include "xfs_trans_resv.h" +#include "xfs_mount.h" +#include "xfs_bmap_btree.h" +#include "xfs_inode.h" +#include "xfs_error.h" +#include "xfs_trace.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_defer.h" +#include "xfs_log.h" +#include "xfs_xattr.h" +#include "xfs_parent.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( + xfs_mount_t *mp, + xfs_inode_t *ip, + struct xfs_name *target_name, + struct xfs_parent_defer **parentp) +{ + struct xfs_parent_defer *parent; + int error; + + if (!xfs_has_parent(mp)) + return 0; + + error = xfs_attr_grab_log_assist(mp); + if (error) + return error; + + parent = kzalloc(sizeof(*parent), GFP_KERNEL); + if (!parent) + return -ENOMEM; + + /* init parent da_args */ + parent->args.dp = ip; + 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); + + if (target_name) { + parent->args.value = (void *)target_name->name; + parent->args.valuelen = target_name->len; + } + + *parentp = parent; + return 0; +} + +int +xfs_parent_defer_add( + struct xfs_trans *tp, + struct xfs_inode *ip, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset) +{ + struct xfs_da_args *args = &parent->args; + + xfs_init_parent_name_rec(&parent->rec, ip, diroffset); + args->trans = tp; + args->hashval = xfs_da_hashname(args->name, args->namelen); + 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); + kfree(parent); +} + diff --git a/fs/xfs/libxfs/xfs_parent.h b/fs/xfs/libxfs/xfs_parent.h new file mode 100644 index 000000000000..21a350b97ed5 --- /dev/null +++ b/fs/xfs/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, xfs_inode_t *ip, + struct xfs_name *target_name, + struct xfs_parent_defer **parentp); +int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_inode *ip, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset); +void xfs_parent_cancel(xfs_mount_t *mp, struct xfs_parent_defer *parent); + +#endif /* __XFS_PARENT_H__ */ diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 09876ba10a42..ef993c3a8963 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -37,6 +37,8 @@ #include "xfs_reflink.h" #include "xfs_ag.h" #include "xfs_log_priv.h" +#include "xfs_parent.h" +#include "xfs_xattr.h" struct kmem_cache *xfs_inode_cache; @@ -950,7 +952,7 @@ xfs_bumplink( int xfs_create( struct user_namespace *mnt_userns, - xfs_inode_t *dp, + struct xfs_inode *dp, struct xfs_name *name, umode_t mode, dev_t rdev, @@ -962,7 +964,7 @@ xfs_create( struct xfs_inode *ip = NULL; struct xfs_trans *tp = NULL; int error; - bool unlock_dp_on_error = false; + bool unlock_dp_on_error = false; prid_t prid; struct xfs_dquot *udqp = NULL; struct xfs_dquot *gdqp = NULL; @@ -970,6 +972,8 @@ xfs_create( struct xfs_trans_res *tres; uint resblks; xfs_ino_t ino; + xfs_dir2_dataptr_t diroffset; + struct xfs_parent_defer *parent = NULL; trace_xfs_create(dp, name); @@ -996,6 +1000,12 @@ xfs_create( tres = &M_RES(mp)->tr_create; } + if (xfs_has_parent(mp)) { + error = xfs_parent_init(mp, dp, name, &parent); + if (error) + goto out_release_dquots; + } + /* * Initially assume that the file does not exist and * reserve the resources for that case. If that is not @@ -1011,7 +1021,7 @@ xfs_create( resblks, &tp); } if (error) - goto out_release_dquots; + goto drop_incompat; xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); unlock_dp_on_error = true; @@ -1021,6 +1031,7 @@ xfs_create( * entry pointing to them, but a directory also the "." entry * pointing to itself. */ + init_xattrs |= xfs_has_parent(mp); error = xfs_dialloc(&tp, dp->i_ino, mode, &ino); if (!error) error = xfs_init_new_inode(mnt_userns, tp, dp, ino, mode, @@ -1035,11 +1046,12 @@ xfs_create( * the transaction cancel unlocking dp so don't do it explicitly in the * error path. */ - xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, dp, 0); unlock_dp_on_error = false; error = xfs_dir_createname(tp, dp, name, ip->i_ino, - resblks - XFS_IALLOC_SPACE_RES(mp), NULL); + resblks - XFS_IALLOC_SPACE_RES(mp), + &diroffset); if (error) { ASSERT(error != -ENOSPC); goto out_trans_cancel; @@ -1055,6 +1067,17 @@ xfs_create( xfs_bumplink(tp, dp); } + /* + * If we have parent pointers, we need to add the attribute containing + * the parent information now. + */ + if (parent) { + parent->args.dp = ip; + error = xfs_parent_defer_add(tp, dp, parent, diroffset); + if (error) + goto out_trans_cancel; + } + /* * If this is a synchronous mount, make sure that the * create transaction goes to disk before returning to @@ -1080,6 +1103,7 @@ xfs_create( *ipp = ip; xfs_iunlock(ip, XFS_ILOCK_EXCL); + xfs_iunlock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); return 0; out_trans_cancel: @@ -1094,6 +1118,9 @@ xfs_create( xfs_finish_inode_setup(ip); xfs_irele(ip); } + drop_incompat: + if (parent) + xfs_parent_cancel(mp, parent); out_release_dquots: xfs_qm_dqrele(udqp); xfs_qm_dqrele(gdqp); diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c index c325a28b89a8..d9067c5f6bd6 100644 --- a/fs/xfs/xfs_xattr.c +++ b/fs/xfs/xfs_xattr.c @@ -27,7 +27,7 @@ * they must release the permission by calling xlog_drop_incompat_feat * when they're done. */ -static inline int +int xfs_attr_grab_log_assist( struct xfs_mount *mp) { diff --git a/fs/xfs/xfs_xattr.h b/fs/xfs/xfs_xattr.h index 2b09133b1b9b..3fd6520a4d69 100644 --- a/fs/xfs/xfs_xattr.h +++ b/fs/xfs/xfs_xattr.h @@ -7,6 +7,7 @@ #define __XFS_XATTR_H__ int xfs_attr_change(struct xfs_da_args *args); +int xfs_attr_grab_log_assist(struct xfs_mount *mp); extern const struct xattr_handler *xfs_xattr_handlers[]; From patchwork Thu Aug 4 19:40: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: 12936650 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 E4A4DC19F21 for ; Thu, 4 Aug 2022 19:40:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234628AbiHDTkk (ORCPT ); Thu, 4 Aug 2022 15:40:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239229AbiHDTkc (ORCPT ); Thu, 4 Aug 2022 15:40:32 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64E1BBC00 for ; Thu, 4 Aug 2022 12:40:30 -0700 (PDT) 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 274HbVdI001427 for ; Thu, 4 Aug 2022 19:40:29 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=ZOMCi0kif4HgweEAl9oe4JTtLWQrwgjrJVBb62jZI/8=; b=0RGouTU9BlIdQDtUVF79rhU2cuGJ5cosM2AAEKjOgE6OcnzrduVBmKpw8+NSJHJ4/Kxh 2UCVwIYjrtcKYxT0lFHI7QxIMzgl/e9iHFClVSuZ+cfmForOCvGkLzfZIBsw0Zti6lcV i7x/7AR87I3HWOJEo3etMwuu9YXTHkn8UB/FMhBmJW5/ge8Q8Qw+Mp9pQ0lM1K/uBONp eap1JOHcdMIMomoDUxPvgGfiN+GrGVj9V3vLR5KkNpC5siNF7+bjPsQDpET7IHU9cixb jxyo1mg8bqqRWgHvLskpqOSfrOrtX7MI9drk40aN3AAcGWkofSF8Y6wCgq5bwNYiBKmp 2w== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmue2x31m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:29 +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 274JO4XF014188 for ; Thu, 4 Aug 2022 19:40:28 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-5 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:28 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SOgXpxllsF+ZnVceCJP42wpzwsQwlkb9kEC0dwWLsmacyB0RHb7KzV93+3JBGWyvZqcJRXueFNopi3956A5roPHOWZR6u7ZrdIDMoN7x0JNWvIJryZqwlXXuSWDzzmZsPkzcaXTWwLZ/O2Sb6SqvSlHe1m4Y1OYHuZ7xur/7j939BLAlP4oMkyj89OKk6ZB1BCwR15/qlSyQiupNoRMkkIbGS+ieH9ovx8+l+iyYAIeK50LemGZN3WmSEcHphNAdfrWFJHjXZFk/bZ1CoICZ/5979NMzhBTL3XOO5PawO+xhiwX+FCrDmY4gdGhYuuxLa8gIu/zaIlsoIz66PovuhA== 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=ZOMCi0kif4HgweEAl9oe4JTtLWQrwgjrJVBb62jZI/8=; b=N/KP8WtRgKYF/ZVfiusRyGW7EAW+Tkhz7QTkT+rIdnRxxKIXjIbf4h1jzR/Iyr4f/2mqmQctOMFWijEdPr76M3KMfyQDFs30n4DQwxZhrd1R+RvCUKyWwkgb7hFkrT2a/IOCp7ZFSSIZ93x0P7S1apLsmkIHJINWn3qHPh9W3YvnZwH+QHkruRJse/fXIEKiQb5pFq1ZbmTqnvRjpHnWc+oe4jQDhjQCMzKVf8+sSMfmnItPWUClqHbNbbhWOdsFA+w4y9mONkKM5UkRFGmXf+9LCcB6Nhls2FxqR/q6Q/YRwn1/qwiUqljmUiZHIFyBGr3Fy8jjj3jF3hARiCofAA== 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=ZOMCi0kif4HgweEAl9oe4JTtLWQrwgjrJVBb62jZI/8=; b=XZY1ZNdmsMjaamiKxqJPh527f7YQNguoXmlZkLYiib9+c2Zzpbs3dtWQ+EzKVHwmK+pXBXpr76jDlOR1lgH5gvdbNMnxThxxQyKFQ4qvBjGft4tAb6Va+XfGl2srshoH4D/wjqAsVexzVMc4dCBAJ9VL2OPHEiy+xvUERCHJkFs= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:27 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:27 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 13/18] xfs: add parent attributes to link Date: Thu, 4 Aug 2022 12:40:08 -0700 Message-Id: <20220804194013.99237-14-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b09e1a8f-6cde-4003-8126-08da76512db8 X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Wx8uKTlk9jrLBMLf6kyVod9g3ha17Xp84L4zKX50JXh9YFFuu4fLEFZUoIgl0vAeK3VJJoAsg/unqU/t4v42yobXvT3gXlUpIRl5lulrhoQ79lyikoER4NL56astkWT+GolhaMyXsTJtXSAaDe+xfi5v8qYUw/hXR42Iib6zke8LraJtmvc4vbTQhBMzDV2wB3oJEdUEbtCNQ5Nq4/i71bO9ENIvVvJjFsJotQDlWqIz//Cbxii2t5D9iaqMy4YYe7rOCiB7+QPmmTPgAJHwmlG7iP8PKH+16cpGEhQHcJcr5/xnLvMi+5dMuFJkbU56QiaAqVENaVxl+FvtuO+7fciMr4DZ+o72/BfUkkN9Z8BiinUGNfdtG5YBR1AwmEbV9JsBuD0xrFjZbh5xRuuZYiNBCzGAk2wLPWqe81Le8Vs8KwxKhq/bSb/tfVdT0vZITvFEIl0wk/APZ5fL5PRi3D/eZWsMi15+AjNM9t4gHZ+Q9hmHkSSiHOfu9xYtDLgLbXDHZ+v2HQ2phpw6NNmWwLJZTW3iqBruMjZb1vLeqTKiV9yOt9PuyWETdiYiQkX3EJs0ON6/o5osmiDB51SEQhgoCkIjl6Nq/cOhE2vDvKv3QLain3bWCA77NIEr3UT8Xl5TfkhLe1VugBO6lhK/epkgYijQNTST1gD+JlQVhAwHIvDqsMT8aErRsFGWaP0zlKo/UnGYwA/LrS2jsAM3vHlB5eVlJPPwnchfORPfavRTyU5dINvaxX1mU7ujzDVftdvz9ZsR430TrMJxOpuoE/l9qwTXSHMzGGlbBLqSWUw= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UOaqRibiUz8VRjY+ARyf59TnAWWYueowy/2q7vMgeMp2IKQ2jN4xUvzVxQOwHMG4WxNHZg7Ft76pktD99/uRw0rnKVJK9WiN8DJbpwl+KT9iZ7pz8IY3CHpDy9zEXdGLDPQLOhcuqCvswxPSScaLWzZLjIacMQO7QlLNQcKEGghrM0VVsvnoG68z/zhJv7+idGtGa+EkW8jQ2bkRkriO3eXdFzVfb3b2NYxDr9vCz1uEcQyBpkShza3M84Tk+OQTif1wED/isrS6w4kA0wZUmTNp9weFUQ5gjqP8vrDsmIslj1BBYXQ1nQAFE7Ixo5xSgrHaTZTOQ69J28q47fBZgjvu4f3e4DS+2uGghmQnBB1p4zzja+81M/kWbLgQDwXE2Dcq+51NEz8G5kW/pzSCGlSKlXSkR1FG+DrmgM004/CKBBIyWohiRhIg17v+ahGF8sqju6z/FGc+9l5IBr8XNq8MhqFAVvOsL311HE6eQYq+4iPT0nHIPGG1xU4p2o3+BdlKSLNIL01egg3JipJclXPQJxDTwh5B6OogA19yhbfEehoYyTFGZEqwbpErMOONTprqFSn8paT6hQRDS5X2VunUDIAOS66CB41TzJxNEq8JAlyOUqGfjOk+F5VyCuWYpMNa+YeWR0pz82AFYRCM/QLhtBfh2Hz9wEt+EW3LJ95uTm17VfzlxZp7oRqHJp3lA73yW29iqLjbkeW18lY8HPkrN+JIwqD4ex+gvxyj6KkqPlVv/BrVwoLZ3kdHBTV0x2VUQ+TWg5VLhpQikmMITTrQOM+c8MEYiOCKZGKdM4XIazMuq0sLPHXHMPnVFdYQmnbg53kOM3F/BDVlZkPxy7EzGxHJmSIZu+TYc15NOnMK1IcniznyXrQSWgp5MEI/fTMhjcQGPXKqntQRiQ342qje+T3WJ8e1+G3tsfolwZFwLFjzEpjAa9W630DMAag9xCoIQNf3DZFOyNu8RlduWvvaC3YSI3lTO1fRX7c+ATlMC85iO3pKP8yPfQOymbwaRS/jCJzDUXNcdm55k3+tclQm92mo4t1mwwryFN3VKo3x1QM43Ag1FJW7NlVGjKq8xS3JWz1MhfyKCU+G0RlelMTnjjdMgs5xxOuoKzWg9m59eQDkA4yHx0NceTYNV4Fqiz/74ptcIgOgmca9YvnnBT+FvmtwW01ZIIb8eXk8FosjY4hxNsM/QwmGC6mKVXPAj7uXCqyFP0zNSjuEg6FhSieJoTwuffijFnGFD4a6g6tLwIDBEMsw38qrPvWic45JWkumztjXG+pmkspFRwHeOQo3Tmvj+0SXxpxPjZHyV0f+K4FC0g7vZgoFfYDeeRG+zN6vU8YNy+5GhvZy40Zk6+xlfe6VRSE7etlulpiM+Vd43QBHAX0yA5O9Gb3Ds+W+nmvHiIj3WuxMnZf53YA4uHOo/9GQD+3kukxjE2mDeIf8AmwM7C67tj0/ECZhHM45MAmqEMKM4z+66Acy4vuj8SCO6iqBVbuPOt1mzOZTlX9qBHNpPnR6ym/IBsDflRwWu1HNJrxwXiLCviQSQRrWQ6ivooMNW9twuwG2ifL70sEeTf4CuFYam0Y+5YASxFYzmu/ZFbt9BSPe/3kddAwt/g== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: b09e1a8f-6cde-4003-8126-08da76512db8 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:25.9091 (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: 6/g/5gP0Jal+kKTPnijHO4ywAFA5hAHR1FERCB46KweqCeZAeE+fWrF/gcywjPsRCSt6p+8bbSZFXIG6Fv2aBpRTCI3AWTKisTePZZT6nGU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: ffs2uQCEQtiuGXxtes5ypqUPXnkkUlKM X-Proofpoint-GUID: ffs2uQCEQtiuGXxtes5ypqUPXnkkUlKM Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This patch modifies xfs_link to add a parent pointer to the inode. [bfoster: rebase, use VFS inode fields, fix xfs_bmap_finish() usage] [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t, fixed null pointer bugs] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- fs/xfs/xfs_inode.c | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index ef993c3a8963..6e5deb0d42c4 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1228,14 +1228,16 @@ xfs_create_tmpfile( int xfs_link( - xfs_inode_t *tdp, - xfs_inode_t *sip, + struct xfs_inode *tdp, + struct xfs_inode *sip, struct xfs_name *target_name) { - xfs_mount_t *mp = tdp->i_mount; - xfs_trans_t *tp; + struct xfs_mount *mp = tdp->i_mount; + struct xfs_trans *tp; int error, nospace_error = 0; int resblks; + xfs_dir2_dataptr_t diroffset; + struct xfs_parent_defer *parent = NULL; trace_xfs_link(tdp, target_name); @@ -1252,11 +1254,17 @@ xfs_link( if (error) goto std_return; + if (xfs_has_parent(mp)) { + error = xfs_parent_init(mp, sip, target_name, &parent); + if (error) + goto std_return; + } + resblks = XFS_LINK_SPACE_RES(mp, target_name->len); error = xfs_trans_alloc_dir(tdp, &M_RES(mp)->tr_link, sip, &resblks, &tp, &nospace_error); if (error) - goto std_return; + goto drop_incompat; /* * If we are using project inheritance, we only allow hard link @@ -1289,14 +1297,26 @@ xfs_link( } error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, - resblks, NULL); + resblks, &diroffset); if (error) - goto error_return; + goto out_defer_cancel; xfs_trans_ichgtime(tp, tdp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); xfs_trans_log_inode(tp, tdp, XFS_ILOG_CORE); xfs_bumplink(tp, sip); + /* + * If we have parent pointers, we now need to add the parent record to + * the attribute fork of the inode. If this is the initial parent + * attribute, we need to create it correctly, otherwise we can just add + * the parent to the inode. + */ + if (parent) { + error = xfs_parent_defer_add(tp, tdp, parent, diroffset); + if (error) + goto out_defer_cancel; + } + /* * If this is a synchronous mount, make sure that the * link transaction goes to disk before returning to @@ -1310,11 +1330,16 @@ xfs_link( xfs_iunlock(sip, XFS_ILOCK_EXCL); return error; - error_return: +out_defer_cancel: + xfs_defer_cancel(tp); +error_return: xfs_trans_cancel(tp); xfs_iunlock(tdp, XFS_ILOCK_EXCL); xfs_iunlock(sip, XFS_ILOCK_EXCL); - std_return: +drop_incompat: + if (parent) + xfs_parent_cancel(mp, parent); +std_return: if (error == -ENOSPC && nospace_error) error = nospace_error; return error; From patchwork Thu Aug 4 19:40: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: 12936651 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 4BA13C3F6B0 for ; Thu, 4 Aug 2022 19:40:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239142AbiHDTkl (ORCPT ); Thu, 4 Aug 2022 15:40:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239243AbiHDTkc (ORCPT ); Thu, 4 Aug 2022 15:40:32 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1E95CE08 for ; Thu, 4 Aug 2022 12:40:30 -0700 (PDT) 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 274HbYB1001460 for ; Thu, 4 Aug 2022 19:40:29 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=R7juVH4yEheSRsOowttYdHOX2VGophursraQlbr6BPY=; b=ifWmM7o8gbIKB1mDq6sChGSPgIq8hWKWwR/jJTOP9hmgwyAb3JsX12rOlmexpuh1Pi6I 31597JG8dZxRU2yD798SyIgULr45zBxtcO9PntR43IpEeNQWEXGy1UQe5VJsHq0TTOgw UAbsRyO5ZqJzG77zi0s2zmN2FS0W4CHs7qCyxQM0jpgDXurjekKnriBnVN89jYpNMcRb sAVrv85gHrL3vU88ndqnR7jXCHQYuYPNzoJZr3DU0gyoINh+uzOew6Amovr4ktbxRXeL 7xxMPAeib5LE3OKxAjHsPqY+Icp3UYR+PSBYyYMrTnKJwlpyXvfL3SSjcExRpq6dD7H+ lA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmue2x31n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:29 +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 274JO4XG014188 for ; Thu, 4 Aug 2022 19:40:29 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34p7ev-6 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CZXi2Cp14UaRQQLBA/R1k+GsCh77FHrMmVFVaHHj1GXaIuCUDqGoa79xHmZo9R9/LrsOqG1L140GK0WtLwHmqATLLTe8bQWfK8LyvWDTkxoB5EzKsm8UC0y6pKddPoWqzWUZ2I019ZomYbAN8fu+2XEcSsCVhcWQyHXpYYpH+kZzP+SEji7QPVsE8JbfEEoCcM96KFs5qyXpfp1r8T/HUEJc6H9A5KiMtNkgUFqvAdJLb9x+0XT0uAG4dVitMauprGFduAOn5XSAK/U1rPl6QTh5oSPlaLexoLU2DNmWzXR5i1+d6ymt/9IsMZWf0871k4o4MhQBMlC//ykOV/2umw== 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=R7juVH4yEheSRsOowttYdHOX2VGophursraQlbr6BPY=; b=KnO7fjvhEXPvd811Yw9Wtkg+QGsCt3HZE08Rae6fvl/imt3kjv+CH27n5OTQ0Cqb6Vba60JqEFcsuqzFMwRDlzomyuTU/K3NKSrKaZLwTX++7X97w5cyumdm3YOjWwAPXSjnhgWXsPkeNVRZvJKM+nwc24a/mvUmYV3DVm28vESHuIMh4Zt31aKLQ3n+Ti3KNiKOVBLobNhKs1R5/Ud1DQTUVLplo4Qq0RsYbSB/nOHfXN52ofISvSZUmccRJ+LSIOw9l14d59WredUppALe9zx3pu8PsSPbFRxDMDaZqd+GdkDqPxOZYPnDktrxtU43rtnWZYBi6ZEaY7N60eieQQ== 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=R7juVH4yEheSRsOowttYdHOX2VGophursraQlbr6BPY=; b=VxgWm/iD+X8REkf30+Pb0IYwtWVl9uByFQ7NEhv/sQMDufO2yQDNtnl7jgBfe0w+K+7C65iQhnTlUn6JtsSNP8RpHC6G3vi2F2BoDemWcFji8FbjJE5h9REJet11cMjPN+pbJn0uaWwjXhrxl3qSLwlmYxQe28r8ZM6zufORZqE= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:28 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:28 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 14/18] xfs: remove parent pointers in unlink Date: Thu, 4 Aug 2022 12:40:09 -0700 Message-Id: <20220804194013.99237-15-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 82caa139-9874-4800-698d-08da76512de3 X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VS+A1dEzLWddQBbz/OnvnxBqksrRXuc9XdXHkcYNPKUzo3Sbmks2ai1G3+4V56XyJgD4wc4yJCrYgJmvIK6zsQL7d1zaSvz5C0fckLBE4JywqeGPZ/y78Egru3JgBtx93+pc6GpsbGD6wANsUXkF2vQNTgYcoGJAMebeF+D2TerZVtkpqFS+B2EcowhvkSVrY/6PB6E2+X0jyWP6/SilPduwNrPfLUtK2A1i3zEbGNIWsgQr3gAEe3HTt0mO75ld6Qsx7FPJgJM0RBTxLoxwbVLwn7+uBeFNcoBIkFWP09EWv7X0X5AQrv++2xNqbM/foyj+yr7hTa0aTOg/mqCnXuPTqJCZFuweJUDSdXZiHoONqhW3gNLaYxy9xWBHXMxvbTfopeg2BWT2wUmjkdi4CwJzHTn9rAYXKR8ZjLXCQkW/qpeSL7yuxqyoQ3zocblHTG7SMld3eDg30gJAI2oqABFLiH/+UCixVujO0SmCz6hPMLdGLGZMR5pjI8nAUsW3rXrT6xdN4ZM71RvBbJgPeB1+99hAONpzvNzSS7HGn4sSmObQuQaj+TUT10NwnlGzsb4+TtuRUUPx1DHRCrt25T59vQ2LqaCmzZDJdLxPObybdjgPN3Csk3arUnf6CnwR4YEnAMWGISExQeuif0K474QomjjZyB6wP1g276730AzEDUymm6kpXgEHc4PoPf/oawg4XvKzi+gC/UXUVPbHAXJ2p03MBipVd84HL+AHSXVRkQDKtQVipkBizPq+f6xKZX9ASy6o4TsK+KwhdeyQe0D52QHPVZoVzWeD2b8skzw= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Q7Di+ylSFurcsGDJAX9jgBrs9GXDDQWhD8UK4Jgk2KlV6ltWzoLvJeLWtYqX9KEmiaMYmK1TkeJHYGLFTsiqKyv3J+Cc9SOLs2MBY3suPrqdZ2D2RqbVqslgTll/3E8gqUH+NpeOfLs6da/5jUg29pHWLas+84+47XcFGUAQ4TPdDvlFlGYnwDMYfp3TzYXXJe3qznynSrDdyJvcDolV6EG/Xx7NwydwcWkgjkpU3mVlEImiNlecxN61uOYpy0R9Ypn7O6zEU1EgZQYbh4kFCZbObLgZ1ec6Jede9IAlDtQCOyHGhKhEpCPwefI/HLu8X0A8llUXdMo96L4AOjzv5PcQkjXXYn7oJPbed8a9X2tAN05dHvf8DC3Yo1fdyfmnV812j79Hb1qlB7o8T+c+aF+ltl0ek5z8o4Ou48PPQSzYNPfiwJwcAWMfBAK1ra733S5ggsi1QgJKKHm7hSHFu/KhaL705oVdMKjToujYKBiLo6BDL0DETkCPXsdORWjoPhUtq4v5Bbv3ogtlErd9ClnvHb8yxzEs++ZTpQm0zm8YBz1Nk5UB7FTIO08u/+sW7UmqRqlu7qVIjF9cV+kwt/0ylbCVUnYIWiIBFiSmfk+WXDiJBd6tlPlsLmlDh04LtFy1YiNp4hq9fwq68s0PMobLM+4cIRQrccFWPOuBXbqaEy2mH9jWAKsDQrECYP/a6kl3vruw8EcpPfXGr1/YEiM8ycLkyP7CXdlF4ckL4pYCQDm2ciZKmwhm+gHt0da4Qs0PpBGL4FmL6UtxNq5u341Ny3BNjI+d6q9oBJJ1LxYXbXHGm2VnxXHNS5rSsynNhLXPtQyiZq7exm/ITPWhrJoZLND3iw13Sqyg3sqHBiFPj1aYTlk5GrQ35FP5Qqs9Kls6F6AS6YcuQGun8ezRLaAS8kPQ0h4M6An2X59Xdiwhzs7i1rTb+awfSNMfTGn5WgdOKzglEK5imTLWSkNSkPNnjWkG9hRtNfz0X5QFOKFh74ytb1xI1kveMewIxjBpg2K3J4lZVm2t6TcNlxpueL+W2PnX3sst1/5xNtxKKUn4zD+gYLdwCFd+W4W4xU9bQjzVA65W07l/7pEBc4g4RIWCGbzzRhloXaF71NRQNJWw2pK+ysNh/nOhV5tMQS4LrZzYoHbX0uaVtktj6BwxNCCP1qCn2ZDLHHFRxUd6AkiInQJLEYDU1CXWC7e6jPufawcDkc60jQSsH5oXCNwZSZ8m1MbPpgM2CbONCHp6Tj0WG1TEwLB1hqv6L8Ml70C42FQixuC/vrHDb+/QSlzIl5uXlk6Tc5O+VegQ9t7rWRd6yQaOyVgRXDq4Ey1eqkvXtHeYZDcw5eLgLXSihiwG+3uWoad8SQf3EYd22utlADhhPRiuqbz9lIlkdvo7qEs/S7+t/UwWsyXA8pPdZumxa6LSjsMW3gp2Hhb/MYA83LIh5X2xl5tsZZa+aqW5wXu6Dnlh2QEnNEZylMJY6WvnsXsjyJensmabH+Hcoo7vujQnQKhjZqhRDJyHhSRG7Gp5pNdNCigklyyDS09WdrbQTss9JkypHs7bgLddPSmPued+AGzak2ckQ1XEcKnYbj8dxc4MoYDTXRGkKKwI3BDKJw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82caa139-9874-4800-698d-08da76512de3 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:26.2685 (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: Xf27BG0ZuQGcvUywZdKflgB2VIURz7kxJO2+whKvS6x1ig7QfwkULQmtLlebx1YqoV1IFwWfYs7pn7FvZhOLRdJ46smEB21LdgyF6PSgxvE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 mlxlogscore=999 phishscore=0 malwarescore=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: KdbrL7tzSPiSbuofQ4dwP4DVeFiL-0_i X-Proofpoint-GUID: KdbrL7tzSPiSbuofQ4dwP4DVeFiL-0_i Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This patch removes the parent pointer attribute during unlink [bfoster: rebase, use VFS inode generation] [achender: rebased, changed __unint32_t to xfs_dir2_dataptr_t implemented xfs_attr_remove_parent] Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson --- fs/xfs/libxfs/xfs_attr.c | 2 +- fs/xfs/libxfs/xfs_attr.h | 1 + fs/xfs/libxfs/xfs_parent.c | 15 +++++++++++++++ fs/xfs/libxfs/xfs_parent.h | 3 +++ fs/xfs/xfs_inode.c | 29 +++++++++++++++++++++++------ 5 files changed, 43 insertions(+), 7 deletions(-) diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index 0a458ea7051f..77513ff7e1ec 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c @@ -936,7 +936,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/fs/xfs/libxfs/xfs_attr.h b/fs/xfs/libxfs/xfs_attr.h index b47417b5172f..2e11e5e83941 100644 --- a/fs/xfs/libxfs/xfs_attr.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_parent.c b/fs/xfs/libxfs/xfs_parent.c index 4ab531c77d7d..03f03f731d02 100644 --- a/fs/xfs/libxfs/xfs_parent.c +++ b/fs/xfs/libxfs/xfs_parent.c @@ -123,6 +123,21 @@ xfs_parent_defer_add( return xfs_attr_defer_add(args); } +int +xfs_parent_defer_remove( + struct xfs_trans *tp, + struct xfs_inode *ip, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset) +{ + struct xfs_da_args *args = &parent->args; + + xfs_init_parent_name_rec(&parent->rec, ip, diroffset); + args->trans = tp; + 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/fs/xfs/libxfs/xfs_parent.h b/fs/xfs/libxfs/xfs_parent.h index 21a350b97ed5..67948f4b3834 100644 --- a/fs/xfs/libxfs/xfs_parent.h +++ b/fs/xfs/libxfs/xfs_parent.h @@ -29,6 +29,9 @@ int xfs_parent_init(xfs_mount_t *mp, xfs_inode_t *ip, int xfs_parent_defer_add(struct xfs_trans *tp, struct xfs_inode *ip, struct xfs_parent_defer *parent, xfs_dir2_dataptr_t diroffset); +int xfs_parent_defer_remove(struct xfs_trans *tp, struct xfs_inode *ip, + struct xfs_parent_defer *parent, + xfs_dir2_dataptr_t diroffset); void xfs_parent_cancel(xfs_mount_t *mp, struct xfs_parent_defer *parent); #endif /* __XFS_PARENT_H__ */ diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 6e5deb0d42c4..69bb67f2a252 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2464,16 +2464,18 @@ xfs_iunpin_wait( */ int xfs_remove( - xfs_inode_t *dp, + struct xfs_inode *dp, struct xfs_name *name, - xfs_inode_t *ip) + struct xfs_inode *ip) { - xfs_mount_t *mp = dp->i_mount; - xfs_trans_t *tp = NULL; + struct xfs_mount *mp = dp->i_mount; + struct xfs_trans *tp = NULL; int is_dir = S_ISDIR(VFS_I(ip)->i_mode); int dontcare; int error = 0; uint resblks; + xfs_dir2_dataptr_t dir_offset; + struct xfs_parent_defer *parent = NULL; trace_xfs_remove(dp, name); @@ -2488,6 +2490,12 @@ xfs_remove( if (error) goto std_return; + if (xfs_has_parent(mp)) { + error = xfs_parent_init(mp, ip, NULL, &parent); + if (error) + goto std_return; + } + /* * We try to get the real space reservation first, allowing for * directory btree deletion(s) implying possible bmap insert(s). If we @@ -2504,7 +2512,7 @@ xfs_remove( &tp, &dontcare); if (error) { ASSERT(error != -ENOSPC); - goto std_return; + goto drop_incompat; } /* @@ -2558,12 +2566,18 @@ xfs_remove( if (error) goto out_trans_cancel; - error = xfs_dir_removename(tp, dp, name, ip->i_ino, resblks, NULL); + error = xfs_dir_removename(tp, dp, name, ip->i_ino, resblks, &dir_offset); if (error) { ASSERT(error != -ENOENT); goto out_trans_cancel; } + if (xfs_has_parent(mp)) { + error = xfs_parent_defer_remove(tp, dp, parent, dir_offset); + if (error) + goto out_trans_cancel; + } + /* * If this is a synchronous mount, make sure that the * remove transaction goes to disk before returning to @@ -2588,6 +2602,9 @@ xfs_remove( out_unlock: xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_iunlock(dp, XFS_ILOCK_EXCL); + drop_incompat: + if (parent) + xfs_parent_cancel(mp, parent); std_return: return error; } From patchwork Thu Aug 4 19:40: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: 12936652 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 62BE2C25B06 for ; Thu, 4 Aug 2022 19:40:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239405AbiHDTkn (ORCPT ); Thu, 4 Aug 2022 15:40:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239263AbiHDTkd (ORCPT ); Thu, 4 Aug 2022 15:40:33 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA17ED12C for ; Thu, 4 Aug 2022 12:40:31 -0700 (PDT) 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 274HbaaV013546 for ; Thu, 4 Aug 2022 19:40:31 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=s/pR0C/jiCpALnJA1EEzWUFgLfLKq77vi/3k1uKv564=; b=Zo0B5LScXdSN1kfCy3e4m0KwvOgjErlLzPcjVMmLMUwZLIgoMuwDziMqMyG0TvKjLip5 plT4WT5hYrGfHK8+pwvnuglkNo5SU3Lnezzae4KNCZRpPUJLLLJGsVtWDS1PFn23tpNu E6hj4axd7O5xiy4w5n/yiL+Qd7Fz6djVn8TaGnmn1Vc9kggrVMAyGTaBMIN+nRlPlNB4 x0qfQWUwRUyRJsba3jMFROG7BVOYmyBRJUgfojT5VhqpZfybDKvXWW86DvSb2XtuqZ6S W3aonnohOOiA5pgwqL1G/tJfXQZ7Afc28tQPZQf8Lllkz439ekdzAFAa3XfDR+tBSVeG aQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmw6tnyd4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:31 +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 274HjGDW007532 for ; Thu, 4 Aug 2022 19:40:30 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2174.outbound.protection.outlook.com [104.47.59.174]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34b95d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LcsNT+YTmd2Hd4vS1Mr1MH67ZtVABkqY7GPAESJhC6LmjMDVqGnY6jNXs2RsaNf+VL0KgWcgtxacsyINanXNx6t8xWSj3doZyWODnIc7ZvEASkLYenGLcsfx4HFtV2YdX//+lMm/9uOszBkWEzo9fnW2fyCI1npJA7yP2In+ah8fxVFm3J1tq8LwJM6HTQpNsQzN4ZtFcPxbjAJQRWEZX2KozHOVrE870GoHnW+7SYxY5IodjKkMHD+TMLqqDbtOMPMm7CemOmD+hi/yL+owekvjBx27YxBlXrBxkJuPgS4nhrnzbY0wnLspSrAGtnPN6/jnALkZ5h4gDWN8h37Ypw== 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=s/pR0C/jiCpALnJA1EEzWUFgLfLKq77vi/3k1uKv564=; b=FxVm2+jzilCKgcATl1K9d576j98x7UfDEZvbi9Wms2ubQfnm9BA3OQjwvMfeHb8kpKkG2g4ma+2Vjj5t40MgJdCelizC+z+93D9LvNYe63zcZvy5ms+jdyI6Fz2NwPoNRs3vfb28XHh1dlf20iOJzG0nVHTGzFOJU/yQ3eTuTJ7Nj1RR/OR9oZStnVtVf7zINvHf71MYS1As5ahsF2qH55Vc/hPgAsYOMb7bnryqOCBGBLnY40QwnyFvLGKPn1KpaGcEwIgkTYxsE/mRwZkpv6JjYVHvhpXIhnq2Ko4gE4sAZshhzSrVt1xv6itk1ZG+205tZcC5ssWmswTfBOnrgw== 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=s/pR0C/jiCpALnJA1EEzWUFgLfLKq77vi/3k1uKv564=; b=Lt1EJkLvI4Hmf69aWgnIROz8yZw2sNw1CCrP1e71rxBNNB66X+QeoD9BmnKS9F+CZm0Yqtc+gufkWXKt4IGklZTWzY8JIxvxdMD5DcokSNSc+HEfugYQA7+02LZ5WhXwfNUBv0gLoJxl92Ur7FvMmWMnifEewCsCDGFdY4RD8Mo= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB5136.namprd10.prod.outlook.com (2603:10b6:5:38d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.14; Thu, 4 Aug 2022 19:40:28 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:28 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 15/18] xfs: Add parent pointers to rename Date: Thu, 4 Aug 2022 12:40:10 -0700 Message-Id: <20220804194013.99237-16-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7c94f657-40d3-4c41-8a87-08da76512e28 X-MS-TrafficTypeDiagnostic: DS7PR10MB5136:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qzJMSZGRQERsLLlZMzB3CjGnwL5pORXUVocenwv0ASI9M0XmHjEfDumfrZIHcPuZ9ztX6s5BPnWXEkHCXe31Ti4VfuNab6D/OhwXcSa+Csh1jpb22hcLnED1TC+U9+n5ZMS4HZfwVL5iBdC24RVnqVbul4h0PD9iL83Dxbd1HXwKEbytP6GRci0ZFJCsEvRKumtZ+N3W0p+XZ4HIdusDkbZqEdMz8UYlgbqUPoxvVwSg+KzuOBz2HnMoG7Vy5xcFv9HGWXYCWew1lGYvIxIEsuekiRx6YWz9qdG0dVMb1NvU4FPphfkRGKE2gLEWQr2WQnYsjVfx5nQ/PoLRcYvFX746FSxvenPwqbp4iK2J7peSMjJWd/jqKGEeBOEXn2np8WgsCZjOyI8mHSpbxYVbfvcnweqh633SHXkduoy46vDu8SIwNmNdGMHY0+4UEAf50Q9HkJelgu22wFjcOY3jdAfi64u59HUmG1O0zK0k91EZypAzArQHS4OGUct5ll2TF8hWU47jI5l0+7GALWH9siLILuZ9GTCsFVeCVST2Vg/hT2LtJDcvIA5mmuTMDoBqQe4gn6riYsY8VXt82Zn7ldn1iY4/JnSU+xCMkWrJb9do3SV1Y8ur0nTqQSfovvlLq3OL+9eBVUMkfsC/fWoWJX+qHgJSD0HovE/KXsTkNDOvm/pC3FyqsiELz+NxF2FbKR17jD1rMSwWomLsn/uySJJSZTjWMJNgB6UCo/zDwVJjOPwvKRscjHKhF5J/Go+xnrw+rAQhS8kz7zfduzoZZwsZ370NxcBRNv1C6ySJB+I= 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:(13230016)(396003)(346002)(136003)(39860400002)(366004)(376002)(6486002)(66946007)(66556008)(316002)(8936002)(6916009)(478600001)(38100700002)(44832011)(66476007)(5660300002)(8676002)(36756003)(52116002)(6512007)(1076003)(6506007)(26005)(186003)(2906002)(2616005)(41300700001)(6666004)(83380400001)(38350700002)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /o1ZAqXDVZ567JqJIUlgUxIXYmRiLSqvGdMMdEc/WgyIHKCsJ3/y7+ucLtI04QFlpLIyV7yLy5HNJ89k6uloHI701lyAcW+yYCOzgDGrq2iuHg+XNYgbcNLraBn4jy1DQkNLkMKr1sC8CKnhaQMZBLBhHwk4BePmCAbCHTRlt7lti7+wUK+6kJa2AwKi2OenAWYmEpag7iklN1dU6Dw7Nds6L+QyI5+jjPX5ImM8C+/Tp2SWjyrOYqFOKmnCWCnU+WmVVC5IOUNYZ2CFAW1g+uO9wxJDhD/ozUY+XaMhQoeJ7M7Z5EcPYW8/ypXLMNunzMkd7bRnjjhdfsvzgigBVj6CE8GHHODsmkNKJV++yUL/dNk2/BmZw5D3ORBEG5fhnizwWc1PGmYx7vzKiHrf1Pm4QQERa2J78SGpodl3G7+hXUJREoM6PGW/ZPHaYn6TU2SCTHym5m93xqDAMuOWaNK9eCoX+X/NXicoWZ5h6tZaHnjqCtQT7PZzgeZs8PjB605BpTLjUA2sQJshXVkVTbdfaE8kal4PV2191jWWUnEFf+u80XlGD22EEqPGMDMjMEYzYkGdS5G42J/2OX+lkU7KMZ879FYl7ESTIsLyNhtuG3IOmwEPTgs086O4YTq21ckGTolj8wkarETFEKqrXHFKgPBK+xMKX6Iv9EXLXCrWXZrWaXxcO+IXVs+J+7qj06LtfbTnwvNiKKY9i3fakTB7seNc6jjs/7J60Qi9SIhrgAj8rvJfknd+zRGB9i62R7LLgkeIhKBP3RIMGWtDstHsPkQ4wCXLkzVwT+Q9O9SN776iS54UogK6CUA/yVgAuMUhDsUeCFvdRn5HCBmjvwVU6/O488ccEd5ej9PuuXLobw1GxQ2Lv1pRdhzoNgrPB9ozZtaANhCcaYqBa29quDDbyTues3TrQj0XIrowxmaJ5Z/oqo/0W8SxeT8vo4JWHMYRUnTUiW36ijadRISin+cvPapa/4sMxoLWSeTIVDB4n06lCe4MZSI9zpS+6rSLTMczhDHnhSYn1+dPW+/GETIkzlFq/+6iRHNE5hJa4ZDIga6g1pD9wuvqkiP+Jon7NbeVk1GDiZGWn61e0hfcitaAcHiNSjAHdMzS9YxecWv9xUuJk+MXkwFqJRvWqcHp/Z0wFOgyiQkUOun1AAHaezyMiAFI2rkRzecCnpEqA+An6uRpslX+xi0AsuiFlC3ivj/bXLYOFIos3nAkefz4dQ+PQ5JH7WHEqWFEaltvqtyVPnvvVdYCOEzrTxhqEVhwS9W1ShQAnsjncOwuL9uaJBIiE7/L87QoONHG0cihanLbbi3MS+L+EK3X8e+B5IhtxmXYAVA6Y7lXxSl9vm/WsDEOOkEnP1tqeh1YsQYIZRIdXu4InXatxHdpdDvMvKte9e8z6qNC5MBAN2YJVOalo1Prczrd/zKeBDRQh2Ur7/eSjUKp3JCZMvxEGT0+VZWR+jhol3jIrw3unPP/oXVbwO8hJanPf10QQymollEBzvoWbTY7zaoAtMOmcxP7baSdTNeNFlb6lx7Eq4gKqPy8SdlF0VtNXyQt0c98K+UNGKNVkm7m/IuaXmSS5HkyAqqj3HAG2/tOy2g+0wQ225JCqw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c94f657-40d3-4c41-8a87-08da76512e28 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:26.6433 (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: ihW8F359ieJGY+5xcqZlc6inqkG3MDmKFaz5ujpjWXlcyn3lfiQWSpkTZR5J8Knr5NCmVzAx58O7I+PDEJLtWq5/R0URp85mvMojap/66zo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB5136 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxscore=0 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: QUysEYisgkc08CQlyI_03In_T8Kbo-XD X-Proofpoint-ORIG-GUID: QUysEYisgkc08CQlyI_03In_T8Kbo-XD Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org 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. Signed-off-by: Allison Henderson --- fs/xfs/xfs_inode.c | 128 +++++++++++++++++++++++++++++++++------------ 1 file changed, 94 insertions(+), 34 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 69bb67f2a252..8a81b78b6dd7 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -2776,7 +2776,7 @@ xfs_cross_rename( } xfs_trans_ichgtime(tp, dp1, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); xfs_trans_log_inode(tp, dp1, XFS_ILOG_CORE); - return xfs_finish_rename(tp); + return 0; out_trans_abort: xfs_trans_cancel(tp); @@ -2834,26 +2834,31 @@ xfs_rename_alloc_whiteout( */ int xfs_rename( - struct user_namespace *mnt_userns, - struct xfs_inode *src_dp, - struct xfs_name *src_name, - struct xfs_inode *src_ip, - struct xfs_inode *target_dp, - struct xfs_name *target_name, - struct xfs_inode *target_ip, - unsigned int flags) + struct user_namespace *mnt_userns, + struct xfs_inode *src_dp, + struct xfs_name *src_name, + struct xfs_inode *src_ip, + struct xfs_inode *target_dp, + struct xfs_name *target_name, + struct xfs_inode *target_ip, + unsigned int flags) { - struct xfs_mount *mp = src_dp->i_mount; - struct xfs_trans *tp; - struct xfs_inode *wip = NULL; /* whiteout inode */ - struct xfs_inode *inodes[__XFS_SORT_INODES]; - int i; - int num_inodes = __XFS_SORT_INODES; - bool new_parent = (src_dp != target_dp); - bool src_is_directory = S_ISDIR(VFS_I(src_ip)->i_mode); - int spaceres; - bool retried = false; - int error, nospace_error = 0; + struct xfs_mount *mp = src_dp->i_mount; + struct xfs_trans *tp; + struct xfs_inode *wip = NULL; /* whiteout inode */ + struct xfs_inode *inodes[__XFS_SORT_INODES]; + int i; + int num_inodes = __XFS_SORT_INODES; + bool new_parent = (src_dp != target_dp); + bool src_is_directory = S_ISDIR(VFS_I(src_ip)->i_mode); + int spaceres; + bool retried = false; + int error, nospace_error = 0; + xfs_dir2_dataptr_t new_diroffset; + xfs_dir2_dataptr_t old_diroffset; + struct xfs_parent_defer *old_parent_ptr = NULL; + struct xfs_parent_defer *new_parent_ptr = NULL; + struct xfs_parent_defer *target_parent_ptr = NULL; trace_xfs_rename(src_dp, target_dp, src_name, target_name); @@ -2877,6 +2882,15 @@ xfs_rename( xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, wip, inodes, &num_inodes); + if (xfs_has_parent(mp)) { + error = xfs_parent_init(mp, src_ip, NULL, &old_parent_ptr); + if (error) + goto out_release_wip; + error = xfs_parent_init(mp, src_ip, target_name, + &new_parent_ptr); + if (error) + goto out_release_wip; + } retry: nospace_error = 0; @@ -2889,7 +2903,7 @@ xfs_rename( &tp); } if (error) - goto out_release_wip; + goto drop_incompat; /* * Attach the dquots to the inodes @@ -2911,14 +2925,14 @@ xfs_rename( * we can rely on either trans_commit or trans_cancel to unlock * them. */ - xfs_trans_ijoin(tp, src_dp, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, src_dp, 0); if (new_parent) - xfs_trans_ijoin(tp, target_dp, XFS_ILOCK_EXCL); - xfs_trans_ijoin(tp, src_ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, target_dp, 0); + xfs_trans_ijoin(tp, src_ip, 0); if (target_ip) - xfs_trans_ijoin(tp, target_ip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, target_ip, 0); if (wip) - xfs_trans_ijoin(tp, wip, XFS_ILOCK_EXCL); + xfs_trans_ijoin(tp, wip, 0); /* * If we are using project inheritance, we only allow renames @@ -2928,15 +2942,16 @@ xfs_rename( if (unlikely((target_dp->i_diflags & XFS_DIFLAG_PROJINHERIT) && target_dp->i_projid != src_ip->i_projid)) { error = -EXDEV; - goto out_trans_cancel; + goto out_unlock; } /* RENAME_EXCHANGE is unique from here on. */ - if (flags & RENAME_EXCHANGE) - return xfs_cross_rename(tp, src_dp, src_name, src_ip, + if (flags & RENAME_EXCHANGE) { + error = xfs_cross_rename(tp, src_dp, src_name, src_ip, target_dp, target_name, target_ip, spaceres); - + goto out_pptr; + } /* * Try to reserve quota to handle an expansion of the target directory. * We'll allow the rename to continue in reservationless mode if we hit @@ -3052,7 +3067,7 @@ xfs_rename( * to account for the ".." reference from the new entry. */ error = xfs_dir_createname(tp, target_dp, target_name, - src_ip->i_ino, spaceres, NULL); + src_ip->i_ino, spaceres, &new_diroffset); if (error) goto out_trans_cancel; @@ -3073,10 +3088,14 @@ xfs_rename( * name at the destination directory, remove it first. */ error = xfs_dir_replace(tp, target_dp, target_name, - src_ip->i_ino, spaceres, NULL); + src_ip->i_ino, spaceres, &new_diroffset); if (error) goto out_trans_cancel; + if (xfs_has_parent(mp)) + error = xfs_parent_init(mp, target_ip, NULL, + &target_parent_ptr); + xfs_trans_ichgtime(tp, target_dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); @@ -3146,26 +3165,67 @@ xfs_rename( */ if (wip) error = xfs_dir_replace(tp, src_dp, src_name, wip->i_ino, - spaceres, NULL); + spaceres, &old_diroffset); else error = xfs_dir_removename(tp, src_dp, src_name, src_ip->i_ino, - spaceres, NULL); + spaceres, &old_diroffset); if (error) goto out_trans_cancel; +out_pptr: + if (new_parent_ptr) { + error = xfs_parent_defer_add(tp, target_dp, new_parent_ptr, + new_diroffset); + if (error) + goto out_trans_cancel; + } + + if (old_parent_ptr) { + error = xfs_parent_defer_remove(tp, src_dp, old_parent_ptr, + old_diroffset); + if (error) + goto out_trans_cancel; + } + + if (target_parent_ptr) { + error = xfs_parent_defer_remove(tp, target_dp, + target_parent_ptr, + new_diroffset); + if (error) + goto out_trans_cancel; + } + xfs_trans_ichgtime(tp, src_dp, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); xfs_trans_log_inode(tp, src_dp, XFS_ILOG_CORE); if (new_parent) xfs_trans_log_inode(tp, target_dp, XFS_ILOG_CORE); error = xfs_finish_rename(tp); + +out_unlock: if (wip) xfs_irele(wip); + if (wip) + xfs_iunlock(wip, XFS_ILOCK_EXCL); + if (target_ip) + xfs_iunlock(target_ip, XFS_ILOCK_EXCL); + xfs_iunlock(src_ip, XFS_ILOCK_EXCL); + if (new_parent) + xfs_iunlock(target_dp, XFS_ILOCK_EXCL); + xfs_iunlock(src_dp, XFS_ILOCK_EXCL); + return error; out_trans_cancel: xfs_trans_cancel(tp); +drop_incompat: + if (new_parent_ptr) + xfs_parent_cancel(mp, new_parent_ptr); + if (old_parent_ptr) + xfs_parent_cancel(mp, old_parent_ptr); + if (target_parent_ptr) + xfs_parent_cancel(mp, target_parent_ptr); out_release_wip: if (wip) xfs_irele(wip); From patchwork Thu Aug 4 19:40: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: 12936655 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 47BD3C25B08 for ; Thu, 4 Aug 2022 19:40:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237792AbiHDTkr (ORCPT ); Thu, 4 Aug 2022 15:40:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232813AbiHDTkf (ORCPT ); Thu, 4 Aug 2022 15:40:35 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07DF911827 for ; Thu, 4 Aug 2022 12:40:34 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 274HbggU018626 for ; Thu, 4 Aug 2022 19:40:33 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=FxTCf1NND+bkYSwaypWn7co4/i9UK2kB4unz5Fn49rM=; b=cUmhoSHs2McmctnXu5/YkxMz5Iuk36pWVq/LcwfxIqDxqVn9gD5k53cJHuV/F1orvjY7 6DcxnL1oOCGJMZKClSJz0n9YDWIV06eqUA2plPn6U5Bz9VGm4V1c2fAFLdNWlUHpXPOg Rbh7EiIobX/Z2ty5U/jT/NpT84DItvX06CzVOKz/spy8o77Sfx2BF6aJR5Y7vUJGtZHl O3vpH0+1U317IzOZJB7RMEQcJH8ED/OIqCVFaJ+FsWUOe5JJZx6eUhzBW8YzDRzmR6gN fgt0wGwHfDlxcR4xtyNtYDYOfSgJlWTXtrt2RJdj8bH1usalNgMTed0ETsz2GP534/G8 Lw== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmvh9wmyk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:33 +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 274J7Jnn030850 for ; Thu, 4 Aug 2022 19:40:32 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2102.outbound.protection.outlook.com [104.47.55.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34mm40-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gP95uHFtB/Meh9BbvXRHLSHsHfRT200wFRbf+OWhRZ4MTjairDqWjvG8LY/c8k6aLdBVN4sVoTS6mFh7Si5NK2feBeeX5Kxd6mN2PDHx1PBs3ZvrACGIETrNjBVhuF2wtPK+Z3MD/PQG7hEdAV/PtzLPQ5mrv2DzDb1dGYFYefRwN9Jk2Rw/nOTPAtbVYPMHUvIdRslQUlKLfvFY2TK6QZ7kqh3MiQPe75RskknJh+jojhXIhr54ErJL1KbBoMFW+7KaeEzcqYPRfyIEoW2DDoCp8/2IGv2FD/0TcfgGhGkPB6lkJxBOI8apqCQvb4/X5BBluzUpK/CiI/hoYCYlLw== 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=FxTCf1NND+bkYSwaypWn7co4/i9UK2kB4unz5Fn49rM=; b=KWB9PlOP0X6pZi+MzQGb1D8A3i2HxF9pjd5Y03Z9JLE91AgcFEVVoCSm+jNwl47i/UVQyefnLo5POHsQXGOqxISiw82GvlfSdxw4+KUje8xvYRdcLAtxNqjGIiwb2GvgEFpkqxM2nNJvdKaF8+BELJuueQQIKmu6/FPAYFvNQbvB424/LyvCEqxw/0fhq7j2Jow1Jf2gJEeTM+kNRUuHm0EAmvss5PkmZ/llgFLjwHiQd34xcf8XncbIc6xxykzMIfu45IaGwB0fgHhEp3wS/PTZ6C5K5jIhz5HiTebzkenD5tsYSMagInIeJoCl8YLMU9HMUpnfulKNUkpetZxgBA== 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=FxTCf1NND+bkYSwaypWn7co4/i9UK2kB4unz5Fn49rM=; b=HHhWkLpi+qANo6j+mRbeT7JcLjLFu76TAYhfrzj6IadqoaG+j7FXRFSshEVgOoPxeGs42+hBwAkP9Ryyaxqb3AWvPxl0G9AcSQSHq9SxQKZpG/8YBT0Dq+f0x6jVeACL0vNlBNfCQQNQUFHVF3gMHg6N2FKJXYBJ8XTQ+2szf/A= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by BLAPR10MB5011.namprd10.prod.outlook.com (2603:10b6:208:333::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.15; Thu, 4 Aug 2022 19:40:29 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:29 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 16/18] xfs: Add the parent pointer support to the superblock version 5. Date: Thu, 4 Aug 2022 12:40:11 -0700 Message-Id: <20220804194013.99237-17-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a96c00dc-9f92-4949-10b0-08da76512e51 X-MS-TrafficTypeDiagnostic: BLAPR10MB5011:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: sVwHOH62MSTKvkJt5udE9xWaDI2ZvnG5Z4T3KvgbOUwBtfygrbBcD9sWc9YcJzz03nx10zut/0JDmJZLoMIrGfZlyK3PM/fJMUEsPafoQluCeV3o9oRoFMHOz5Ee3MV0OQNg0LOEPmXWIID7e8bksoh2RJ1UDJNm8AptEoULDnaxIcLV9SCw//kVSmSD77T3w09ZeHXgbtty51zrPa6BJZo7MXmvNHZLhY4LxZjZqif+g/aqEdNgZGQuP/zuGQ52BZ7h7du77m+GNxIap45k96jEVqeB0yTNspqnEHO/PuIGKX7Ewy5pZzLqe2xM3jWKJSWxVIbYH0HRfnr1lRUPwWNj7kzHoIPzM2Ln5IuX2f7UgS9Ye3x/d5nRJckftoo7Hj4yW+d+39H1DDMYloL05WpcACdH509fKxeJY54D6ocNFnhrb7qbjfA9YXqbZRelzjMs0oVGlcfqNO0q85lA09PzVxsHcglWh3NkaYpOjzodqFPPD4AOVI/AQe5CTF7b94fYDHUUwgvdsXN17nJ//L7grNlRdhgh5BbxJCwthtbEq3nfDC7kJvFyz8wEGAGpZnWawgpcnSwh0zC8NvD4VrVIR9PnC9BPcIP7okDesgq/wH2NYP2WbpWlkw/+AZ9zPNyGvakoEqEcBG6+r79nUEV8XJRydBLCUXKgc4NyXJNjeovbgh5sJg8SpKKufA4aHexEjCu2TSe0RJLxQpIYFPexJkjNxwY1wS6TeRKUt5CUvlLpqDiq7Fx1pF1K8U4pbemyh6qdfsyZRdbCCKrR74VuVTevLszPiGLg3HTZAUY= 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:(13230016)(39860400002)(366004)(396003)(136003)(346002)(376002)(6666004)(41300700001)(478600001)(6506007)(52116002)(6486002)(6512007)(26005)(44832011)(2906002)(36756003)(86362001)(6916009)(316002)(1076003)(38100700002)(38350700002)(8936002)(66946007)(5660300002)(66556008)(8676002)(66476007)(186003)(2616005)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: q++3/rqYQZKfepwfvImKSPcpEIGgf3bu9Z/no/yQA0NGrdVlWc7eOuQbpHYLMO2rkbCKCzfY/RO8e9rKGv9OX58P4viuRgqLWvFIoW0iSYSeDsxDHiECkCmBz9M7Fd6FBqL5qqEqrOR/w6EfnbL4/eawzf9apO4t+7Chrjn+CjiwOztjOjeu7yNpYbfIV7itsgAe6OmIqi/Bs/Q6I0vCiZRCMkWt29LId9Fmbas107xDNEqofJiSLjq5bJ/ucrSl4X7HYMFAZQpRWj8FlECuiAcFhbSiGQ+5Xy13F6dZwaNJKh8l7WM6JRIgjNrsSP52cDrVd7GokvlChFBGA4Jo2DZw9XxRjyjq8swJhFanqO/B+i9nQSuPTIhRcJVD8ax4bJWkMGw8UlhR8WaDvhjU8SSv/EkcxEW1zSiFGS39KwhGLUiXUetc9RgHN+OeGCgQeT9IODe/7GgNrUt7lpcJE8oVp7b8vdkrxiWB28ADWpqHS7x3Aq7c5iFJjRvwh+DjnjDMBgym+fIfsOfPJQyHIBgWyri3E2uerj5QdXkh1ZKWw0zgG1jOXSjUhePC0Cx9/O6MPtvgPSavo8CtDplCEgXsWDyXkXYyiVwMQ+7ixjk1pWWW1di9u46cX8fvRlY9OHYoKkT4oRpXRHiSk/4T7Ogcz1we4q2/7kzuQQfhZH1QBsbNCdLkdR/a7wUJGEIrQlnkctabN9dIDG01XFLT5cy3HpGEbmMPsfKqJMMbeJnnJChhG6HxPuAGF2zOWLJ54UXEC90Fo25ifrPCAjOeeC4XfqeOLIW5U2/Bu9cMA8rd5IMoboJTxszOVGjP+r014ThmeKBFSiBXlgIsiPUMDghj4UJopK8igWKqUvziv9L97/KXX25qjRONDBqf2lEwpciBhEHqspkjBOt9G+FKWEwQj2DX6zL7MzwkwjktTs2l2kVRRN7ivWGR0482l1zZKvYU2no0i0xErvVSsuWbFybzYAYxZcCafOBjeFC/pimXjBmnJJ/S3B7NLnEDqDwnw5DNyFD/N3UYTW61IFnNPYCabD4K6TF+fu2+5v7E/+r9ZI/lo5qiwTY4mxhLPYd8U8UUF3iOvkdjbE/QAhApaeuf9qtGyAhdU3afpiWDkZU8fiosabNAnV9RK6GsgqF35LuyBotOE2zcmDWsmwECzXP1G9NjbDjiatX70KrdQjkocK5EzI7nYaU5DIGRtaqGw8zMwfhxrjtrd3eKbYVDMxwtvyjsrR3yDT7cI6wD/shidApzSs24bwCd5APaXnjOlvEME1wXFYvQGnya1/hXmh6nWylp4YA+BcP0IpURbiR4fTdO6ICXbEjwA+pKqqbV6Vw1d3gOQK65A4lCcG0zs3PfP7y3Bc7pYDsMH+JBZXnpgKRq5w5ZQW3yURwgCVxGZHpA+yT3RE8myryXfg6Mzv4TAhhSkPo/xw9XnVGABWv/AlKdnLValA5iAJbBYv2eBfVi7cT4ktFWVX4RyZ6K/cGWG41AxQFR7pMVst33uvwoeKm+p1Gz5H2Mipg+nmDemmvEnBSy+l05Z9nX05iPWJl+E+H++KRlR3v3qEH0DlM5ku9eJb3ogGYotZLOQRwOwkbGeYw5DezFsoMt8ELgvw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a96c00dc-9f92-4949-10b0-08da76512e51 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:26.8933 (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: hwK4/JlfeJNS+YNsOJ5bQY+OgffJyBFOYFG36+Shue0sV0ZO+sNUaz1SR53dSBF85Vn2JlgJMmaADb5Ewr5cFVNlktZqkc4awZybJXmGA0Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5011 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: DW5EdxDiXKOsWKq2ZOyEA1bVTQiGg_by X-Proofpoint-GUID: DW5EdxDiXKOsWKq2ZOyEA1bVTQiGg_by Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org [dchinner: forward ported and cleaned up] [achender: rebased and added parent pointer attribute to compatible attributes mask] Signed-off-by: Mark Tinguely Signed-off-by: Dave Chinner Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/libxfs/xfs_format.h | 4 +++- fs/xfs/libxfs/xfs_fs.h | 1 + fs/xfs/libxfs/xfs_sb.c | 4 ++++ fs/xfs/xfs_super.c | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h index b55bdfa9c8a8..0343f8586be3 100644 --- a/fs/xfs/libxfs/xfs_format.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_fs.h b/fs/xfs/libxfs/xfs_fs.h index 1cfd5bc6520a..b0b4d7a3aa15 100644 --- a/fs/xfs/libxfs/xfs_fs.h +++ b/fs/xfs/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/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c index a20cade590e9..75e893e93629 100644 --- a/fs/xfs/libxfs/xfs_sb.c +++ b/fs/xfs/libxfs/xfs_sb.c @@ -173,6 +173,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; } @@ -1187,6 +1189,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; diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 3d27ba1295c9..eaa2bb63621b 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1655,6 +1655,10 @@ xfs_fs_fill_super( xfs_warn(mp, "EXPERIMENTAL Large extent counts feature in use. Use at your own risk!"); + if (xfs_has_parent(mp)) + xfs_alert(mp, + "EXPERIMENTAL parent pointer feature enabled. Use at your own risk!"); + error = xfs_mountfs(mp); if (error) goto out_filestream_unmount; From patchwork Thu Aug 4 19:40: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: 12936654 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 A4152C19F21 for ; Thu, 4 Aug 2022 19:40:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237363AbiHDTkq (ORCPT ); Thu, 4 Aug 2022 15:40:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238778AbiHDTkf (ORCPT ); Thu, 4 Aug 2022 15:40:35 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 28B1F12628 for ; Thu, 4 Aug 2022 12:40:34 -0700 (PDT) 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 274HbVvn001430 for ; Thu, 4 Aug 2022 19:40:33 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=Q1GgKi/zi77NXRJC/Ns/LZICDR4IYWS8LaobQuzV9W8=; b=BvJKkRXO7n6dZLMPf+56zdFkAW3OnyKAIWsEbiqVKHHMBHEs6DgFS+IWU2Mb5wdtVZCv BJOzi2F4Ti0mwb3FvI8ST79NFwrW9mEtH0rtDN/NcoGHKGfhl27yG4uDk67UbuHDslg8 6WhpW0zpv3S97ipU2WxWqodX2Pi2Ifqm22J5N/O7OAIwsy8wfnOd8F06Kzo7WMDJWkRo UgQsXN8cb2HwQWQ8iN4BDh5bwBvcOHLUKTXaVosY0eEVr7O5TreWnS27NIyrP87EC+wa ggXo/h0h9QotHsj9N7HyYCTqg9QhODhVZ5DYazFTaYrAlfFr9+Uawt7PLwwcjtZLKR1p aA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmue2x31u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:33 +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 274J7Jno030850 for ; Thu, 4 Aug 2022 19:40:32 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2102.outbound.protection.outlook.com [104.47.55.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34mm40-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U7JJn/llPWG+ByGIEj+muWmPVgIZKhhMMRTD46fjAtIfHcqbarlwDWf0mY0JqMAsOCHqOTSjrY2KdIskFZ6fgOyxGk3buC7xXHVJRqEFvYjnCLzVGeZ1FCMRVFXG6OR/DAr/2CcASu4am+6eYC9QC90L+APj4MskTNjTN17BMSGWYW1voSc8rAq0ojmxIJJLauvXPqlJtUCIZgTW08UYLmIB2HucIthA/iF+s3KgbW4K0VY799ftP7gnkqaCk/eMqGq7ejkYPeBd9hnaNWFzg7t9g86k+EmY2i+GAEHYvAgIG9B9vKV4WF2lmEEQodCglfKwsocGRw0hbixu/h7i5g== 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=Q1GgKi/zi77NXRJC/Ns/LZICDR4IYWS8LaobQuzV9W8=; b=Mc7gT5XsQC9naQN/gvdxWXUkOsCSuET75Co6z4ub6je4ubm8uES0GeumOGlgP/INg8PES7GQ5YVgHmbmQ+RRP47nScbqY5BMdy3zO3orD4UrWFSaAAdb783f+N3cBObKVqu5gUYLkJO642Hg1peQMb2p7MzpiDSzpIUHFlTb30LRyPdiHofvAwsiAIC/nZ1YVg9VF7/BhsRfkWPb9+14A+RBvCA+2jP2/QxzqMzomyBC2BrUPgyqR/JhHzZhLyvdkAaXXhzEMc+I40zK1sQ9s/8gHucnNsYjita45phoYsOQKZurRus1FLGzADUYQicPsXZ/LLCjtekRkrjtebGrUg== 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=Q1GgKi/zi77NXRJC/Ns/LZICDR4IYWS8LaobQuzV9W8=; b=E8aUsQPtXVv8Ug1SrUlIhCMiEUWKJMmAUnBkR/tKb7pr8sESqQXALFxiDwlkL5MYX4OAIxo4rRnhpmHNjVQH7ldjk7ZVhi41tw+IQiOOYRRoiVM2aYQxZ1uTd2OgzgwnSb/TPvdIz26UgbFhmoK18NKQr7c124Jda7GmgwY2znk= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by BLAPR10MB5011.namprd10.prod.outlook.com (2603:10b6:208:333::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.15; Thu, 4 Aug 2022 19:40:30 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:30 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 17/18] xfs: Add helper function xfs_attr_list_context_init Date: Thu, 4 Aug 2022 12:40:12 -0700 Message-Id: <20220804194013.99237-18-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 116ece3b-24e2-4217-96de-08da76512e79 X-MS-TrafficTypeDiagnostic: BLAPR10MB5011:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: yO6YE1VG6R5VgctLtNTEnlx0Nr1zV9XG+I8i5KHG6ts6s4hnsu1w9stK52ZHMnRRqI4XJMt9WZ48/j2AaqRHtDvxPi0sY5UF4BxUcKSzFIGYVecAjyGZxg4HLCAGdvw36pu2aaLmYCKcS7RgjOlukG5ajFSxD04YnaPBtLhkSdX6wDdsKYq2qDEhOqfJmQLgqHK+4rVUP4/ryToIF+iMCIF2+UBW1QVQexMtpXOMecKYOdEaqlPNgzUN1XV+YwokB5yfvUL4o+tqWj2xVI6LfHJ/x5BWiT9Pg1BRwLk20J4F2tchtrDhSvpjIxy8vQPZbud+Q4d6epfLZdxIpV1D1WnoGwN2K/MC2dyvl6/B4xDdtZZM5GsX4K75uthhzJEUKC2upxJ/KX3ATVx1iZzKeyMAtptmUWLsev0GHzsbkQN7xJ73vUXx7c3BNcDjLwvw+Vy+WYAI8EKNuXwlTm72xZHQdR7j/OlwlDwd1cn2WOJN1Aq7VKC1H2wGs/hJfKarMx33/t4qDwXMRzaLZqx+HDvtLuOZ9bAkPF+XyUmKh//4Or2nfGH1ViGgbPPpjiSxD3mS+HhRKz/+UCJ6xOd1fN84oL+/v1WAeGR6yq9hspIMzOLAgGGI2BCjGeYuEB/uI09bF1j1iIqLq2S72aSLFNY7cH6oZWDrFFKzfIh2zuKN39GTy4AQKwxDe4EKfOQ+gOeMqB8LginEEnCoGbUcdsFk5uU3UTU2C+4Jm/AYxFY5fry9skh8YbYWmUJ92zyVlguPTKGPZCmjjcThwQlarpbqjmc/xQImb9IgYkz7uJ8= 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:(13230016)(39860400002)(366004)(396003)(136003)(346002)(376002)(6666004)(41300700001)(478600001)(6506007)(52116002)(6486002)(6512007)(26005)(44832011)(2906002)(36756003)(86362001)(6916009)(316002)(1076003)(38100700002)(38350700002)(8936002)(66946007)(5660300002)(66556008)(8676002)(66476007)(186003)(2616005)(83380400001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: A2fbf1xMmvBIyzQCoTYnf+jsu3WLOrRIyH+6YRvslC/M2taMdOuuy8B7nOydHgkwQLRpi2UDXxvA+VXYGQ4ws1xq0ZQqCI464ktomOVxxWpcEhNJ91BL9fvCRD4rMo3TsE3rlEsiAqpSUbqnAJVzb2xHnmZ7VXBluXasaVftDK4+SPfjbKGrEbaep9KWQsPV+Cr4f5MHHG6vknOPX166cwuZ7EqwVVYN0ndn6DXV3gqJSEYRVS4XHNygNtAHsRVrKIfJaiIaHOkuDSb2p5p7T59DgnfrCaACoJWqY5awnvrwlVXNklbPk3p3URjXs2WjFbxieGJkR6VS/jWdYOi2VCLKp7DybrWeCGatdRFSFNPbo9igFrB7IDU2IAzq1OM1Ht3kjZCWlZwb39yqvUYtAva6qrn8lYsiix5EUpblH3P6kLcB9HYJOGoky80Urq2gyLzukMrOM71S9rsTTZU3VYwuZ/WzAJ+C8AbOpJydYTy4/+KtEGLsfm7TdfgdzxadsxP8AJssyzDDn3080yy52ASOPj5trekFy/qn8phtuOcqXYxEbW7T6+UM6IPSQQCv5qkkPGHv6jalNvAeg75XstLqexa599hG91ZV7s8EOELLc4S4iCNVstnSfmZHusUjyNnB7o4YhHIbqhBTJgJkqDO4Fmc0nl6DzdzalcHI5MJSf65TcVE9yFUuZOT5bqMogRnK4icblZ8PcvHn3vWD+PdZtmcf44iUxsvFPqtj32/+brtlFOmVrNwRMLDhN4V9Acvy+lkBis0fMlDM1mvl2vgDvB67pNs9x5IKUHzcB91ZL3qDvXupT3yvCDh3UN+R9TXm8lJY2yCY2atRD5cIGdXK302LlubaqipHW8j8PmnUm4AiRayhS36DYpvVdN+MfM1GSKv0xGZDii6jo3dDRKfXjql9rTX6xu+9SgWPvnx6qkmJuQzPi/8vk5nZl2P4siiSfwxycZ3sM7qUnOTxu+O/zZ2eV6ZcK/O3p4S8iuT6tWs0qlEkexo4XXb73mKTkmM8oznzB0RJnQhc2sVg/tZOtIoPhEQaaDvgpanCK3UAQkDLbf7Oguab6/KwMIVV9Dj/9xp6222ot0Ao+ABeC9NOxMOxXa8y/tDpI7Z1j8KSuF5qokRdUuGwPdbL0Z8aMqXfeIO6CPwBD1U2a1RFdrKI+BcXG38xtdGjXm0E9X4PnlEEdE/kXTGgz5Ts6lHtu+hyRIuMIN6sDzK1/1Ryf4ByXf/oXdUquiHZo/wXMRhD2dhZVC9eiWu4i9CUEGX9XqfBErCUTEDdcwCbIetzKYdmyusjr2xvGEg/KGlVK+C87N0zO+BTKJF4KTnWu/UDT41zs2Zvh7mX/dItcRvfH+bncgaKQA73rEDl/XGjvqJw1hJ3Ab3ySGrW6CNvtoJnDcWT8FAa1Fs3GeTqNJhUAuTH8YGpkWBCn84abpmuhDlzpctyPfSAFA0IOTJzKY9h+bcIx8zwO7BGDI+EoEP9V4DQaxBlhf2F3oJymQymKtDbn9MJCPqAc81SBkc/DzzMRSdWE7ahX8Zv3ymzE6bDXXanyMDgQuBrfSxiXLAw+38O+AjcDSOisd5hVm75NGQBeG9zNuhRoBK6VkjEJ1bUEQ== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 116ece3b-24e2-4217-96de-08da76512e79 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:27.1745 (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: fWfc+haJrNJL8kWV0cIMwcjC/peispNll3zo3sles4sx2Z7A3lE7KgwHwkDuf5BmBQQtz/gLH+iq0UE+UKZhq350MJbKZ6wRM3P64157RDM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5011 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-ORIG-GUID: aodHXnzPBf8TK0w-5KfhzqxGM_Z_gtwk X-Proofpoint-GUID: aodHXnzPBf8TK0w-5KfhzqxGM_Z_gtwk Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This patch adds a helper function xfs_attr_list_context_init used by xfs_attr_list. This function initializes the xfs_attr_list_context structure passed to xfs_attr_list_int. We will need this later to call xfs_attr_list_int_ilocked when the node is already locked. Signed-off-by: Allison Henderson Reviewed-by: Darrick J. Wong --- fs/xfs/xfs_file.c | 1 + fs/xfs/xfs_ioctl.c | 54 ++++++++++++++++++++++++++++++++-------------- fs/xfs/xfs_ioctl.h | 2 ++ 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 5a171c0b244b..7a54887cc37c 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -17,6 +17,7 @@ #include "xfs_bmap_util.h" #include "xfs_dir2.h" #include "xfs_dir2_priv.h" +#include "xfs_attr.h" #include "xfs_ioctl.h" #include "xfs_trace.h" #include "xfs_log.h" diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 1f783e979629..5b600d3f7981 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -369,6 +369,40 @@ xfs_attr_flags( return 0; } +/* + * Initializes an xfs_attr_list_context suitable for + * use by xfs_attr_list + */ +int +xfs_ioc_attr_list_context_init( + struct xfs_inode *dp, + char *buffer, + int bufsize, + int flags, + struct xfs_attr_list_context *context) +{ + struct xfs_attrlist *alist; + + /* + * Initialize the output buffer. + */ + context->dp = dp; + context->resynch = 1; + context->attr_filter = xfs_attr_filter(flags); + context->buffer = buffer; + context->bufsize = round_down(bufsize, sizeof(uint32_t)); + context->firstu = context->bufsize; + context->put_listent = xfs_ioc_attr_put_listent; + + alist = context->buffer; + alist->al_count = 0; + alist->al_more = 0; + alist->al_offset[0] = context->bufsize; + + return 0; +} + + int xfs_ioc_attr_list( struct xfs_inode *dp, @@ -378,7 +412,6 @@ xfs_ioc_attr_list( struct xfs_attrlist_cursor __user *ucursor) { struct xfs_attr_list_context context = { }; - struct xfs_attrlist *alist; void *buffer; int error; @@ -410,21 +443,10 @@ xfs_ioc_attr_list( if (!buffer) return -ENOMEM; - /* - * Initialize the output buffer. - */ - context.dp = dp; - context.resynch = 1; - context.attr_filter = xfs_attr_filter(flags); - context.buffer = buffer; - context.bufsize = round_down(bufsize, sizeof(uint32_t)); - context.firstu = context.bufsize; - context.put_listent = xfs_ioc_attr_put_listent; - - alist = context.buffer; - alist->al_count = 0; - alist->al_more = 0; - alist->al_offset[0] = context.bufsize; + error = xfs_ioc_attr_list_context_init(dp, buffer, bufsize, flags, + &context); + if (error) + return error; error = xfs_attr_list(&context); if (error) diff --git a/fs/xfs/xfs_ioctl.h b/fs/xfs/xfs_ioctl.h index d4abba2c13c1..ca60e1c427a3 100644 --- a/fs/xfs/xfs_ioctl.h +++ b/fs/xfs/xfs_ioctl.h @@ -35,6 +35,8 @@ int xfs_ioc_attrmulti_one(struct file *parfilp, struct inode *inode, int xfs_ioc_attr_list(struct xfs_inode *dp, void __user *ubuf, size_t bufsize, int flags, struct xfs_attrlist_cursor __user *ucursor); +int xfs_ioc_attr_list_context_init(struct xfs_inode *dp, char *buffer, + int bufsize, int flags, struct xfs_attr_list_context *context); extern struct dentry * xfs_handle_to_dentry( From patchwork Thu Aug 4 19:40: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: 12936656 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 0FA47C19F21 for ; Thu, 4 Aug 2022 19:40:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232813AbiHDTkt (ORCPT ); Thu, 4 Aug 2022 15:40:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239285AbiHDTkg (ORCPT ); Thu, 4 Aug 2022 15:40:36 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB54213E0E for ; Thu, 4 Aug 2022 12:40:34 -0700 (PDT) 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 274HbOwG024330 for ; Thu, 4 Aug 2022 19:40: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=ZWrlHGOewd2cgqOPgTr6KdsOfeP5SkK2XskQJx3JEQY=; b=1YPVs8F527l15+eMj6kcJ/jX85clMq63dJZGpdkGeESs81l1dVGMbqpejBrJpM/3xj4E V47m3HwYBBr4PWOvbpxdOt4C1D/A4Eb40P7UdDGZ09DsJ/G3XMQ6hrVePM2YM1BD8z1h IQ1KYWN5JZd+17+qdVNzut5rh7c4Q8W6tV/NxJca5Vo/JQUMNEYNx2oLcL2X2qKhd+gF A9rG4Zu4ecXtTD4BoGhZyFkhO+X3Rr+kN2mgD9+tGDyBrtjq+mAm9gvzSmI6CBJ+qcMy qPOKjXpmqMG3NHQmQuMHPmhv88FRwQvIxiITw9pOos37SzfHE7KW01b6emLgkWaWJYuf yA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hmv8sdyqy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:33 +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 274J7Jnp030850 for ; Thu, 4 Aug 2022 19:40:33 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2102.outbound.protection.outlook.com [104.47.55.102]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hmu34mm40-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 04 Aug 2022 19:40:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JBq8pYwbr+GXbNlBawCVkIktfbEBj0x/Qo+72F5RDI2QgnSlDgFu0sLGT0z0Pfc+Q5wjyyJr6snXS7ufXGdmcAswotv8wRnx70be8C3/JCvs6TFI4tWqUvUnRwfmfZ3JPs17kdR0qOci6pJAJQ+OwibMk9ktX25Ld19JuJYw5tVUANZ7OFg8BHLRSozh9THz0RVRtmg8JtRu6j8C8kNM5Z4fW1X6lT6J5slr73Swp3xcFU++1JwDhQ9MBmHFB7OpNWowIOZTYSom0j9IBP/NP7QoweYifLHhXE/JaIxc5D+4Kw7LnQh7apXRZSgkqEVCfhxG2uu7y6LFwwGDWc7new== 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=ZWrlHGOewd2cgqOPgTr6KdsOfeP5SkK2XskQJx3JEQY=; b=KcKuT1XMt9z/dapq3ER3VrlNc11lg3YQksDwmwtoujnB3b8GGoo/NU3x9ChxYtjd+68ZIUgIySy2qyb2BjTsKKfOf8cN4Yyb5frQoVl8VmyTtaKR4t5vKlRICWSEPBNuvlWZNE83LzFzzgSNNPseAhBviWmG3a05PdWvWckeaoM2vgFB10DkpFHw7GEIBZ21rDV5gfXL151IpdcMTdL3vGItSzYHJ18uHia1tdc7rn+glo4ji5P/aHIqdCxvuEJOyJqq/6K8Ww6Q1wzryuJ7RH2thVQGPC2dTISXrsh34euDWGP3DWi8oj6ltL62MIBt4h6QyHeU6ZKh31pGEWCIdA== 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=ZWrlHGOewd2cgqOPgTr6KdsOfeP5SkK2XskQJx3JEQY=; b=IYKjpcHXy80Z4tYS8hoeGyux/Xb0YzO9L462HSQW68EyL+uUllWj085lDv6WKo8bc406Diwzc8sFm0wehLAOgO7FEGgPsIR9GgW/9SUdybGodQcfMlaAo/6R2jWV3aAZ1DSqUHqmpQGpdfVviHmMaUdfmCZMniDHc15CgbfzLb4= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by BLAPR10MB5011.namprd10.prod.outlook.com (2603:10b6:208:333::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.15; Thu, 4 Aug 2022 19:40:31 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::65a4:3dc0:32a1:7519%4]) with mapi id 15.20.5504.016; Thu, 4 Aug 2022 19:40:31 +0000 From: Allison Henderson To: linux-xfs@vger.kernel.org Subject: [PATCH RESEND v2 18/18] xfs: Add parent pointer ioctl Date: Thu, 4 Aug 2022 12:40:13 -0700 Message-Id: <20220804194013.99237-19-allison.henderson@oracle.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> References: <20220804194013.99237-1-allison.henderson@oracle.com> X-ClientProxiedBy: SJ0PR03CA0198.namprd03.prod.outlook.com (2603:10b6:a03:2ef::23) To BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12387400-e745-4fe8-43b1-08da76512ea9 X-MS-TrafficTypeDiagnostic: BLAPR10MB5011:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Cn+FM5EnPqItxbSXjMQIpNVmVhbvet9u03HSOboiqBeaUVvnQHhMspw5FE9U9dDE6/sZc3NdIeRQruwzh0ytl+IOwdIbd4rcTuK/ZRcSFbcU6Ef0TPy2f8oG61BAnAnGMEmVficP2/sfvpLB2Mq2VzB6JiTLMbaNGER/uRN3pyjIvIznQ7TZkV0HmEnxRF15r6oW2JskTnz1euG2rQTHW1Ox97mcfwXzKFwoPAbghwVNeQRTzbqVaB8yM0jia5MXQFb2uj3WIJuiCqgQGt6NJ4Gf8QNF6gxiQgvBdkmJDfsvQMDWzg5mohEe1xwdbY4fC5+aBYEdbZlTC64wgENK3l5OFp/ThgdAHrGHS+Hhqz4eJSY4yhxM8qXjHY4aTT70lnlkgfwUDIzpUCr304Ig/xZ7N+KQVh5ruBFnhoRNRWzDBRo93MdRmkVGb6Q4bwqhXD99QL42oP8w6KbhO10LPfSBAMLCFLbW52Jd60ouzeoaNFBclKQi52QuocQY6HtZuxpvxOKLQ58H8ss/Q4YWa1wtK9TwYU1hNVIIQDpYsXBpHBPBNyT9mTFBa50YJv2Gf/8DoDjeN02R5Klx1TxuWyTOG5h6yyW2YOAdTHRMAQWQmmst1QuWSHWoVzNeBU+aT20J/RVGb3iyu+yUz6Flj/jaAQsPk9+yTKH19ehRqivZpuk+My+A4amnOvMZwrVPxTmYEPZDN3yzCqrGbYWiO68Cmodfh9y6jmiXPpVhxga1DoPCZw8GPgSKHFdc3F1M1+HUSvqzFSOeT9Dkl6PBFkVLntxuD6uCz9BFxJK+MhXpbizn/Ebofuz/ZKXY9w5/ 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:(13230016)(39860400002)(366004)(396003)(136003)(346002)(376002)(6666004)(41300700001)(478600001)(6506007)(52116002)(6486002)(6512007)(26005)(44832011)(2906002)(30864003)(36756003)(86362001)(6916009)(316002)(1076003)(38100700002)(38350700002)(8936002)(66946007)(5660300002)(66556008)(8676002)(66476007)(186003)(2616005)(83380400001)(2004002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: WiDKnqnSm3rDU9mhZo/X0KzeqAvOrx2AEwIkzZsZNB5Mg9MPasbROvFXLsQ3mssdjnV2bd1Rjhj69+9OHlLuXbDnYL/GZunto5MY5kAy1niTL5o6VaIRxwymInKazMHTQ3WKQLu9F58owA6seQHJRH0tLRSWNG4L4bN/ED/N5ixT/wAmCnDsmDzIw6LvcSLxkt6VzFWeCOj9tdTNtI3x7b43naUJV3d2vhXVSUozsXiMlk+VtLYbTkUq9Xp6/Eh9jPnWXRkV/rwlaCZczfsEAuhdVmVSngCJvqemajbfENFvKDArt1NTe3dA8pxUIGIV05UZRfqJB8DLEUg5F3UoJIjmkJUh7EZItQyQkqt6LU8DDFtc3ZKLelvMbEg5KW6rPLrm4w+8JKs1tVc0dKRjjJNDTeCESZ6gOM5LNi16nmdozQpHdIbz5F+n6O5P/4juQIJC3xwvRH6093yJf260i8CNH1/fn7arkiQp3pz6Vm23qoq3U29iJ37I73M1DNP4GgQDfKLbJIApa+ZHbAOVwlZNNR+Rn7H4cqGgKkzqiszdK3FHk66GbiXGlJOABqo9ooTBlc4BZzoxkpxtXF+7jEYrhWYH273FCTVP2rvOwxMV4tLzF5sqhmzwwBLkw2vqW0X8+KNz4qNIxytfoateDiYnGEbIUH1onDUE1qB4nBJYGzRdW13GCnfSoylIL9DO5mYI/wyqYeHcRp43LVGunEWMT3+ThnGRjNFrsdqGGqrHtMbro5Lfih4HnZKOI8BgPo1fypOB8exESq4EpneltFguFgpvAX6b2P2RKdS2J/peapkTMiIuSWfRRQo+gTAp5HG+NN0Hgv/FLGienu4CUFhGh8bkZvvIvJxGalnd2IgujE81A+y//B1J84ZMPatGOytq3PK0o7HaFHp9eZOpsWfi9ygjW+ev+EFJzPeTQ5jEkrTTBCSqIaiJhxTLRfhlviBKsqrbHlmphWt0quXUl/ZoPNdXpW3wtDPZgBLKhmW4lUg6AV/+F3KPj0lR2CNktJKdBfIPFmF/VPksMNGAGrNbtXEhLtCb/n3OS0lp+ypLktjz1AQ6FvLf/x5atbpCjjDXswH6HpNRQK9i1YfTFl1MvZaxb0xN8FkTHYlUEPTud/nJmmUaqK/J0onuhAvi2XYnftlwNRnHHA1MNEDBhfaPE72Oo90WHPcF6U2cE9IGWm4HzI9+qzpgwgHds9x5IHMduWYxcy4TBH5VgYEaSgVlWXimuWYzc+WSQRhMexvoTd9x7lBH7R9nxNOS5IwVk33tFW0MpwsEpANphZX7ulUR6Ifka9h6tINKsw9vMPO9BJXEXNEoyjtT4/OnzRm7vIBziZEUKCbc9Pgv7RDKfRRHunFkRWQvZfIz7lHFIZax3RUPauR8HR4R5MncYIWpBrfz/YyTMk7iNwGqsI9da64mLPuyWGHazEwD6PjNp4GJX673pZw1ZnrGeSVayeEAeuQgLABUFbvw44p++mfCn7XMzEqsTkRYydySeeIuldfnB5ZCEuIeju1ZtBwiKaPW8shn01RnwY6h1Nqvy9s2Xd8mQpZY9ZJ5hlrMihn9U4sCPVkI70qJEnId/fAqdM7rvh7fSrn3hh7hdaoj1tIIVw== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12387400-e745-4fe8-43b1-08da76512ea9 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2022 19:40:27.4869 (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: 4hzbnmm5/nEQV42SeiFGOMWj2+3ocQ+Pb3mcvQiMIwZLMXhD8cDs/WpiS8MdSt4pmgbMMo1oLlrY4COE0J6WI7Jb7M8kpt+jdwPiSHu5Rnk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR10MB5011 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-04_03,2022-08-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 malwarescore=0 spamscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2208040085 X-Proofpoint-GUID: EqJMt5gyeejjyR0CADMmAQEul-tEgB81 X-Proofpoint-ORIG-GUID: EqJMt5gyeejjyR0CADMmAQEul-tEgB81 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org This patch adds a new file ioctl to retrieve the parent pointer of a given inode Signed-off-by: Allison Henderson --- fs/xfs/Makefile | 1 + fs/xfs/libxfs/xfs_fs.h | 57 ++++++++++++++++ fs/xfs/libxfs/xfs_parent.c | 10 +++ fs/xfs/libxfs/xfs_parent.h | 2 + fs/xfs/xfs_ioctl.c | 95 +++++++++++++++++++++++++- fs/xfs/xfs_ondisk.h | 4 ++ fs/xfs/xfs_parent_utils.c | 134 +++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_parent_utils.h | 22 ++++++ 8 files changed, 323 insertions(+), 2 deletions(-) diff --git a/fs/xfs/Makefile b/fs/xfs/Makefile index caeea8d968ba..998658e40ab4 100644 --- a/fs/xfs/Makefile +++ b/fs/xfs/Makefile @@ -86,6 +86,7 @@ xfs-y += xfs_aops.o \ xfs_mount.o \ xfs_mru_cache.o \ xfs_pwork.o \ + xfs_parent_utils.o \ xfs_reflink.o \ xfs_stats.o \ xfs_super.o \ diff --git a/fs/xfs/libxfs/xfs_fs.h b/fs/xfs/libxfs/xfs_fs.h index b0b4d7a3aa15..ba6ec82a0272 100644 --- a/fs/xfs/libxfs/xfs_fs.h +++ b/fs/xfs/libxfs/xfs_fs.h @@ -574,6 +574,7 @@ typedef struct xfs_fsop_handlereq { #define XFS_IOC_ATTR_SECURE 0x0008 /* use attrs in security namespace */ #define XFS_IOC_ATTR_CREATE 0x0010 /* fail if attr already exists */ #define XFS_IOC_ATTR_REPLACE 0x0020 /* fail if attr does not exist */ +#define XFS_IOC_ATTR_PARENT 0x0040 /* use attrs in parent namespace */ typedef struct xfs_attrlist_cursor { __u32 opaque[4]; @@ -752,6 +753,61 @@ 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) + +/* 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 */ + __u32 xpp_namelen; /* File name length */ + __u32 xpp_pad; + __u8 xpp_name[XFS_PPTR_MAXNAMELEN]; /* File name */ +}; + +/* Iterate through an inodes parent pointers */ +struct xfs_pptr_info { + struct xfs_handle pi_handle; + struct xfs_attrlist_cursor pi_cursor; + __u32 pi_flags; + __u32 pi_reserved; + __u32 pi_ptrs_size; + __u32 pi_ptrs_used; + __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 +853,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_GETPPOINTER _IOR ('X', 62, struct xfs_parent_ptr) /* * ioctl commands that replace IRIX syssgi()'s diff --git a/fs/xfs/libxfs/xfs_parent.c b/fs/xfs/libxfs/xfs_parent.c index 03f03f731d02..d9c922a78617 100644 --- a/fs/xfs/libxfs/xfs_parent.c +++ b/fs/xfs/libxfs/xfs_parent.c @@ -26,6 +26,16 @@ #include "xfs_xattr.h" #include "xfs_parent.h" +/* Initializes a xfs_parent_ptr from an xfs_parent_name_rec */ +void +xfs_init_parent_ptr(struct xfs_parent_ptr *xpp, + 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/fs/xfs/libxfs/xfs_parent.h b/fs/xfs/libxfs/xfs_parent.h index 67948f4b3834..53161b79d1e2 100644 --- a/fs/xfs/libxfs/xfs_parent.h +++ b/fs/xfs/libxfs/xfs_parent.h @@ -23,6 +23,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, + struct xfs_parent_name_rec *rec); int xfs_parent_init(xfs_mount_t *mp, xfs_inode_t *ip, struct xfs_name *target_name, struct xfs_parent_defer **parentp); diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 5b600d3f7981..8a9530588ef4 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c @@ -37,6 +37,7 @@ #include "xfs_health.h" #include "xfs_reflink.h" #include "xfs_ioctl.h" +#include "xfs_parent_utils.h" #include "xfs_xattr.h" #include @@ -355,6 +356,8 @@ xfs_attr_filter( return XFS_ATTR_ROOT; if (ioc_flags & XFS_IOC_ATTR_SECURE) return XFS_ATTR_SECURE; + if (ioc_flags & XFS_IOC_ATTR_PARENT) + return XFS_ATTR_PARENT; return 0; } @@ -422,7 +425,8 @@ xfs_ioc_attr_list( /* * Reject flags, only allow namespaces. */ - if (flags & ~(XFS_IOC_ATTR_ROOT | XFS_IOC_ATTR_SECURE)) + if (flags & ~(XFS_IOC_ATTR_ROOT | XFS_IOC_ATTR_SECURE | + XFS_IOC_ATTR_PARENT)) return -EINVAL; if (flags == (XFS_IOC_ATTR_ROOT | XFS_IOC_ATTR_SECURE)) return -EINVAL; @@ -1679,6 +1683,92 @@ xfs_ioc_scrub_metadata( return 0; } +/* + * IOCTL routine to get the parent pointers of an inode and return it to user + * space. Caller must pass a buffer space containing a struct xfs_pptr_info, + * followed by a region large enough to contain an array of struct + * xfs_parent_ptr of a size specified in pi_ptrs_size. If the inode contains + * more parent pointers than can fit in the buffer space, caller may re-call + * the function using the returned pi_cursor to resume iteration. The + * number of xfs_parent_ptr returned will be stored in pi_ptrs_used. + * + * Returns 0 on success or non-zero on failure + */ +STATIC int +xfs_ioc_get_parent_pointer( + struct file *filp, + void __user *arg) +{ + struct xfs_pptr_info *ppi = NULL; + int error = 0; + struct xfs_inode *ip = XFS_I(file_inode(filp)); + struct xfs_mount *mp = ip->i_mount; + + if (!capable(CAP_SYS_ADMIN)) + return -EPERM; + + /* Allocate an xfs_pptr_info to put the user data */ + ppi = kmem_alloc(sizeof(struct xfs_pptr_info), 0); + if (!ppi) + return -ENOMEM; + + /* Copy the data from the user */ + error = copy_from_user(ppi, arg, sizeof(struct xfs_pptr_info)); + if (error) + goto out; + + /* Check size of buffer requested by user */ + if (xfs_pptr_info_sizeof(ppi->pi_ptrs_size) > XFS_XATTR_LIST_MAX) { + error = -ENOMEM; + goto out; + } + + if (ppi->pi_flags != 0 && ppi->pi_flags != XFS_PPTR_IFLAG_HANDLE) { + error = -EINVAL; + goto out; + } + + /* + * Now that we know how big the trailing buffer is, expand + * our kernel xfs_pptr_info to be the same size + */ + ppi = krealloc(ppi, xfs_pptr_info_sizeof(ppi->pi_ptrs_size), + GFP_NOFS | __GFP_NOFAIL); + if (!ppi) + return -ENOMEM; + + if (ppi->pi_flags == XFS_PPTR_IFLAG_HANDLE) { + error = xfs_iget(mp, NULL, ppi->pi_handle.ha_fid.fid_ino, + 0, 0, &ip); + if (error) + goto out; + + if (VFS_I(ip)->i_generation != ppi->pi_handle.ha_fid.fid_gen) { + error = -EINVAL; + goto out; + } + } + + if (ip->i_ino == mp->m_sb.sb_rootino) + ppi->pi_flags |= XFS_PPTR_OFLAG_ROOT; + + /* Get the parent pointers */ + error = xfs_attr_get_parent_pointer(ip, ppi); + + if (error) + goto out; + + /* Copy the parent pointers back to the user */ + error = copy_to_user(arg, ppi, + xfs_pptr_info_sizeof(ppi->pi_ptrs_size)); + if (error) + goto out; + +out: + kmem_free(ppi); + return error; +} + int xfs_ioc_swapext( xfs_swapext_t *sxp) @@ -1968,7 +2058,8 @@ xfs_file_ioctl( case XFS_IOC_FSGETXATTRA: return xfs_ioc_fsgetxattra(ip, arg); - + case XFS_IOC_GETPPOINTER: + return xfs_ioc_get_parent_pointer(filp, arg); case XFS_IOC_GETBMAP: case XFS_IOC_GETBMAPA: case XFS_IOC_GETBMAPX: diff --git a/fs/xfs/xfs_ondisk.h b/fs/xfs/xfs_ondisk.h index 758702b9495f..765eb514a917 100644 --- a/fs/xfs/xfs_ondisk.h +++ b/fs/xfs/xfs_ondisk.h @@ -135,6 +135,10 @@ xfs_check_ondisk_structs(void) XFS_CHECK_STRUCT_SIZE(struct xfs_attri_log_format, 40); XFS_CHECK_STRUCT_SIZE(struct xfs_attrd_log_format, 16); + /* parent pointer ioctls */ + XFS_CHECK_STRUCT_SIZE(struct xfs_parent_ptr, 280); + XFS_CHECK_STRUCT_SIZE(struct xfs_pptr_info, 104); + /* * The v5 superblock format extended several v4 header structures with * additional data. While new fields are only accessible on v5 diff --git a/fs/xfs/xfs_parent_utils.c b/fs/xfs/xfs_parent_utils.c new file mode 100644 index 000000000000..3351ce173075 --- /dev/null +++ b/fs/xfs/xfs_parent_utils.c @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2015 Red Hat, Inc. + * All rights reserved. + * + * 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. + * + * 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 + */ +#include "xfs.h" +#include "xfs_fs.h" +#include "xfs_format.h" +#include "xfs_log_format.h" +#include "xfs_shared.h" +#include "xfs_trans_resv.h" +#include "xfs_mount.h" +#include "xfs_bmap_btree.h" +#include "xfs_inode.h" +#include "xfs_error.h" +#include "xfs_trace.h" +#include "xfs_trans.h" +#include "xfs_da_format.h" +#include "xfs_da_btree.h" +#include "xfs_attr.h" +#include "xfs_ioctl.h" +#include "xfs_parent.h" +#include "xfs_da_btree.h" + +/* + * Get the parent pointers for a given inode + * + * Returns 0 on success and non zero on error + */ +int +xfs_attr_get_parent_pointer(struct xfs_inode *ip, + struct xfs_pptr_info *ppi) + +{ + + struct xfs_attrlist *alist; + struct xfs_attrlist_ent *aent; + struct xfs_parent_ptr *xpp; + struct xfs_parent_name_rec *xpnr; + char *namebuf; + unsigned int namebuf_size; + int name_len; + int error = 0; + unsigned int ioc_flags = XFS_IOC_ATTR_PARENT; + unsigned int flags = XFS_ATTR_PARENT; + int i; + struct xfs_attr_list_context context; + + /* Allocate a buffer to store the attribute names */ + namebuf_size = sizeof(struct xfs_attrlist) + + (ppi->pi_ptrs_size) * sizeof(struct xfs_attrlist_ent); + namebuf = kvzalloc(namebuf_size, GFP_KERNEL); + if (!namebuf) + return -ENOMEM; + + memset(&context, 0, sizeof(struct xfs_attr_list_context)); + error = xfs_ioc_attr_list_context_init(ip, namebuf, namebuf_size, + ioc_flags, &context); + + /* Copy the cursor provided by caller */ + memcpy(&context.cursor, &ppi->pi_cursor, + sizeof(struct xfs_attrlist_cursor)); + + if (error) + goto out_kfree; + + xfs_ilock(ip, XFS_ILOCK_EXCL); + + error = xfs_attr_list_ilocked(&context); + if (error) + goto out_kfree; + + alist = (struct xfs_attrlist *)namebuf; + for (i = 0; i < alist->al_count; i++) { + struct xfs_da_args args = { + .geo = ip->i_mount->m_attr_geo, + .whichfork = XFS_ATTR_FORK, + .dp = ip, + .namelen = sizeof(struct xfs_parent_name_rec), + .attr_filter = flags, + .op_flags = XFS_DA_OP_OKNOENT, + }; + + xpp = xfs_ppinfo_to_pp(ppi, i); + memset(xpp, 0, sizeof(struct xfs_parent_ptr)); + aent = (struct xfs_attrlist_ent *) + &namebuf[alist->al_offset[i]]; + xpnr = (struct xfs_parent_name_rec *)(aent->a_name); + + if (aent->a_valuelen > XFS_PPTR_MAXNAMELEN) { + error = -ERANGE; + goto out_kfree; + } + name_len = aent->a_valuelen; + + args.name = (char *)xpnr; + args.hashval = xfs_da_hashname(args.name, args.namelen), + args.value = (unsigned char *)(xpp->xpp_name); + args.valuelen = name_len; + + error = xfs_attr_get_ilocked(&args); + error = (error == -EEXIST ? 0 : error); + if (error) + goto out_kfree; + + xpp->xpp_namelen = name_len; + xfs_init_parent_ptr(xpp, xpnr); + } + ppi->pi_ptrs_used = alist->al_count; + if (!alist->al_more) + ppi->pi_flags |= XFS_PPTR_OFLAG_DONE; + + /* Update the caller with the current cursor position */ + memcpy(&ppi->pi_cursor, &context.cursor, + sizeof(struct xfs_attrlist_cursor)); + +out_kfree: + xfs_iunlock(ip, XFS_ILOCK_EXCL); + kmem_free(namebuf); + + return error; +} + diff --git a/fs/xfs/xfs_parent_utils.h b/fs/xfs/xfs_parent_utils.h new file mode 100644 index 000000000000..0e952b2ebd4a --- /dev/null +++ b/fs/xfs/xfs_parent_utils.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017 Oracle, Inc. + * All Rights Reserved. + * + * 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. + * + * 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. + */ +#ifndef __XFS_PARENT_UTILS_H__ +#define __XFS_PARENT_UTILS_H__ + +int xfs_attr_get_parent_pointer(struct xfs_inode *ip, + struct xfs_pptr_info *ppi); +#endif /* __XFS_PARENT_UTILS_H__ */ From patchwork Tue Aug 9 22:55:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12940045 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 DFDFBC19F2D for ; Tue, 9 Aug 2022 22:55:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229485AbiHIWzo (ORCPT ); Tue, 9 Aug 2022 18:55:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41990 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229436AbiHIWzn (ORCPT ); Tue, 9 Aug 2022 18:55:43 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C652E636F for ; Tue, 9 Aug 2022 15:55:41 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 7373EB81A0A for ; Tue, 9 Aug 2022 22:55:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A40BC433C1; Tue, 9 Aug 2022 22:55:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1660085739; bh=jQUWL9y2VP8z8lj7ta4z0jOmGU8IVGYCTZNj0mGufLk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=o0cLGU7lUlJSq/ioo4QE2GbDUHhwdi5xuSdO3Hdz5Zo40vm9rQjF//7eNKWbuB3le uquneqM3DxwI1w5+8b9Tr0h59EoXFIveGKKJEx6Kcd0lP7HwtJV4yPqUPSqw5v7lzN mDyrpyP7Fj3756DvFB4ahQaoMvwjWbgPgP91I6CRTjvOdKhURtuHX9CbEdSsEoxtCc RrvV41BRM/giPFZSjRsX5w9RijD7bHYybJ5u2z0dLPW/g9wJe+2ADe/hbl2BmUCiwK Bm9ISvKACfaEjceMKLBQt6hoTqUPNdp2VEY21an8YfT/6QBAU3AKKAhA9fo4ObzGRn ZOncHC9gXxVvg== Date: Tue, 9 Aug 2022 15:55:38 -0700 From: "Darrick J. Wong" To: Allison Henderson Cc: linux-xfs@vger.kernel.org Subject: [RFC PATCH 19/18] xfs: fix unit conversion error in xfs_log_calc_max_attrsetm_res Message-ID: References: <20220804194013.99237-1-allison.henderson@oracle.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong 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 --- fs/xfs/libxfs/xfs_log_rlimit.c | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/fs/xfs/libxfs/xfs_log_rlimit.c b/fs/xfs/libxfs/xfs_log_rlimit.c index 9975b93a7412..cc4837b948b1 100644 --- a/fs/xfs/libxfs/xfs_log_rlimit.c +++ b/fs/xfs/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 Tue Aug 9 22:56:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12940046 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 DC9F9C19F2D for ; Tue, 9 Aug 2022 22:56:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229733AbiHIW4V (ORCPT ); Tue, 9 Aug 2022 18:56:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229673AbiHIW4U (ORCPT ); Tue, 9 Aug 2022 18:56:20 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86E7B60531 for ; Tue, 9 Aug 2022 15:56:19 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 41CDEB81A0A for ; Tue, 9 Aug 2022 22:56:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5589C433D6; Tue, 9 Aug 2022 22:56:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1660085777; bh=rDBMCD0frbeeewm+vGPL6nGv86fepSIlTqBGarD+9Ic=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=l5onreUp4aTSIr7Qy3vkUaDkVU+CuPJRd7rviR/E2NQAooPwi2N5KFJafJ3gAZhbn G+yNlWNYyy4w5fNoaU958jtkWlzvLsrPPpKAiZF253NTcLW/Zl1MO/M1TjpImtc1He kcnpa+VDRb9DJJkOqpsvO4ceLDdF1YWxQZBzz4krm6fbFU5Kht5VcptKYSbzB8hwYv pkUvAH22hhzQ5PIv6Js7ig1kk9HwgHZHnvJ8z7Xe1+F/eEhbP6gE01qMqrMa8XHbM2 v4iL5MQ6Y+2b5tM97pJBDOVlLX4iFJQ0mEqWpsVYbUkMUdFxOT2uCtmI47y8Mjn8Q8 DqT71nHq+nofg== Date: Tue, 9 Aug 2022 15:56:16 -0700 From: "Darrick J. Wong" To: Allison Henderson Cc: linux-xfs@vger.kernel.org Subject: [RFC PATCH 20/18] xfs: drop compatibility minimum log size computations for reflink Message-ID: References: <20220804194013.99237-1-allison.henderson@oracle.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220804194013.99237-1-allison.henderson@oracle.com> Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong 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 --- fs/xfs/libxfs/xfs_log_rlimit.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/xfs/libxfs/xfs_log_rlimit.c b/fs/xfs/libxfs/xfs_log_rlimit.c index cc4837b948b1..c6b098d12f65 100644 --- a/fs/xfs/libxfs/xfs_log_rlimit.c +++ b/fs/xfs/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