On Wed, 27 Nov 2019 at 13:01, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Wed, Nov 27, 2019 at 10:00 AM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > > > > On Tue, Nov 26, 2019 at 12:17:15PM +0100, Hannes Reinecke wrote: > > If requests are batched enough we could just drain > > and switch every time an other partition access comes in. Especially > > so if people only use partitions for boot partitions and other rarely > > used areas. > > We only support a single user partition plus up to two boot partitions that > are accessed rarely, I don't think there is any reason to optimize switching > between them. I agree. However, let me just add some more information to this. There are more partitions, like the RPMB for example. In regards to partition switching, after serving a request to the RPMB partition, we always switch back to the main user area. I think that is sufficient. Also note that requests for the RPMB partitions are managed via REQ_OP_DRV_IN|OUT. > > The only change that I think we need here is to change the partition switch > from something that is done synchronously during ->queue_rq() to > something that fits better into normal scheme of sending a cmd to > the device, returning BLK_STS_RESOURCE from ->queue_rq. You want to translate them to be managed similar to REQ_OP_DRV_IN|OUT, no? I am just trying to understand what this would help us with, but I don't get it, sorry. I realize that I am joining the show a bit late, apologize for that. But it seems like you are forgetting about re-tuning, urgent bkops, card detect, SDIO combo cards, etc. For example, re-tuning may be required because of a CRC error on the previously sent transfer. Thus re-tuning must be done before serving the next request. Likewise, when the device signals urgent bkops status, we must not serve any new request until the card has notified us that it is ready with it's internal housekeeping operations. > Possibly this could even be turned into a standard struct request that is > added between two normal requests for different partitions at some > point, if this simplifies the logic (I suspect it won't, but it may be worth > a try). Doing so, means re-tuning, bkops, etc, also needs to be managed in the same way. Is this really the way to go? Kind regards Uffe