dm raid: Remove empty if statement
[linux-2.6-microblaze.git] / lib / xarray.c
index 1d9fab7..e9e641d 100644 (file)
@@ -970,7 +970,7 @@ void xas_pause(struct xa_state *xas)
 
        xas->xa_node = XAS_RESTART;
        if (node) {
-               unsigned int offset = xas->xa_offset;
+               unsigned long offset = xas->xa_offset;
                while (++offset < XA_CHUNK_SIZE) {
                        if (!xa_is_sibling(xa_entry(xas->xa, node, offset)))
                                break;
@@ -1208,6 +1208,8 @@ void *xas_find_marked(struct xa_state *xas, unsigned long max, xa_mark_t mark)
                }
 
                entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset);
+               if (!entry && !(xa_track_free(xas->xa) && mark == XA_FREE_MARK))
+                       continue;
                if (!xa_is_node(entry))
                        return entry;
                xas->xa_node = xa_to_node(entry);
@@ -1836,10 +1838,11 @@ static bool xas_sibling(struct xa_state *xas)
        struct xa_node *node = xas->xa_node;
        unsigned long mask;
 
-       if (!node)
+       if (!IS_ENABLED(CONFIG_XARRAY_MULTI) || !node)
                return false;
        mask = (XA_CHUNK_SIZE << node->shift) - 1;
-       return (xas->xa_index & mask) > (xas->xa_offset << node->shift);
+       return (xas->xa_index & mask) >
+               ((unsigned long)xas->xa_offset << node->shift);
 }
 
 /**