sion, as described in commit fc1d8e7cca2d
> ("mm: introduce put_user_page*(), placeholder versions").
>
> Cc: Bartlomiej Zolnierkiewicz
> Cc: Kees Cook
> Cc: Al Viro
> Cc: Bhumika Goyal
> Cc: Arvind Yadav
> Cc: dri-de...@lists.freedesktop.org
> Cc: linux-fb..
ed request to be issued directly from within ->done()
> callback of the current request.
Tested-by: Bartlomiej Zolnierkiewicz [ for non-CQE
changes ]
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
On Tuesday, November 14, 2017 01:17:34 PM Bartlomiej Zolnierkiewicz wrote:
> This works much better than initial version and a simple dd read
> test shows more consistent results than with vanilla kernel.
>
> However there are still some issues:
>
> 1. 30 seconds delay on &q
ed, 557 insertions(+), 568 deletions(-)
This works much better than initial version and a simple dd read
test shows more consistent results than with vanilla kernel.
However there are still some issues:
1. 30 seconds delay on "Waiting for /dev to be fully populated..."
during boot
On Thursday, October 05, 2017 02:00:48 PM Bartlomiej Zolnierkiewicz wrote:
> > > > I am trying to wrap my head around this large patch. The size makes it
> > > > hard but I am doing my best.
> > >
> > > I also think that this patch should be split on
Hi,
On Wednesday, October 04, 2017 07:23:07 PM Hunter, Adrian wrote:
> > -Original Message-
> > From: Bartlomiej Zolnierkiewicz [mailto:b.zolnier...@samsung.com]
> > Sent: Wednesday, October 4, 2017 12:40 PM
> > To: Linus Walleij
> > Cc: Hunter, Adrian
p the new Kconfig option for
> enabling the blkmq path from MMC.
This seems premature - the new Kconfig option change for "mmc-mq" should
belong to the patch adding "mmc-mq" support (otherwise it may just confuse
users who enable it).
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
l
Also the patchset itself has never worked on my setup:
https://www.spinics.net/lists/linux-mmc/msg42759.html
> MQ code that doesn't perform and therefore we cannot switch seamlessly
> to MQ.
I think that switching seamlessly to blk-mq in short/medium-term
is not possible (SCSI tried and failed to do so). The changes to
the old path are very complex and besides affecting performance
they also affect error recovery handling (which needs to be tested
properly before the switch).
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
++ b/include/linux/mmc/host.h
> @@ -310,6 +310,7 @@ struct mmc_host {
> /* host specific block data */
> unsigned intmax_seg_size; /* see
> blk_queue_max_segment_size */
> unsigned short max_segs; /* see blk_queue_max_segments */
> + booldisable_bounce; /* disable bounce buffers */
> unsigned short unused;
> unsigned intmax_req_size; /* maximum number of bytes in
> one req */
> unsigned intmax_blk_size; /* maximum size of one mmc
> block */
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
On Wednesday, April 26, 2017 09:34:22 AM Christoph Hellwig wrote:
> The caller only looks at the scsi_request result field anyway.
>
> Signed-off-by: Christoph Hellwig
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute P
> Signed-off-by: Christoph Hellwig
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
On Wednesday, March 01, 2017 04:52:38 PM Bartlomiej Zolnierkiewicz wrote:
> I assume that the problem got introduced even earlier,
> commit 4515dc6 ("mmc: block: shuffle retry and error
> handling") just makes it happen every time.
It seems to be introduced by patch #6. P
On Wednesday, March 01, 2017 04:52:38 PM Bartlomiej Zolnierkiewicz wrote:
> I assume that the problem got introduced even earlier,
> commit 4515dc6 ("mmc: block: shuffle retry and error
> handling") just makes it happen every time.
Patch #16 makes it worse as now I g
On Wednesday, March 01, 2017 12:45:57 PM Bartlomiej Zolnierkiewicz wrote:
>
> Hi,
>
> On Tuesday, February 28, 2017 06:45:20 PM Bartlomiej Zolnierkiewicz wrote:
> > On Thursday, February 09, 2017 04:33:58 PM Linus Walleij wrote:
> > > Instead of doing retries at the sa
old_req, 0,
> brq->data.bytes_xfered);
> - /*
> - * If the blk_end_request function returns non-zero even
> - * though all data has been transferred and no errors
> - * were ret
Hi,
On Tuesday, February 28, 2017 06:45:20 PM Bartlomiej Zolnierkiewicz wrote:
> On Thursday, February 09, 2017 04:33:58 PM Linus Walleij wrote:
> > Instead of doing retries at the same time as trying to submit new
> > requests, do the retries when the request is reported as compl
fter this change we can end up queuing more
work for kthread from the kthread worker itself and wait
inside it for this nested work to complete. I hope that
you've tested it with simulating errors and it all works.
Under this assumption:
Reviewed-by: Bartlomiej Zolnierkiewicz
Also some
blk_issue_rq(struct mmc_queue *mq, struct request *req);
> +void mmc_blk_issue_rq(struct mmc_queue_req *mq_rq);
>
> #endif
> diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
> index c9f28de7b0f4..c4e1ced55796 100644
> --- a/drivers/mmc/core/queue.c
> +++ b/drivers/mmc/core/queue.c
> @@ -54,6 +54,7 @@ static int mmc_queue_thread(void *d)
> struct mmc_queue *mq = d;
> struct request_queue *q = mq->queue;
> bool claimed_host = false;
> + struct mmc_queue_req *mq_rq;
>
> current->flags |= PF_MEMALLOC;
>
> @@ -65,7 +66,8 @@ static int mmc_queue_thread(void *d)
> set_current_state(TASK_INTERRUPTIBLE);
> req = blk_fetch_request(q);
> mq->asleep = false;
> - mq->mqrq_cur->req = req;
> + mq_rq = mq->mqrq_cur;
> + mq_rq->req = req;
> spin_unlock_irq(q->queue_lock);
>
> if (req) {
> @@ -74,7 +76,7 @@ static int mmc_queue_thread(void *d)
> if (!claimed_host)
> mmc_get_card(mq->card);
> set_current_state(TASK_RUNNING);
> - mmc_blk_issue_rq(mq, req);
> + mmc_blk_issue_rq(mq_rq);
> cond_resched();
> /*
>* Current request becomes previous request
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
make
> our work efficient and parallel.
>
> Rewrite the mechanism to have a pool of struct mmc_queue_req
> and take one when we need one and put it back when we don't
> need it anymore.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
gt; + }
> mq->mqrq_prev->brq.mrq.data = NULL;
> mq->mqrq_prev->req = NULL;
> swap(mq->mqrq_prev, mq->mqrq_cur);
> @@ -97,6 +103,10 @@ static int mmc_queue_thread(void *d)
> down(&mq->thread_sem);
> }
> } while (1);
> +
> + if (claimed_host)
claimed_host is never set to true
> + mmc_put_card(mq->card);
> +
> up(&mq->thread_sem);
>
> return 0;
> diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
> index 55b45dcddee6..af651e723ba2 100644
> --- a/include/linux/mmc/core.h
> +++ b/include/linux/mmc/core.h
> @@ -160,9 +160,8 @@ struct mmc_async_req;
>
> void mmc_finalize_areq(struct kthread_work *work);
> int mmc_restart_areq(struct mmc_host *host, struct mmc_async_req *areq);
> -struct mmc_async_req *mmc_start_areq(struct mmc_host *host,
> - struct mmc_async_req *areq,
> - enum mmc_blk_status *ret_stat);
> +int mmc_start_areq(struct mmc_host *host,
> +struct mmc_async_req *areq);
> void mmc_wait_for_req(struct mmc_host *host, struct mmc_request *mrq);
> int mmc_wait_for_cmd(struct mmc_host *host, struct mmc_command *cmd,
> int retries);
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
On Thursday, February 09, 2017 04:33:55 PM Linus Walleij wrote:
> The host context member "is_new_req" is only assigned values,
> never checked. Delete it.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
eport block requests as finished directly from
> the worker.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
ceiving data, and when the finalization work
> has run and completed the completion, we are indeed done.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
On Thursday, February 09, 2017 04:33:56 PM Linus Walleij wrote:
> The last member of the context info: is_waiting_last_req is
> just assigned values, never checked. Delete that and the whole
> context info as a result.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej
-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
adds the worker, later patches will make use of
> it.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
gt;block;
> finalize;
>
> Which is simpler code.
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
le
> on all code paths, so we might as well just do that immediately
> after calling mmc_finalize_areq().
>
> Signed-off-by: Linus Walleij
Reviewed-by: Bartlomiej Zolnierkiewicz
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
).
> libata that would need to be added, before we can git rm drivers/ide/ ?
I was trying to start the removal with [1] last year but
it has been NAK-ed by DaveM who seems to want to keep
drivers/ide/ forever [2].
[1] https://lkml.org/lkml/2016/2/4/409
[2] https://lkml.org/lkml/2016/
dropped support for qdepth == 2 as it hasn't survived
the forward porting (it was ugly & not optimal anyway,
rewrite to try hwqueue == 2 idea is on TODO)
- misc cleanups
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
Bartlomiej
Signed-off-by: Bartlomiej Zolnierkiewicz
---
drivers/mmc/core/block.c| 104 --
drivers/mmc/core/block.h| 3 +-
drivers/mmc/core/bus.c | 3 +-
drivers/mmc/core/core.c | 120 +---
drivers/mmc/core
Shared mmc queue changes break mmc-mq ones currently.
This reverts commit 6540ce8420b7790ef0696ccfd6e911df7ba84c33.
Conflicts:
drivers/mmc/core/queue.c
Signed-off-by: Bartlomiej Zolnierkiewicz
---
drivers/mmc/core/block.c | 11 +--
drivers/mmc/core/queue.c | 252
-mq handling of schedulers is only now
being worked on).
You may also consider re-basing your work on Adrian's swcmdq patches
(up to "mmc: core: Do not prepare a new request twice" patch) as they
cleanup MMC core queuing code significantly (some of the patches have
been merged ups
lk-mq work for MMC. I'm just quite busy with other things
at the moment.
> That still won't solve the issue of lying about it and causing IO
> scheduler confusion, of course.
>
> Also, 4.8 and newer have support for BLK_MQ_F_BLOCKING, if you need to
> block in ->queue_
is very
interesting and needs to be investigated further).
Best regards,
--
Bartlomiej Zolnierkiewicz
Samsung R&D Institute Poland
Samsung Electronics
--
To unsubscribe from this list: send the line "unsubscribe linux-block" in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
36 matches
Mail list logo