On Wed, Mar 24, 2021 at 06:44:58PM +0100, Christoph Hellwig wrote: > On Wed, Mar 24, 2021 at 06:40:32PM +0100, Benjamin Block wrote: > > Is blk_queue_bounce() called again when mpath submits the request to the > > lower device? I thought when I looked at this code some time ago > > bouncing would only be checked the first time a request is created > > (dm-mpath), and then not again, so when we don't check for whether > > bouncing is necessary in mpath, we still might screw the LLD - hence why > > we might inherit this via the limits. > > Every call to blk_mq_submit_bio also calls blk_queue_bounce, But map_request() -> multipath_clone_and_map() -> dm_dispatch_clone_request() doesn't call blk_mq_submit_bio() for requests that have been queued in a request based mpath device. The requests gets cloned and then dispatched on the lower queue. Or am I missing something? > and > blk_queue_bounce then checks if it needs to do anything based on the > bounce limit and max_pfn, and if needed proceeds to check every bvec. > > So for extremely unlikely case thay someone is running multipath over one > of the few remaining drivers that need block layering bounce buffering > this inheritance just leads to (harmless) extra work. Yeah fair enough, I don't know whether anyone would care for those old drivers; it just crossed my mind. -- Best Regards, Benjamin Block / Linux on IBM Z Kernel Development / IBM Systems IBM Deutschland Research & Development GmbH / https://www.ibm.com/privacy Vorsitz. AufsR.: Gregor Pillen / Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen / Registergericht: AmtsG Stuttgart, HRB 243294