xfs: collapse cases in xfs_attr3_leaf_list_int
authorEric Sandeen <sandeen@sandeen.net>
Tue, 5 Apr 2016 21:57:47 +0000 (07:57 +1000)
committerDave Chinner <david@fromorbit.com>
Tue, 5 Apr 2016 21:57:47 +0000 (07:57 +1000)
Consolidate the 2 calls to ->put_listent in
xfs_attr3_leaf_list_int(), by setting up name, namelen, and
valuelen for the local vs remote cases, then call ->put_listent
and do the error handling all in one spot.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
fs/xfs/xfs_attr_list.c

index cbf4f5d..d25f26b 100644 (file)
@@ -412,6 +412,9 @@ xfs_attr3_leaf_list_int(
         */
        retval = 0;
        for (; i < ichdr.count; entry++, i++) {
+               char *name;
+               int namelen, valuelen;
+
                if (be32_to_cpu(entry->hashval) != cursor->hashval) {
                        cursor->hashval = be32_to_cpu(entry->hashval);
                        cursor->offset = 0;
@@ -421,26 +424,23 @@ xfs_attr3_leaf_list_int(
                        continue;               /* skip incomplete entries */
 
                if (entry->flags & XFS_ATTR_LOCAL) {
-                       xfs_attr_leaf_name_local_t *name_loc =
-                               xfs_attr3_leaf_name_local(leaf, i);
-
-                       retval = context->put_listent(context,
-                                               entry->flags,
-                                               name_loc->nameval,
-                                               (int)name_loc->namelen,
-                                               be16_to_cpu(name_loc->valuelen));
-               } else {
-                       xfs_attr_leaf_name_remote_t *name_rmt =
-                               xfs_attr3_leaf_name_remote(leaf, i);
+                       xfs_attr_leaf_name_local_t *name_loc;
 
-                       int valuelen = be32_to_cpu(name_rmt->valuelen);
+                       name_loc = xfs_attr3_leaf_name_local(leaf, i);
+                       name = name_loc->nameval;
+                       namelen = name_loc->namelen;
+                       valuelen = be16_to_cpu(name_loc->valuelen);
+               } else {
+                       xfs_attr_leaf_name_remote_t *name_rmt;
 
-                       retval = context->put_listent(context,
-                                               entry->flags,
-                                               name_rmt->name,
-                                               (int)name_rmt->namelen,
-                                               valuelen);
+                       name_rmt = xfs_attr3_leaf_name_remote(leaf, i);
+                       name = name_rmt->name;
+                       namelen = name_rmt->namelen;
+                       valuelen = be32_to_cpu(name_rmt->valuelen);
                }
+
+               retval = context->put_listent(context, entry->flags,
+                                             name, namelen, valuelen);
                if (retval)
                        break;
                if (context->seen_enough)