summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMing Lei <ming.lei@redhat.com>2021-01-22 03:33:09 +0100
committerMartin K. Petersen <martin.petersen@oracle.com>2021-03-04 23:36:59 +0100
commitcbb9950b41dd9dfb7c2be3429ba09f83b8b1ff98 (patch)
tree46d08ab612aa0177990a792f8d82fbfba319b7fb /lib
parentscsi: sbitmap: Move allocation hint into sbitmap (diff)
downloadlinux-cbb9950b41dd9dfb7c2be3429ba09f83b8b1ff98.tar.xz
linux-cbb9950b41dd9dfb7c2be3429ba09f83b8b1ff98.zip
scsi: sbitmap: Export sbitmap_weight
SCSI's .device_busy will be converted to sbitmap and sbitmap_weight is needed. Export the helper. The only existing user of sbitmap_weight() uses it to find out how many bits are set and not cleared. Align sbitmap_weight() meaning with this usage model. Link: https://lore.kernel.org/r/20210122023317.687987-6-ming.lei@redhat.com Cc: Omar Sandoval <osandov@fb.com> Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Sumanesh Samanta <sumanesh.samanta@broadcom.com> Cc: Ewan D. Milne <emilne@redhat.com> Tested-by: Sumanesh Samanta <sumanesh.samanta@broadcom.com> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbitmap.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/sbitmap.c b/lib/sbitmap.c
index e395435654aa..73da26ad021e 100644
--- a/lib/sbitmap.c
+++ b/lib/sbitmap.c
@@ -334,20 +334,21 @@ static unsigned int __sbitmap_weight(const struct sbitmap *sb, bool set)
return weight;
}
-static unsigned int sbitmap_weight(const struct sbitmap *sb)
+static unsigned int sbitmap_cleared(const struct sbitmap *sb)
{
- return __sbitmap_weight(sb, true);
+ return __sbitmap_weight(sb, false);
}
-static unsigned int sbitmap_cleared(const struct sbitmap *sb)
+unsigned int sbitmap_weight(const struct sbitmap *sb)
{
- return __sbitmap_weight(sb, false);
+ return __sbitmap_weight(sb, true) - sbitmap_cleared(sb);
}
+EXPORT_SYMBOL_GPL(sbitmap_weight);
void sbitmap_show(struct sbitmap *sb, struct seq_file *m)
{
seq_printf(m, "depth=%u\n", sb->depth);
- seq_printf(m, "busy=%u\n", sbitmap_weight(sb) - sbitmap_cleared(sb));
+ seq_printf(m, "busy=%u\n", sbitmap_weight(sb));
seq_printf(m, "cleared=%u\n", sbitmap_cleared(sb));
seq_printf(m, "bits_per_word=%u\n", 1U << sb->shift);
seq_printf(m, "map_nr=%u\n", sb->map_nr);