[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
1 changed files with 8 additions and 10 deletions
|
@ -579,21 +579,19 @@ static int hpsa_find_target_lun(struct ctlr_info *h,
|
|||
int i, found = 0;
|
||||
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++) {
|
||||
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++) {
|
||||
if (!test_bit(i, lun_taken)) {
|
||||
/* *bus = 1; */
|
||||
*target = i;
|
||||
*lun = 0;
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
i = find_first_zero_bit(lun_taken, HPSA_MAX_DEVICES);
|
||||
if (i < HPSA_MAX_DEVICES) {
|
||||
/* *bus = 1; */
|
||||
*target = i;
|
||||
*lun = 0;
|
||||
found = 1;
|
||||
}
|
||||
return !found;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue