[SCSI] hpsa: use find_first_zero_bit
Use find_first_zero_bit to find the first cleared bit in a memory region. This also includes the following minor changes. - Use bitmap_zero - Reduce unnecessary atomic bitops usage Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Acked-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
de13e9654e
commit
263d9401a3
|
@ -579,21 +579,19 @@ static int hpsa_find_target_lun(struct ctlr_info *h,
|
||||||
int i, found = 0;
|
int i, found = 0;
|
||||||
DECLARE_BITMAP(lun_taken, HPSA_MAX_DEVICES);
|
DECLARE_BITMAP(lun_taken, HPSA_MAX_DEVICES);
|
||||||
|
|
||||||
memset(&lun_taken[0], 0, HPSA_MAX_DEVICES >> 3);
|
bitmap_zero(lun_taken, HPSA_MAX_DEVICES);
|
||||||
|
|
||||||
for (i = 0; i < h->ndevices; i++) {
|
for (i = 0; i < h->ndevices; i++) {
|
||||||
if (h->dev[i]->bus == bus && h->dev[i]->target != -1)
|
if (h->dev[i]->bus == bus && h->dev[i]->target != -1)
|
||||||
set_bit(h->dev[i]->target, lun_taken);
|
__set_bit(h->dev[i]->target, lun_taken);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < HPSA_MAX_DEVICES; i++) {
|
i = find_first_zero_bit(lun_taken, HPSA_MAX_DEVICES);
|
||||||
if (!test_bit(i, lun_taken)) {
|
if (i < HPSA_MAX_DEVICES) {
|
||||||
/* *bus = 1; */
|
/* *bus = 1; */
|
||||||
*target = i;
|
*target = i;
|
||||||
*lun = 0;
|
*lun = 0;
|
||||||
found = 1;
|
found = 1;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return !found;
|
return !found;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue