mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
Pull block layer fixes from Jens Axboe:
"Final small batch of fixes to be included before -rc1. Some general
cleanups in here as well, but some of the blk-mq fixes we need for the
NVMe conversion and/or scsi-mq. The pull request contains:
- Support for not merging across a specified "chunk size", if set by
the driver. Some NVMe devices perform poorly for IO that crosses
such a chunk, so we need to support it generically as part of
request merging avoid having to do complicated split logic. From
me.
- Bump max tag depth to 10Ki tags. Some scsi devices have a huge
shared tag space. Before we failed with EINVAL if a too large tag
depth was specified, now we truncate it and pass back the actual
value. From me.
- Various blk-mq rq init fixes from me and others.
- A fix for enter on a dying queue for blk-mq from Keith. This is
needed to prevent oopsing on hot device removal.
- Fixup for blk-mq timer addition from Ming Lei.
- Small round of performance fixes for mtip32xx from Sam Bradshaw.
- Minor stack leak fix from Rickard Strandqvist.
- Two __init annotations from Fabian Frederick"
* 'for-linus' of git://git.kernel.dk/linux-block:
block: add __init to blkcg_policy_register
block: add __init to elv_register
block: ensure that bio_add_page() always accepts a page for an empty bio
blk-mq: add timer in blk_mq_start_request
blk-mq: always initialize request->start_time
block: blk-exec.c: Cleaning up local variable address returnd
mtip32xx: minor performance enhancements
blk-mq: ->timeout should be cleared in blk_mq_rq_ctx_init()
blk-mq: don't allow queue entering for a dying queue
blk-mq: bump max tag depth to 10K tags
block: add blk_rq_set_block_pc()
block: add notion of a chunk size for request merging
This commit is contained in:
commit
23d4ed53b7
28 changed files with 135 additions and 60 deletions
|
|
@ -120,6 +120,7 @@ static struct request *get_alua_req(struct scsi_device *sdev,
|
|||
"%s: blk_get_request failed\n", __func__);
|
||||
return NULL;
|
||||
}
|
||||
blk_rq_set_block_pc(rq);
|
||||
|
||||
if (buflen && blk_rq_map_kern(q, rq, buffer, buflen, GFP_NOIO)) {
|
||||
blk_put_request(rq);
|
||||
|
|
@ -128,7 +129,6 @@ static struct request *get_alua_req(struct scsi_device *sdev,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
rq->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
|
||||
REQ_FAILFAST_DRIVER;
|
||||
rq->retries = ALUA_FAILOVER_RETRIES;
|
||||
|
|
|
|||
|
|
@ -280,6 +280,7 @@ static struct request *get_req(struct scsi_device *sdev, int cmd,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
blk_rq_set_block_pc(rq);
|
||||
rq->cmd_len = COMMAND_SIZE(cmd);
|
||||
rq->cmd[0] = cmd;
|
||||
|
||||
|
|
@ -304,7 +305,6 @@ static struct request *get_req(struct scsi_device *sdev, int cmd,
|
|||
break;
|
||||
}
|
||||
|
||||
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
rq->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
|
||||
REQ_FAILFAST_DRIVER;
|
||||
rq->timeout = CLARIION_TIMEOUT;
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ retry:
|
|||
if (!req)
|
||||
return SCSI_DH_RES_TEMP_UNAVAIL;
|
||||
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
blk_rq_set_block_pc(req);
|
||||
req->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
|
||||
REQ_FAILFAST_DRIVER;
|
||||
req->cmd_len = COMMAND_SIZE(TEST_UNIT_READY);
|
||||
|
|
@ -250,7 +250,7 @@ static int hp_sw_start_stop(struct hp_sw_dh_data *h)
|
|||
if (!req)
|
||||
return SCSI_DH_RES_TEMP_UNAVAIL;
|
||||
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
blk_rq_set_block_pc(req);
|
||||
req->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
|
||||
REQ_FAILFAST_DRIVER;
|
||||
req->cmd_len = COMMAND_SIZE(START_STOP);
|
||||
|
|
|
|||
|
|
@ -279,6 +279,7 @@ static struct request *get_rdac_req(struct scsi_device *sdev,
|
|||
"get_rdac_req: blk_get_request failed.\n");
|
||||
return NULL;
|
||||
}
|
||||
blk_rq_set_block_pc(rq);
|
||||
|
||||
if (buflen && blk_rq_map_kern(q, rq, buffer, buflen, GFP_NOIO)) {
|
||||
blk_put_request(rq);
|
||||
|
|
@ -287,7 +288,6 @@ static struct request *get_rdac_req(struct scsi_device *sdev,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
rq->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT |
|
||||
REQ_FAILFAST_DRIVER;
|
||||
rq->retries = RDAC_RETRIES;
|
||||
|
|
|
|||
|
|
@ -1570,6 +1570,7 @@ static struct request *_make_request(struct request_queue *q, bool has_write,
|
|||
if (unlikely(!req))
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
blk_rq_set_block_pc(req);
|
||||
return req;
|
||||
}
|
||||
}
|
||||
|
|
@ -1590,7 +1591,6 @@ static int _init_blk_request(struct osd_request *or,
|
|||
}
|
||||
|
||||
or->request = req;
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
req->cmd_flags |= REQ_QUIET;
|
||||
|
||||
req->timeout = or->timeout;
|
||||
|
|
@ -1608,7 +1608,7 @@ static int _init_blk_request(struct osd_request *or,
|
|||
ret = PTR_ERR(req);
|
||||
goto out;
|
||||
}
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
blk_rq_set_block_pc(req);
|
||||
or->in.req = or->request->next_rq = req;
|
||||
}
|
||||
} else if (has_in)
|
||||
|
|
|
|||
|
|
@ -365,7 +365,7 @@ static int osst_execute(struct osst_request *SRpnt, const unsigned char *cmd,
|
|||
if (!req)
|
||||
return DRIVER_ERROR << 24;
|
||||
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
blk_rq_set_block_pc(req);
|
||||
req->cmd_flags |= REQ_QUIET;
|
||||
|
||||
SRpnt->bio = NULL;
|
||||
|
|
|
|||
|
|
@ -1952,6 +1952,8 @@ static void scsi_eh_lock_door(struct scsi_device *sdev)
|
|||
*/
|
||||
req = blk_get_request(sdev->request_queue, READ, GFP_KERNEL);
|
||||
|
||||
blk_rq_set_block_pc(req);
|
||||
|
||||
req->cmd[0] = ALLOW_MEDIUM_REMOVAL;
|
||||
req->cmd[1] = 0;
|
||||
req->cmd[2] = 0;
|
||||
|
|
@ -1961,7 +1963,6 @@ static void scsi_eh_lock_door(struct scsi_device *sdev)
|
|||
|
||||
req->cmd_len = COMMAND_SIZE(req->cmd[0]);
|
||||
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
req->cmd_flags |= REQ_QUIET;
|
||||
req->timeout = 10 * HZ;
|
||||
req->retries = 5;
|
||||
|
|
|
|||
|
|
@ -195,6 +195,7 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
|
|||
req = blk_get_request(sdev->request_queue, write, __GFP_WAIT);
|
||||
if (!req)
|
||||
return ret;
|
||||
blk_rq_set_block_pc(req);
|
||||
|
||||
if (bufflen && blk_rq_map_kern(sdev->request_queue, req,
|
||||
buffer, bufflen, __GFP_WAIT))
|
||||
|
|
@ -206,7 +207,6 @@ int scsi_execute(struct scsi_device *sdev, const unsigned char *cmd,
|
|||
req->sense_len = 0;
|
||||
req->retries = retries;
|
||||
req->timeout = timeout;
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
req->cmd_flags |= flags | REQ_QUIET | REQ_PREEMPT;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1653,10 +1653,9 @@ static int sg_start_req(Sg_request *srp, unsigned char *cmd)
|
|||
if (!rq)
|
||||
return -ENOMEM;
|
||||
|
||||
blk_rq_set_block_pc(rq);
|
||||
memcpy(rq->cmd, cmd, hp->cmd_len);
|
||||
|
||||
rq->cmd_len = hp->cmd_len;
|
||||
rq->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
|
||||
srp->rq = rq;
|
||||
rq->end_io_data = srp;
|
||||
|
|
|
|||
|
|
@ -484,7 +484,7 @@ static int st_scsi_execute(struct st_request *SRpnt, const unsigned char *cmd,
|
|||
if (!req)
|
||||
return DRIVER_ERROR << 24;
|
||||
|
||||
req->cmd_type = REQ_TYPE_BLOCK_PC;
|
||||
blk_rq_set_block_pc(req);
|
||||
req->cmd_flags |= REQ_QUIET;
|
||||
|
||||
mdata->null_mapped = 1;
|
||||
|
|
|
|||
Loading…
Reference in a new issue