u32 num;
u32 ei_lba;
int ret;
- unsigned long iflags;
u64 lba;
struct sdeb_store_info *sip = devip2sip(devip);
rwlock_t *macc_lckp = sip ? &sip->macc_lck : &sdeb_fake_rw_lck;
return check_condition_result;
}
- read_lock_irqsave(macc_lckp, iflags);
+ read_lock(macc_lckp);
/* DIX + T10 DIF */
if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) {
int prot_ret = prot_verify_read(scp, lba, num, ei_lba);
if (prot_ret) {
- read_unlock_irqrestore(macc_lckp, iflags);
+ read_unlock(macc_lckp);
mk_sense_buffer(scp, ABORTED_COMMAND, 0x10, prot_ret);
return illegal_condition_result;
}
}
ret = do_device_access(sip, scp, 0, lba, num, false);
- read_unlock_irqrestore(macc_lckp, iflags);
+ read_unlock(macc_lckp);
if (unlikely(ret == -1))
return DID_ERROR << 16;
u32 num;
u32 ei_lba;
int ret;
- unsigned long iflags;
u64 lba;
struct sdeb_store_info *sip = devip2sip(devip);
rwlock_t *macc_lckp = sip ? &sip->macc_lck : &sdeb_fake_rw_lck;
ret = check_device_access_params(scp, lba, num, true);
if (ret)
return ret;
- write_lock_irqsave(macc_lckp, iflags);
+ write_lock(macc_lckp);
/* DIX + T10 DIF */
if (unlikely(sdebug_dix && scsi_prot_sg_count(scp))) {
int prot_ret = prot_verify_write(scp, lba, num, ei_lba);
if (prot_ret) {
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
mk_sense_buffer(scp, ILLEGAL_REQUEST, 0x10, prot_ret);
return illegal_condition_result;
}
ret = do_device_access(sip, scp, 0, lba, num, true);
if (unlikely(scsi_debug_lbp()))
map_region(sip, lba, num);
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
if (unlikely(-1 == ret))
return DID_ERROR << 16;
else if (unlikely(sdebug_verbose &&
u32 lb_size = sdebug_sector_size;
u32 ei_lba;
u64 lba;
- unsigned long iflags;
int ret, res;
bool is_16;
static const u32 lrd_size = 32; /* + parameter list header size */
goto err_out;
}
- write_lock_irqsave(macc_lckp, iflags);
+ write_lock(macc_lckp);
sg_off = lbdof_blen;
/* Spec says Buffer xfer Length field in number of LBs in dout */
cum_lb = 0;
}
ret = 0;
err_out_unlock:
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
err_out:
kfree(lrdp);
return ret;
static int resp_write_same(struct scsi_cmnd *scp, u64 lba, u32 num,
u32 ei_lba, bool unmap, bool ndob)
{
- unsigned long iflags;
unsigned long long i;
u64 block, lbaa;
u32 lb_size = sdebug_sector_size;
if (ret)
return ret;
- write_lock_irqsave(macc_lckp, iflags);
+ write_lock(macc_lckp);
if (unmap && scsi_debug_lbp()) {
unmap_region(sip, lba, num);
ret = fetch_to_dev_buffer(scp, fs1p, lb_size);
if (-1 == ret) {
- write_unlock_irqrestore(&sip->macc_lck, iflags);
+ write_unlock(&sip->macc_lck);
return DID_ERROR << 16;
} else if (sdebug_verbose && !ndob && (ret < lb_size))
sdev_printk(KERN_INFO, scp->device,
if (scsi_debug_lbp())
map_region(sip, lba, num);
out:
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
return 0;
}
u32 dnum;
u32 lb_size = sdebug_sector_size;
u8 num;
- unsigned long iflags;
int ret;
int retval = 0;
return check_condition_result;
}
- write_lock_irqsave(macc_lckp, iflags);
+ write_lock(macc_lckp);
ret = do_dout_fetch(scp, dnum, arr);
if (ret == -1) {
if (scsi_debug_lbp())
map_region(sip, lba, num);
cleanup:
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
kfree(arr);
return retval;
}
rwlock_t *macc_lckp = sip ? &sip->macc_lck : &sdeb_fake_rw_lck;
unsigned int i, payload_len, descriptors;
int ret;
- unsigned long iflags;
-
if (!scsi_debug_lbp())
return 0; /* fib and say its done */
desc = (void *)&buf[8];
- write_lock_irqsave(macc_lckp, iflags);
+ write_lock(macc_lckp);
for (i = 0 ; i < descriptors ; i++) {
unsigned long long lba = get_unaligned_be64(&desc[i].lba);
ret = 0;
out:
- write_unlock_irqrestore(macc_lckp, iflags);
+ write_unlock(macc_lckp);
kfree(buf);
return ret;
int ret, j;
u32 vnum, a_num, off;
const u32 lb_size = sdebug_sector_size;
- unsigned long iflags;
u64 lba;
u8 *arr;
u8 *cmd = scp->cmnd;
return check_condition_result;
}
/* Not changing store, so only need read access */
- read_lock_irqsave(macc_lckp, iflags);
+ read_lock(macc_lckp);
ret = do_dout_fetch(scp, a_num, arr);
if (ret == -1) {
goto cleanup;
}
cleanup:
- read_unlock_irqrestore(macc_lckp, iflags);
+ read_unlock(macc_lckp);
kfree(arr);
return ret;
}
cmnd->result = pfp != NULL ? pfp(cmnd, devip) : 0;
if (cmnd->result & SDEG_RES_IMMED_MASK) {
- /*
- * This is the F_DELAY_OVERR case. No delay.
- */
cmnd->result &= ~SDEG_RES_IMMED_MASK;
delta_jiff = ndelay = 0;
}
pfp = r_pfp; /* if leaf function ptr NULL, try the root's */
fini:
- if (F_DELAY_OVERR & flags)
+ if (F_DELAY_OVERR & flags) /* cmds like INQUIRY respond asap */
return schedule_resp(scp, devip, errsts, pfp, 0, 0);
else if ((flags & F_LONG_DELAY) && (sdebug_jdelay > 0 ||
sdebug_ndelay > 10000)) {