On 2/1/18 8:57 AM, Jerome Glisse wrote: > On Thu, Feb 01, 2018 at 08:34:58AM -0700, Jens Axboe wrote: >> On 1/31/18 11:13 AM, Jerome Glisse wrote: >>> That's one solution, another one is to have struct bio_vec store >>> buffer_head pointer and not page pointer, from buffer_head you can >>> find struct page and using buffer_head and struct page pointer you >>> can walk the KSM rmap_item chain to find back the mapping. This >>> would be needed on I/O error for pending writeback of a newly write >>> protected page, so one can argue that the overhead of the chain lookup >>> to find back the mapping against which to report IO error, is an >>> acceptable cost. >> >> Ehm nope. bio_vec is a generic container for pages, requiring >> buffer_heads to be able to do IO would be insanity. > > The extra pointer dereference would be killing performance ? No, I'm saying that requiring a buffer_head to be able to do IO is insanity. That's how things used to be in the pre-2001 days. -- Jens Axboe