return test_bit(SB_NR_TO_BIT(sb, bitnr), __sbitmap_word(sb, bitnr));
 }
 
+static inline int sbitmap_calculate_shift(unsigned int depth)
+{
+       int     shift = ilog2(BITS_PER_LONG);
+
+       /*
+        * If the bitmap is small, shrink the number of bits per word so
+        * we spread over a few cachelines, at least. If less than 4
+        * bits, just forget about it, it's not going to work optimally
+        * anyway.
+        */
+       if (depth >= 4) {
+               while ((4U << shift) > depth)
+                       shift--;
+       }
+
+       return shift;
+}
+
 /**
  * sbitmap_show() - Dump &struct sbitmap information to a &struct seq_file.
  * @sb: Bitmap to show.
 
        unsigned int bits_per_word;
        unsigned int i;
 
-       if (shift < 0) {
-               shift = ilog2(BITS_PER_LONG);
-               /*
-                * If the bitmap is small, shrink the number of bits per word so
-                * we spread over a few cachelines, at least. If less than 4
-                * bits, just forget about it, it's not going to work optimally
-                * anyway.
-                */
-               if (depth >= 4) {
-                       while ((4U << shift) > depth)
-                               shift--;
-               }
-       }
+       if (shift < 0)
+               shift = sbitmap_calculate_shift(depth);
+
        bits_per_word = 1U << shift;
        if (bits_per_word > BITS_PER_LONG)
                return -EINVAL;