// SPDX-License-Identifier: GPL-2.0/* * Copyright (c) 2000-2005 Silicon Graphics, Inc. * All Rights Reserved. */#include"xfs.h"#include"xfs_fs.h"#include"xfs_shared.h"#include"xfs_format.h"#include"xfs_log_format.h"#include"xfs_trans_resv.h"#include"xfs_mount.h"#include"xfs_defer.h"#include"xfs_da_format.h"#include"xfs_da_btree.h"#include"xfs_attr_sf.h"#include"xfs_inode.h"#include"xfs_trans.h"#include"xfs_bmap.h"#include"xfs_bmap_btree.h"#include"xfs_attr.h"#include"xfs_attr_leaf.h"#include"xfs_attr_remote.h"#include"xfs_quota.h"#include"xfs_trans_space.h"#include"xfs_trace.h"/* * xfs_attr.c * * Provide the external interfaces to manage attribute lists. *//*======================================================================== * Function prototypes for the kernel. *========================================================================*//* * Internal routines when attribute list fits inside the inode. */STATICintxfs_attr_shortform_addname(xfs_da_args_t*args);/* * Internal routines when attribute list is one block. */STATICintxfs_attr_leaf_get(xfs_da_args_t*args);STATICintxfs_attr_leaf_addname(xfs_da_args_t*args);STATICintxfs_attr_leaf_removename(xfs_da_args_t*args);STATICintxfs_attr_leaf_hasname(structxfs_da_args*args,structxfs_buf**bp);/* * Internal routines when attribute list is more than one block. */STATICintxfs_attr_node_get(xfs_da_args_t*args);STATICintxfs_attr_node_addname(xfs_da_args_t*args);STATICintxfs_attr_node_removename(xfs_da_args_t*args);STATICintxfs_attr_node_hasname(xfs_da_args_t*args,structxfs_da_state**state);STATICintxfs_attr_fillstate