From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EEBC1ECAAD4 for ; Tue, 30 Aug 2022 23:25:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232004AbiH3XZN (ORCPT ); Tue, 30 Aug 2022 19:25:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232731AbiH3XYr (ORCPT ); Tue, 30 Aug 2022 19:24:47 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C0094A1D1B for ; Tue, 30 Aug 2022 16:22:14 -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 27ULVJRO005548 for ; Tue, 30 Aug 2022 23:20:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=EA8QoZuPNSR45SkWOTAsz/J/W9Yt8Ns8oenqn/QJT00=; b=LGm0bX/yIoqhur8VxfR9LaLvqFIaDEU+mdJlPem5EkZYoTLmE2vrOgFBjuiDb2g5xgC9 9rcXfnu+aSKX8YHpSIx4uGvqp9R5IGU5xROMrW5K6Cdr1TJxxK91YG4r6przxORr3r3v XEUIjwIQqk9YW6FG8kpRw5T/IW5BbIpOMUGehYewTYTc1qy8/w6hW+sela0jmKbcDb5t hQ72B5UYu8T5JAP2eHEddJZEX+LofKuKowtpzvVHKrFOu4fcCygUAahGVPwOxBVrmG3R 1AT3zMHC2k4eDkXkA62VP+Y5Gv+4J6oF2Zu1J/Lth6rIdJ0k8wniLG7ywfLSgq8y3MQn kA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3j7a227svf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 30 Aug 2022 23:20: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 27ULkbS3013410 for ; Tue, 30 Aug 2022 23:20:33 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2101.outbound.protection.outlook.com [104.47.55.101]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3j79q4gwx7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 30 Aug 2022 23:20:33 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Eq6deDQE5hyTPWaidtQZWmjA6NHlayJp7qy+odWjasVvfAO/OeqmazMmFvZk/yGCr0uTSEpQ34vtuQ2okfwEUQuPqx+qRmQQT0It89rnmFzD5jt8WnFCM653xB5nN+j/6h5runRg7ylVK2YsAxhYpcFgvpKLzNzvpuYhkX3VSmXlAzBujvnTTojGLzyEcE4hq4r0J2uC0z4dfji+3P4Ng/pUsktWB7cl+7KU/QIYDnoF9lbdiaW4qZd4yvgJ7Ub9rym/ZcJaa3w8+I/A2PI1jcdFgnO7JHhHHUPpgMqHJS3JQxfB36JCS6oxs91KwA0f5gAwLUkqITxnyVtT+UHVOA== 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=EA8QoZuPNSR45SkWOTAsz/J/W9Yt8Ns8oenqn/QJT00=; b=FAEe+vThN5WppdM48kydrmWbvCamSsciKFH9iIs9VKRODQeQ7SRQGuzzn3Rz8nKofIzNQkmDci3ZfPDAjopFKGh0lZ2POSPmXaaZ/qxwKgNIfWPQwp0a1fIiyKtokns3iSomPEDn+JHuQFxzvq3DcKeB6FXuHnHu44N/pq2oA7Ue/YFpPwphZ+hy3Yl9yxu8PnFu576AvJLc9DCz9jn/slbQCB9/kMesztDS5hXQXqnxAUaC6NSP1mO4GtnYNcnBACvdYkg5da3UtLHl7NePGZgyBrLVDYpO7Z+E/dukIbCXMfOBq3zl0qVJQ8zdY3Rz4EzlN6tIKKmKdf8RAuoAiA== 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=EA8QoZuPNSR45SkWOTAsz/J/W9Yt8Ns8oenqn/QJT00=; b=VFELnaCL9JUl6fLoySc4ofwhRU0b+EhHKBLKbrvOKXjDozckYdnk5g4eSIS2F4WYUMqRsrGL4AD9AWGH1KTBLoXX03jvfx3am0QZexaq2k+e7QOP4s2wQO9fI0+0bQSD2EQx3z2TXyx94g9qVUBc6Pg01dpQPuvmk1u6f7umAu4= Received: from BLAPR10MB5316.namprd10.prod.outlook.com (2603:10b6:208:326::6) by MW5PR10MB5805.namprd10.prod.outlook.com (2603:10b6:303:192::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.21; Tue, 30 Aug 2022 23:20:30 +0000 Received: from BLAPR10MB5316.namprd10.prod.outlook.com ([fe80::286b:6c42:f5c6:eb63]) by BLAPR10MB5316.namprd10.prod.outlook.com ([fe80::286b:6c42:f5c6:eb63%4]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022 23:20:29 +0000 From: Catherine Hoang To: linux-xfs@vger.kernel.org Subject: [PATCH v2] xfs: add LARP state transition diagram Date: Tue, 30 Aug 2022 16:20:22 -0700 Message-Id: <20220830232022.55523-1-catherine.hoang@oracle.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain X-ClientProxiedBy: SJ0PR03CA0177.namprd03.prod.outlook.com (2603:10b6:a03:338::32) To BLAPR10MB5316.namprd10.prod.outlook.com (2603:10b6:208:326::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 26953d39-b2b0-4b47-6db9-08da8ade3a96 X-MS-TrafficTypeDiagnostic: MW5PR10MB5805:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hLLiF1M1m/xbeXHdFL8NYl5edWf1mCUalquenfGWCoHTm73oOCaGM9ZdsoIPE6x4WKgyL+vJvzL9smm0S7QTjsbhOSBNphwCyq4s2q6GAIp7lBZ+DLe0P64VkOwDVMpgUaPexwrF+Vz3FBbzvUrUkkdc5uFkSZ3f7eSZcHUZs6uIJW4d9JGtm/mmd8JhXqhzdrjt1HmIm2WvfTiKCipKh7me7yEdufUcGWcXmn/+saEQnnmFCxjvayzo+BIQCu0uPtRa+I0doicJn/9uIPg7BwFIwzNC1Iz2IAYBJhEot7XpO2Ss0FafI2eoNivqNkyowj+tbZirn76k8iLzn/mMXw0o0J2Y/r5xa4NTUbCN2ybA8ADoTRrL+UmZhnGXRxXLDGj4s04rlmMxS4Z2NChXY5HIG3GXvtPpKOPkTJz5ED1rkK8mKSzW2UO4mk2rmOt9MAr2vDrG01rpRJT/ujKLqzwbHt/Z+wqCC/wNRoHuHz0kM/LVSKd/o6BjVxFcsV8ZBMsW5LF2bPBINKbMJTQuDrHS/Gv8piRTJUo9roskadIABpcRfQdWAMrCQvKV0tWAfygAOfeQV3rQQTtLd2P5z5EWAIYgVYxolpYfoM7FYBigvcg9wrlbyekxSKCsTQwwnt+h4FD5r6DQhkGHGjWxHTKoo9cywMpj/EI7b8J6yBHgvZtZW0qficjM8/Ahlu8C2pM2t/py0Be7nt155JAa/VMgT1uZZxw7wkS3pwCdDg92VemJotSdoCyN/d09cFnRX9VRXVO0z3CtGe3o1tX+2Q== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BLAPR10MB5316.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(346002)(136003)(376002)(366004)(39860400002)(396003)(6486002)(44832011)(2616005)(30864003)(2906002)(8936002)(1076003)(66556008)(8676002)(966005)(66476007)(52116002)(6512007)(186003)(478600001)(41300700001)(83380400001)(5660300002)(38100700002)(66946007)(6916009)(316002)(6506007)(40140700001)(36756003)(6666004)(86362001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?3RL+kBowNDUwwYZrihK04NdOF96rFZAgAODUE+Qjny1S1bGhRuQTblw62pFy?= =?us-ascii?Q?pAcb2fymPPKosluOsZ9/8+h7ui6Gda59aOh+M0Nj956mS82o/Q7hg7dS1AAL?= =?us-ascii?Q?B5x9t9UNbJ1DRo1fqk5CJZFXqXRrASS5wjtzF6qvberz76NloJO4BD1sfLgg?= =?us-ascii?Q?wYtok2HDg+wz9FI4nIBsZxzxQo8QTXgAeHrqB4fbsgkD8zMShL4QWaEgG5TI?= =?us-ascii?Q?DCNHYPUSzoz/VNih6wrgN8qZX6HwPUBEl5zWNDi29w8BQnXhBzkg14zFFLWg?= =?us-ascii?Q?XSBg7YEu00TvLZavmnAMQ3Te8Ppcw9EILYekezVvaN+uwHHtIoQt8Du5rT1F?= =?us-ascii?Q?15kiMP3KE3tx4DlORoCZsfdcG8vzA//edsK4izzF7p/iL4HK211FbP6UiL/7?= =?us-ascii?Q?hFebvF6DYZ9gym+LUa9gJEFY8yFt8cpUh0gKKUt6B14rebwQ8NknCweu/Dui?= =?us-ascii?Q?u2SXscDCDEbC7uSJA4oMaOM42tLWEH7oQbX2ylSobfRkBZNVhs+OQr6q1paf?= =?us-ascii?Q?j33jhBNnZazgzeVHGlGZSbLqYOTu4WJ0ukZGHK6Gexj1GIAPFZsVp9JMeiHF?= =?us-ascii?Q?LSfdbKJ5eHtH/XVMjGl+2aSJ2eq8TZ/8Tz+PJfmx/IuS2KwuyctXmZ4kBKNW?= =?us-ascii?Q?thWJc74DJZndW/MboVrz8eCNNuf+lW9TdlHzJzzR/vcCvNpV02QmYj0ISx9p?= =?us-ascii?Q?1gh5dALWpM3bgHvFYlb18LN0h3S5ZvGIXnbKJCtljrEmp+/jPe303T5mxp0e?= =?us-ascii?Q?tpedw/b0etjWlDzfYZU6Z+JDHP1QwrCUA6aiVGbuQIDsg+CA/1jSAtmIeRlm?= =?us-ascii?Q?95lE2a1lHfErtqs4S6YMrehvO0d5fSFDYSUdVMg48NkRjUFTrLtkTnfOOPWy?= =?us-ascii?Q?hdwXStbnifhezpsDriJVb0lEbLFHzTHpvI5Dw/0L+ZOqI/kp4WY7dyFU1MZo?= =?us-ascii?Q?ulRVg2yYDa0qlmgEYmtlVIMuJcy5VS2QW+iSaoWegP0GX6YFvSgeacxItxBV?= =?us-ascii?Q?+S4/YgA1eGjhMaKYd6aGMd20bYrYH15b89DxjnIufWaebBgJNnF+WHUJE1gA?= =?us-ascii?Q?jTpoAhp8jHEqgJcJplc8xgUWH7y4Z2yFw/As1edQsGSl+dp1MWssC+tSlCxm?= =?us-ascii?Q?PQHgt7VZzxfnfVXRlOOFkm+aHPGgsKiQzmSolWZZvOy7z4tfOc6Xkl+snGWp?= =?us-ascii?Q?NjapUR9vWBK6Zm3bfYPBzPegh5bliLolMwCIvPcmTWn6YJzGqbmCogG0MojZ?= =?us-ascii?Q?pji/2r1qS21IoYXrzEVvPQmW4qvSRBauv/WSiGQgqj5ilEiAevx5vONaodFQ?= =?us-ascii?Q?B91vCqlOy63vspgVfRSzsjpkqzTfRvcHPauGguYA8XHG6D1p4xy0JS7U2sin?= =?us-ascii?Q?Z0bImhUb6+DZPJSOKueD+H3CtG3PftKXRHaOvRGMLn0u4q4z+NOZZUIYkpEB?= =?us-ascii?Q?FwmKw3P6Ek7jywAGa8i6PHPz+Pu7nDqfKkzwZ490y+eiUvH1MxK0wCVXjbV0?= =?us-ascii?Q?+QRP0dI2GqqDE8+5BoiOhqkcxiY7jP69ib7MqhwTL+vqmKvpBX8H5Fkvml+b?= =?us-ascii?Q?wPg6em0QgggPSVYocB5T1NO4FGUsyJkQdAuf201NZ0KFOQNilQS84Ey4Opy9?= =?us-ascii?Q?uXkxlIK85voZpK+HE0kmd71VvQK+Oy4Wlc5NPQNjzgZDMoXfGnwgqJuqSLF4?= =?us-ascii?Q?3cbrZQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26953d39-b2b0-4b47-6db9-08da8ade3a96 X-MS-Exchange-CrossTenant-AuthSource: BLAPR10MB5316.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2022 23:20:29.8687 (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: bpYk2s9wiO83tN+lGmOxLg9FLu6GKy2GEdniR/mbqUB0VDfro3BPGRdA5ys7WnJKU+jpP9GHw4eaMetP5L2ErrwWJWZV2OHAo4/fCW/yIMI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR10MB5805 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-30_12,2022-08-30_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 spamscore=0 mlxlogscore=999 phishscore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208300105 X-Proofpoint-GUID: rBUxmx0ByvykW-R8C_fa5aCVJFApXhAA X-Proofpoint-ORIG-GUID: rBUxmx0ByvykW-R8C_fa5aCVJFApXhAA Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Dave Chinner Add a state transition diagram documenting each logged attribute state and their transition conditions. The diagram can be built from the included text source file with PlantUML. [cathhoan: add descriptions, links to docs, and diagram image] Signed-off-by: Dave Chinner Signed-off-by: Catherine Hoang --- Documentation/filesystems/xfs-larp-state.svg | 1 + Documentation/filesystems/xfs-larp-state.txt | 103 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 Documentation/filesystems/xfs-larp-state.svg create mode 100644 Documentation/filesystems/xfs-larp-state.txt diff --git a/Documentation/filesystems/xfs-larp-state.svg b/Documentation/f= ilesystems/xfs-larp-state.svg new file mode 100644 index 000000000000..d93078300d91 --- /dev/null +++ b/Documentation/filesystems/xfs-larp-state.svg @@ -0,0 +1 @@ +REMOTE_ADD= ADDREMOVEREPLACEOLD_REPLACEREMOVE_XATTRXFS_DAS_..._SET_RMTfind space for remote blocks<= rect fill=3D"#FEFECE" filter=3D"url(#fc2ynpqha1fpc)" height=3D"50.2656" rx= =3D"12.5" ry=3D"12.5" style=3D"stroke: #A80036; stroke-width: 1.5;" width= =3D"252" x=3D"204" y=3D"1090"/>XFS_DAS_..._AL= LOC_RMTallocate blocks and set remote valueXFS_DAS_SF_ADDadd attr to short= form forkXFS_DAS_LEAF_ADDadd attr to inode in leaf formXFS_DAS_NODE_ADDadd attr to node form= at attribute treeadd_entryXFS_DAS_SF_R= EMOVEremove attr from shortform forkXFS_DAS_LEAF_REMOVEremove attr from an= inode in leaf formXFS_DAS_NODE_REMOVEsetup for removal(attr exists and b= locks are valid)remove_entryXFS_DAS_..._REPLACEatomic INCOMPLETE flag flipXFS_DAS_..._REMOVE_OL= Drestore original xattr state for removeinvalidate old xattr= XFS_DAS_..._REM= OVE_RMTremove remote attribute blocksXFS_DAS_..._REMOVE_ATTRremove attribute na= me from leaf/node blockXFS_DAS_DONEshort formleaf formnode formFull or too largefull or to= o largeremote xattrremote xattr<= path d=3D"M1064.01,323.32 C1093.31,336.87 1242.6,405.91 1286.71,426.32 " fi= ll=3D"none" id=3D"remove_entry-remove_form" style=3D"stroke: #A80036; strok= e-width: 1.0;"/>short formleaf for= mnode form= larp disablelarp enabledRemote xattrLoc= al xattrOperation Complete<= !--link XFS_DAS_..._REPLACE to add_done-->LARP disabled REPLACESuccessSuc= cessSuccessSuccessOperation CompleteLARP enabled REPLACESuccessSuccessSuccess<= text fill=3D"#000000" font-family=3D"sans-serif" font-size=3D"13" lengthAdj= ust=3D"spacingAndGlyphs" textLength=3D"53" x=3D"1179" y=3D"1056.0669">Succe= ssadd new= remove existingreplace existing \ No newline at end of file diff --git a/Documentation/filesystems/xfs-larp-state.txt b/Documentation/f= ilesystems/xfs-larp-state.txt new file mode 100644 index 000000000000..7a54773665a6 --- /dev/null +++ b/Documentation/filesystems/xfs-larp-state.txt @@ -0,0 +1,103 @@ +/' +PlantUML documentation: +Getting started - https://plantuml.com/starting +State diagram - https://plantuml.com/state-diagram +'/ + +@startuml + +state REMOTE_ADD { + XFS_DAS_..._SET_RMT : find space for remote blocks + XFS_DAS_..._ALLOC_RMT : allocate blocks and set remote value + + XFS_DAS_..._SET_RMT --> XFS_DAS_..._ALLOC_RMT +} + +state ADD { + XFS_DAS_SF_ADD : add attr to shortform fork + XFS_DAS_LEAF_ADD : add attr to inode in leaf form + XFS_DAS_NODE_ADD : add attr to node format attribute tree + + state add_entry <> + state add_form <> + add_entry --> add_form + add_form --> XFS_DAS_SF_ADD : short form + add_form --> XFS_DAS_LEAF_ADD : leaf form + add_form --> XFS_DAS_NODE_ADD : node form + + XFS_DAS_SF_ADD --> XFS_DAS_LEAF_ADD : Full or too large + XFS_DAS_LEAF_ADD --> XFS_DAS_NODE_ADD : full or too large + + XFS_DAS_LEAF_ADD --> XFS_DAS_..._SET_RMT : remote xattr + XFS_DAS_NODE_ADD --> XFS_DAS_..._SET_RMT : remote xattr +} + +state REMOVE { + XFS_DAS_SF_REMOVE : remove attr from shortform fork + XFS_DAS_LEAF_REMOVE : remove attr from an inode in leaf form + XFS_DAS_NODE_REMOVE : setup for removal + XFS_DAS_NODE_REMOVE : (attr exists and blocks are valid) + + state remove_entry <> + state remove_form <> + remove_entry --> remove_form + remove_form --> XFS_DAS_SF_REMOVE : short form + remove_form --> XFS_DAS_LEAF_REMOVE : leaf form + remove_form --> XFS_DAS_NODE_REMOVE : node form +} + +state REPLACE { + state replace_choice <> + replace_choice --> add_entry : larp disable + replace_choice --> remove_entry : larp enabled +} + + +state OLD_REPLACE { + XFS_DAS_..._REPLACE : atomic INCOMPLETE flag flip + XFS_DAS_..._REMOVE_OLD : restore original xattr state for remove + XFS_DAS_..._REMOVE_OLD : invalidate old xattr + + XFS_DAS_..._REPLACE --> XFS_DAS_..._REMOVE_OLD +} + +state REMOVE_XATTR { + XFS_DAS_..._REMOVE_RMT : remove remote attribute blocks + XFS_DAS_..._REMOVE_ATTR : remove attribute name from leaf/node block + + state remove_xattr_choice <> + remove_xattr_choice --> XFS_DAS_..._REMOVE_RMT : Remote xattr + remove_xattr_choice --> XFS_DAS_..._REMOVE_ATTR : Local xattr + + XFS_DAS_..._REMOVE_RMT --> XFS_DAS_..._REMOVE_ATTR +} + +state XFS_DAS_DONE { +} + +state add_done <> +add_done -down-> XFS_DAS_DONE : Operation Complete +add_done -up-> XFS_DAS_..._REPLACE : LARP disabled REPLACE +XFS_DAS_SF_ADD -down-> add_done : Success +XFS_DAS_LEAF_ADD -down-> add_done : Success +XFS_DAS_NODE_ADD -down-> add_done : Success +XFS_DAS_..._ALLOC_RMT -down-> add_done : Success + +state remove_done <> +remove_done -down-> XFS_DAS_DONE : Operation Complete +remove_done -up-> add_entry : LARP enabled REPLACE +XFS_DAS_SF_REMOVE -down-> remove_done : Success +XFS_DAS_LEAF_REMOVE -down-> remove_done : Success +XFS_DAS_NODE_REMOVE -down-> remove_done : Success +XFS_DAS_..._REMOVE_ATTR -down-> remove_done : Success + +XFS_DAS_..._REMOVE_OLD --> remove_xattr_choice +XFS_DAS_NODE_REMOVE --> remove_xattr_choice + +state set_choice <> +[*] --> set_choice +set_choice --> add_entry : add new +set_choice --> remove_entry : remove existing +set_choice --> replace_choice : replace existing +XFS_DAS_DONE --> [*] +@enduml --=20 2.25.1