I don't like this series at all, it does too much and too little at
the same time.
There's three totally different parts to it that are mixed up:
(1) cleanups to use accessors for struct scatterlist instead of exposing
the intricate details of chained S/G list to users
(2) a switch of struct scatterlist to store a PFN instead of a page
(3) switch struct bio_vec to store a struct PFN instead of a page
(1) are pretty obvious cleanups, and they should have been submited
separately long time ago.
(2) seems like a good idea, but only when done properly, that is a full
conversion to it. Not a you need a config option, in which case maybe
some architectures and can sometimes deal with it if they driver says:
Given that nature of SGLs most consumer want a physical address anyway,
and it shouldn't be a problem to convert all others that need a kernel
mapping to proper helpers.
(3) I'm not sure about in it's current form. The bio_vec sees all kinds
of highlevel use and we need to be a lot more careful about it, due to
the way we e.g. use the in the iov_iter based read/write interfaces.
It could be that pfn_t based approach there makes sense, but only if
we ensure all consumer can always handle them.
Because of that I'd suggest you try to get (1) and (2) done properly
first, at that point we'll have how we can do (3) without causing
a big mess.