Message ID | 20221005031701.79077-5-kch@nvidia.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | null_blk: allow REQ_OP_WRITE_ZEROES and cleanup | expand |
On 10/5/22 12:16, Chaitanya Kulkarni wrote: > The function __alloc_cmd() is responsible to allocate tag and > initializae the different members of the null_cmd structure e.g. > cmd->tag, cmd->error, and cmd->nq, Move only member bio that is initialized > from alloc_cmd() into __alloc_cmd(). > > Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- > drivers/block/null_blk/main.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c > index b82c2ffeb086..765c1ca0edf5 100644 > --- a/drivers/block/null_blk/main.c > +++ b/drivers/block/null_blk/main.c > @@ -743,7 +743,7 @@ static void free_cmd(struct nullb_cmd *cmd) > > static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer); > > -static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq) > +static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq, struct bio *bio) > { > struct nullb_cmd *cmd; > unsigned int tag; > @@ -754,6 +754,7 @@ static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq) > cmd->tag = tag; > cmd->error = BLK_STS_OK; > cmd->nq = nq; > + cmd->bio = bio; > if (nq->dev->irqmode == NULL_IRQ_TIMER) { > hrtimer_init(&cmd->timer, CLOCK_MONOTONIC, > HRTIMER_MODE_REL); > @@ -775,11 +776,9 @@ static struct nullb_cmd *alloc_cmd(struct nullb_queue *nq, struct bio *bio) > * This avoids multiple return statements, multiple calls to > * __alloc_cmd() and a fast path call to prepare_to_wait(). > */ > - cmd = __alloc_cmd(nq); > - if (cmd) { > - cmd->bio = bio; > + cmd = __alloc_cmd(nq, bio); > + if (cmd) > return cmd; > - } > prepare_to_wait(&nq->wait, &wait, TASK_UNINTERRUPTIBLE); > io_schedule(); > finish_wait(&nq->wait, &wait);
diff --git a/drivers/block/null_blk/main.c b/drivers/block/null_blk/main.c index b82c2ffeb086..765c1ca0edf5 100644 --- a/drivers/block/null_blk/main.c +++ b/drivers/block/null_blk/main.c @@ -743,7 +743,7 @@ static void free_cmd(struct nullb_cmd *cmd) static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer); -static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq) +static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq, struct bio *bio) { struct nullb_cmd *cmd; unsigned int tag; @@ -754,6 +754,7 @@ static struct nullb_cmd *__alloc_cmd(struct nullb_queue *nq) cmd->tag = tag; cmd->error = BLK_STS_OK; cmd->nq = nq; + cmd->bio = bio; if (nq->dev->irqmode == NULL_IRQ_TIMER) { hrtimer_init(&cmd->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); @@ -775,11 +776,9 @@ static struct nullb_cmd *alloc_cmd(struct nullb_queue *nq, struct bio *bio) * This avoids multiple return statements, multiple calls to * __alloc_cmd() and a fast path call to prepare_to_wait(). */ - cmd = __alloc_cmd(nq); - if (cmd) { - cmd->bio = bio; + cmd = __alloc_cmd(nq, bio); + if (cmd) return cmd; - } prepare_to_wait(&nq->wait, &wait, TASK_UNINTERRUPTIBLE); io_schedule(); finish_wait(&nq->wait, &wait);
The function __alloc_cmd() is responsible to allocate tag and initializae the different members of the null_cmd structure e.g. cmd->tag, cmd->error, and cmd->nq, Move only member bio that is initialized from alloc_cmd() into __alloc_cmd(). Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com> --- drivers/block/null_blk/main.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)