@@ -1064,19 +1064,14 @@ xfs_attr_shortform_addname(
struct xfs_da_args *args)
{
int newsize, forkoff;
- int error;
trace_xfs_attr_sf_addname(args);
- error = xfs_attr_shortform_lookup(args);
- switch (error) {
- case -ENOATTR:
- if (args->op_flags & XFS_DA_OP_REPLACE)
- return error;
- break;
- case -EEXIST:
+ if (xfs_attr_sf_findname(args)) {
+ int error;
+
if (!(args->op_flags & XFS_DA_OP_REPLACE))
- return error;
+ return -EEXIST;
error = xfs_attr_sf_removename(args);
if (error)
@@ -1089,11 +1084,9 @@ xfs_attr_shortform_addname(
* around.
*/
args->op_flags &= ~XFS_DA_OP_REPLACE;
- break;
- case 0:
- break;
- default:
- return error;
+ } else {
+ if (args->op_flags & XFS_DA_OP_REPLACE)
+ return -ENOATTR;
}
if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||
@@ -834,30 +834,6 @@ xfs_attr_sf_removename(
return 0;
}
-/*
- * Look up a name in a shortform attribute list structure.
- */
-/*ARGSUSED*/
-int
-xfs_attr_shortform_lookup(
- struct xfs_da_args *args)
-{
- struct xfs_ifork *ifp = &args->dp->i_af;
- struct xfs_attr_shortform *sf = ifp->if_data;
- struct xfs_attr_sf_entry *sfe;
- int i;
-
- ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
- sfe = &sf->list[0];
- for (i = 0; i < sf->hdr.count;
- sfe = xfs_attr_sf_nextentry(sfe), i++) {
- if (xfs_attr_match(args, sfe->namelen, sfe->nameval,
- sfe->flags))
- return -EEXIST;
- }
- return -ENOATTR;
-}
-
/*
* Retrieve the attribute value and length.
*
@@ -47,7 +47,6 @@ struct xfs_attr3_icleaf_hdr {
*/
void xfs_attr_shortform_create(struct xfs_da_args *args);
void xfs_attr_shortform_add(struct xfs_da_args *args, int forkoff);
-int xfs_attr_shortform_lookup(struct xfs_da_args *args);
int xfs_attr_shortform_getvalue(struct xfs_da_args *args);
int xfs_attr_shortform_to_leaf(struct xfs_da_args *args);
int xfs_attr_sf_removename(struct xfs_da_args *args);