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 D6746C433F5 for ; Wed, 5 Oct 2022 23:38:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229583AbiJEXiT (ORCPT ); Wed, 5 Oct 2022 19:38:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229453AbiJEXiS (ORCPT ); Wed, 5 Oct 2022 19:38:18 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7A6C77287D for ; Wed, 5 Oct 2022 16:38:15 -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 295NTLqF029997 for ; Wed, 5 Oct 2022 23:38:15 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=njbhzD+mxoIRjK62cC+IqDglVM/TMfqbl6AngaGQFJ8=; b=kLEH9o3mOlF9rlEBDSjBdbe7UstAvkaZM5bzm8ONh1PlUP18eA6yA8B59AKYWVRJZX+q QTKAxRHupAGp3XnQugnZMRweZA+v7D8vr0ejBFt0kMdVT91ytmvbEjB7ASYYwM7uBoZk 6IJsBeMVHtz2VaLbKcfZrPOoBkT7di18GM2z/WExHxbgLA9uOkN3hVj2r94GCWJKghp+ BhlIyNUk5kZgIR4N/d7g5YZqCb+Jse9LwqdXJJ8GUwDZwpvzuij8Xi32jxFF9hoVcfa4 rruV3yjqDFqRHjZjQWNe5bhdRPRSk0Ps0plTDUlTeHK5tdYwXXB9yp5mxIzjPNn7Xpl+ GA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jxe3ttww8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 05 Oct 2022 23:38:14 +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 295KVCFZ010324 for ; Wed, 5 Oct 2022 23:38:13 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2047.outbound.protection.outlook.com [104.47.56.47]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3jxc0bu8bg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 05 Oct 2022 23:38:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aCFWTLbKtKclsoZL1v2vEBZpns4IfP/+hYriP5VFiBHQ5rhIpAjV5eXfpl0QUaaaHwI03dbv9foBfuC38a+iON9Tx8cfN9xzv7vVnkpiwp6XtUun4sZbrMLwTeTGFv7NRKnWfpSbg4ouW7sIV+RozWN2Uwsx4hv5W8pGYwRXUgXzQhVxXtmHDzDK01V8ATkB45TN7N5KGvckJGrdUBU3hg80TJTJwbN4YyRKPC3IwFeUhUq6JndeHnnfWjhvIJg8pzQ+Pa+V28C/IM/tarQBtrFT2KUsxVMox+25+fyG5wX65pg3TDYGV8BgyqoHyIt9gvO9m4cr3wUGAuwyuqQ4Mg== 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=njbhzD+mxoIRjK62cC+IqDglVM/TMfqbl6AngaGQFJ8=; b=ocETbpsenB4vj8Z626q7wrn89KUl8yV03f8RVyeta01APuinDiakkXUn9yxXiV7hquIo429mJ2Ye7netPjiURRWYuDY0/nlhKx6/L66ROhk5SYYBN1LEIn/jBhEVDRNHEH3eSoAY2jAxdAl8T0hZq9teP2WpMW7y/FKqXdBDmLpwNhuj5Q/IETs7LY9zTWG4LmWaM4nLAv+0bF3V2r56reJCY0pze4IaUmgCEZFRGgs6rpgzGsDPCYC5Fvo8T98T1HJ9whwZZdEdgtobyB1f7HUB3v7MU8YPTjjwr6tPaK/ag3VKWCzP+heUA3xT+0ng4xcjXtKAQo1h61SWo/P3zQ== 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=njbhzD+mxoIRjK62cC+IqDglVM/TMfqbl6AngaGQFJ8=; b=PI5MI7+6IRtWKicIDj5brsG92fBomq2Y5C9YfeC4vlTAwq4Q/5PiDxG7PhJp/6VU1JSlJzvySKTdH1kTsUFBhOEY2q/bcyplc3MNddDgBXkzZTCjIhVolMcrrHpACv+0nEtCoI1V0ddxvL2TBbclBB/ybPiQgROv6koGfT8gvOA= Received: from DS7PR10MB5327.namprd10.prod.outlook.com (2603:10b6:5:3b1::15) by MW4PR10MB6677.namprd10.prod.outlook.com (2603:10b6:303:22f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.17; Wed, 5 Oct 2022 23:38:03 +0000 Received: from DS7PR10MB5327.namprd10.prod.outlook.com ([fe80::8b4:399f:cd03:3384]) by DS7PR10MB5327.namprd10.prod.outlook.com ([fe80::8b4:399f:cd03:3384%5]) with mapi id 15.20.5676.032; Wed, 5 Oct 2022 23:38:03 +0000 From: Catherine Hoang To: linux-xfs@vger.kernel.org Subject: [PATCH v3] xfs: add LARP state transition diagram Date: Wed, 5 Oct 2022 16:38:01 -0700 Message-Id: <20221005233801.1731-1-catherine.hoang@oracle.com> X-Mailer: git-send-email 2.32.0 (Apple Git-132) Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: BY5PR20CA0035.namprd20.prod.outlook.com (2603:10b6:a03:1f4::48) To DS7PR10MB5327.namprd10.prod.outlook.com (2603:10b6:5:3b1::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR10MB5327:EE_|MW4PR10MB6677:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a7396f3-07db-4257-4e2c-08daa72aa592 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eruZJrHQBZtc2et1Z3XhZZ5gx5KCnuYC1DMcl2fZbbRxPdYzTxhKI7yvDhp6eoEqdbYI8nQexSpJfC77E6+raxiboq0L3SNsdQWaqmqEJt0hLQkde65dPCTxK/eox917XujmbsiPDULc8B/yYftAeyeNCdrl+tWbgeyGGQDxVM3jyWv+PukVvpuS4qspw0ZK79CJKe+W/O3vxIBmpFxIrUWHmmpBL/hsIpXtDUoIcgtKmWqVtZF2L52VRXg65p2hZcpnZwFCSecnW+eorLpLP8NwzxsF1rs5ZNnBxKHI6ZzZseZgzads2xdI0OwQCdMLITDuX9tH/mX1ZYirN6fV99l2SY7Q1czVJq13+U0P65MhHeAkih3Avq1FSWKr+nFYZLGRjnxNoShSTgW1HRrPTlvnGj7RLcwBDduL2cWcBWJVc6r2EY3eTQ5x7/ERPz79jSdMNCQYfUms3JwlG02MDrTmTltvZQd/06b9PCEe5xrWKphEYDl6KGfDPzhaq4iNRE06NhDbDio87dAYj7XQx+2UFVoJkwpFJU/xVXXIEjuREmFxzPfjuzBsJDpFY1HGM4CfVnequ7zBuaNTU6YdKFRSZTu9Q6QEd/wZ9X0DxE8uQpLycb/hTTGUtUf2bJg2o7cjlFyN7WcwOqMi920ZFqenK9VY84eUwUPrvsU1BuYQeYwsPq1wWQtPQjt6cARubCCOzWlk3a3U6he+DjoetMM2D3t4bNTl5J5kV2YPUZVCwb7eN324nVbYuqOFLKbAAvBFptOR+QBr0beQAF3jhg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR10MB5327.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(396003)(376002)(136003)(39860400002)(366004)(451199015)(36756003)(40140700001)(2906002)(5660300002)(44832011)(30864003)(186003)(83380400001)(1076003)(38100700002)(2616005)(6512007)(6506007)(6486002)(478600001)(66946007)(86362001)(6916009)(966005)(66556008)(66476007)(8676002)(316002)(8936002)(41300700001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?boi2HhdNNrtNmja/ViFTdutu70/gYaRb4dInN+S0z2tPwyg6jpbUa4ZyxdYk?= =?us-ascii?Q?kHYnzicOGM8GjsaylV4d0EVu/Br4wJkzoVzvZkREaTPSS0RCaksxT6nihDYs?= =?us-ascii?Q?yAwx4NyTMGIr5zL330rFFL4cog+Gk4tWsZowbfvGKw9YnFj/ChJ/bUokmGa/?= =?us-ascii?Q?6uz8NsWRIHksFx1hpRf22lzsTVzzmEfvHLJ6UoX7d4lGF0lG/RiCIYeAa5WF?= =?us-ascii?Q?fEKFrpCVD7bbFAWzDVGvuiZOR030qhfvUx4y25UQV69fnJc8ioE1I7y0FnKz?= =?us-ascii?Q?lhMtHLxsefgbOGV1BVIXPeQeQVD5VCkx94iVrV3+k6lFNQpQFZUWKz+63z54?= =?us-ascii?Q?BPClb4SFXEo8wvZL1hyBzzBTc912dB61MlxWxyds3WBuMY/IA+LtfVzXOyEr?= =?us-ascii?Q?DhUj2eO4eSxV8qjs8SZZBFM1ltZUVOsRJrFkjgbwwAvR0h5tc7OGfCGLB+hL?= =?us-ascii?Q?1fVfFx2V8QqniORg41QKWuJm2mHYjSijYxRneXhV+bK1FfcOUCtfMBsi2KTp?= =?us-ascii?Q?AvR3MwKEgV2w17JaVPmHst5KgPaMi3IpkXgsDsAHHUz9QVlVS6aqN7YoWDjz?= =?us-ascii?Q?RdGiV0a9b56Cxj2/wEXWeDIJuDyF1YaXld+8NPy616UDXwq6IHUX5cwc/b0C?= =?us-ascii?Q?gJLqDs88/ZDGMFQJl6F9lyv/ponbLeWSeBjSYBoGqenmKZoZdX6AD8IiwLRt?= =?us-ascii?Q?LiN9NwbfPq4Th6Kkr/qVX3dAwifI+uBecvxVMBB2SY/EJTn/t+t3VRsMzsYX?= =?us-ascii?Q?odeIjUBXkH5KIPGS4vM7gnuKCZSO7U5a/dTOw4NT2TI5cdeuA6fMKRY3xrZC?= =?us-ascii?Q?MFUqNcIOdv7z5zCWioGhVK60/GeGZKNHC6WGhNqmyenXepY8tExde+CcA2mT?= =?us-ascii?Q?rXmgRJtLEl5aWIe4vFh0452E9Tkei7y7KlWqZJvvz0N7Np2PasDwVn9c38yS?= =?us-ascii?Q?i5i/NIQU/nwSz2W0FBYXHC6AqytVKEjc+23jc3aUML/dlIxK3CWPel20lo7L?= =?us-ascii?Q?2vLkgaTFEow3C8C5OirJEp6QRyAeEykdfgJaYZBiq7kElmug4sygiCxkTAnw?= =?us-ascii?Q?wbvCaFj7J8lDg1swfCRWG4/4Ch1hTegcQNlXITrbPVG6NiutLCO2y4NjFCMn?= =?us-ascii?Q?+R0LKtd+1bSI8wkg6Ui4lh8Jo2RGUCMCIjxyVd/6dyr09voV+avAGtLCsY3d?= =?us-ascii?Q?Qy7GFNOkaXEWNHXLpkFj/igE86pIqYAI7ayJgmUaZqV5Ua866N3tkJayBODC?= =?us-ascii?Q?9Dvl0mN5zIIle7WfldmmEYWMwcK1TXFKE+RDZrfbwE+2PLpy530SbI+MdqqO?= =?us-ascii?Q?r6nQMRUe8QdXuEEzGG75h/PdEI+aFWamPUNkQUNVqEi8oQHT7gCBvKCvnNMs?= =?us-ascii?Q?zrn2P1Zpgdf4mdZN1j3CcZZj0Qk9RXvT9zp9R/Bee2Dft0ZKlG9m9zioOjrn?= =?us-ascii?Q?PpU5lKvf394I238mQVAfiSD1BOwNCTqbo5kztYOdNBi3JHpO9kPPN+cmcHJ8?= =?us-ascii?Q?SUgEz20qOuGjVCkix92Q7MgmrO0SS7kqZOOuFZUyvEv/Ix6CIGBZh0fYy1qj?= =?us-ascii?Q?gm+RxgVDVJs2NC6VxqNrVOQbTJWhMD1aibFxvZMlM++4fDtFrZOmq4GUubGt?= =?us-ascii?Q?LUAzBagasUeIUiJIKpQ8YdxTAyT4o/nKpC+kcEXPiCsUktx2zTg1wYhdnWWF?= =?us-ascii?Q?n1SXlQ=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: cbRl04K0ChgNoMVcWWlnlqPcgSo3YgG8b2DOpdvihJt/voeMxArDCsIBrM6uiBn4bWZNO5lsnkAL/ExepwGBHPUAyKTAbqWXs5arKo5g3/mICn1bmTvECKKkDS2R4oYJXBKvWULA2wDnAJh93Fnh610vCQlbYgBCUaAK30xmTZAW/97x/XPODvuwjWm+F/JbEnxjkvWMRThi64K9nEaliayMw7smV1uWIqxADV3LeBBxtX0c6u4lSS3bAm4vBBCzphU75GylBd1+XtlLkDHJwCCVsZXjVrGwCYZnAKf7xSr0Lu6cBsK01vUbe20MTKgg1l/ThC8DSiZM5dmLXIF+NVPHPyZfNArfcak1Vxlk6JWsG7/A4EqJj7RjRqNeIYLzxRbkmBbI6kayJtDGvwMUmOIccxaYUbwZ01bgZmTzK6nVEnde2tBs1YbD/NitTKo5SWF2a2SOIEtv0NR3HGNnD/dNMPcqemdmQvsIYAQRwYOjIGnLprnMf62twT+kXVEmJ6mA/UPfL+SII13ASXz0jTcK/YUtvGqshKYj0THaq0Tt2BEet2cTR8J5ojdPJv7MZ/IFXziBkP4ryGtZ7Y9jxfaSMqLqqoVkub6/sdm1skysOyaV59uZlHcvWHw4n7ZOKsD6HR/LGzrqtG8Hl9eCKTR8ILSyXU9yjvPVbGIVy57ftIaIzoznxI1C9uugZj0VHM72/5dEoOuhU+WcDvrN2vaUVqsUIKFTm55XwNhF9psMotRZiIrBCze8bSgPz+p4H58k+gS0f/yo2cXIkmMJQg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a7396f3-07db-4257-4e2c-08daa72aa592 X-MS-Exchange-CrossTenant-AuthSource: DS7PR10MB5327.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Oct 2022 23:38:03.5890 (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: G6Ym7IXoTjmrjJuaQBlLMzWlIxaikPf7ECQZsnax65ZaO6icIVxoBW4v+ApnmToMwX3VRTMEa8q+RVl6plSYqqhTf78eIsA7hqe5L5y/JeA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR10MB6677 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-10-05_05,2022-10-05_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=999 malwarescore=0 bulkscore=0 mlxscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2210050146 X-Proofpoint-ORIG-GUID: 2FLIjnYN2gOvJRc7H4kzLHLB06SifO4C X-Proofpoint-GUID: 2FLIjnYN2gOvJRc7H4kzLHLB06SifO4C 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 Reviewed-by: Allison Henderson --- Documentation/filesystems/xfs-larp-state.pu | 103 ++++++++ Documentation/filesystems/xfs-larp-state.svg | 253 +++++++++++++++++++ 2 files changed, 356 insertions(+) create mode 100644 Documentation/filesystems/xfs-larp-state.pu create mode 100644 Documentation/filesystems/xfs-larp-state.svg diff --git a/Documentation/filesystems/xfs-larp-state.pu b/Documentation/filesystems/xfs-larp-state.pu new file mode 100644 index 000000000000..7a54773665a6 --- /dev/null +++ b/Documentation/filesystems/xfs-larp-state.pu @@ -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 diff --git a/Documentation/filesystems/xfs-larp-state.svg b/Documentation/filesystems/xfs-larp-state.svg new file mode 100644 index 000000000000..860fe2b59093 --- /dev/null +++ b/Documentation/filesystems/xfs-larp-state.svg @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + REMOTE_ADD + + + + + ADD + + + + + REMOVE + + + + + REPLACE + + + + + OLD_REPLACE + + + + + REMOVE_XATTR + + + XFS_DAS_..._SET_RMT + find space for remote blocks + + + XFS_DAS_..._ALLOC_RMT + allocate blocks and set remote value + + + 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 + add_entry + + + + + 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 + (attr exists and blocks are valid) + remove_entry + + + + + + XFS_DAS_..._REPLACE + atomic INCOMPLETE flag flip + + + XFS_DAS_..._REMOVE_OLD + restore original xattr state for remove + invalidate old xattr + + + XFS_DAS_..._REMOVE_RMT + remove remote attribute blocks + + + XFS_DAS_..._REMOVE_ATTR + remove attribute name from leaf/node block + + + + + + + + + + XFS_DAS_DONE + + + + + + + + + + short form + + + + leaf form + + + + node form + + + + Full or too large + + + + full or too large + + + + remote xattr + + + + remote xattr + + + + + + + short form + + + + leaf form + + + + node form + + + + larp disable + + + + larp enabled + + + + + + + Remote xattr + + + + Local xattr + + + + + + + Operation Complete + + + + LARP disabled REPLACE + + + + Success + + + + Success + + + + Success + + + + Success + + + + Operation Complete + + + + LARP enabled REPLACE + + + + Success + + + + Success + + + + Success + + + + Success + + + + + + + + + + + + + add new + + + + remove existing + + + + replace existing + + + + + -- 2.25.1