On Jan 6, 2014 11:34 PM, "neha naik" <[email protected]> wrote: > > Hi All, > I figured out the method by some trial and error and looking at the > linux source code. > We can do something like this : > Say we want to read pages of bvec in 512 chunks. Create bio with > a single page and read 512 chunk of data from wherever you want to (it > can be different disks). > > dst = kmap_atomic(bvec->bv_page, KM_USER0); ---> bvec is of > original bio > src = kmap_atomic(page, KM_USER0); ---> page we read by > creating new bio > memcpy(dst+offset, src, 512); > kunmap_atomic(src, KM_USER0); > kunmap_atomic(dst, KM_USER0); > How this solves the problem of data being on different disks?
> My difficulty was not being able to access the high memory page in > kernel. I was earlier trying to increment the offset of the bvec and > pass the page to the layer below assuming that it would read in the > data at correct offset but of course it was resulting in panic. The > above solves that. Of course, if there is some other method which > involves not creating any bio i would love to know. > > Regards, > Neha > > > On Sat, Jan 4, 2014 at 9:32 AM, Pranay Srivastava <[email protected]> wrote: > > > > On 04-Jan-2014 5:18 AM, "neha naik" <[email protected]> wrote: > >> > >> Hi All, > >> I am getting a request with bvec->bv_len > 512. Now, the > >> information to be read is scattered across the entire disk in 512 > >> chunks. So that, information on disk can be : sector 8, sector 100, > >> sector 9. > >> Now if i get a request to read with the bvec->bv_len > 512 i need to > >> pull in the information from > >> multiple places on disk since the data is not sequentially located. > >> I tried to look at the linux source code because i think raid must be > >> doing it all the time. (eg : on disk 1 we may be storing sector 6 and > >> on disk 2 we may be storing sector 7 and so on). > > > > You are right. Perhaps you need to clone the bio and set them properly. I > > guess you ought to check dm driver's make_request function. It does clone > > bio. > > > > I don't know if you can split that request while handling it. Perhaps > > reinserting that request could work. > > > >> However, i have not really got any useful information from it. Also > >> scouring through articles on > >> google has not helped much. > >> I am hoping somebody points me in the right direction. > >> > >> Thanks in advance, > >> Neha > >> > >> _______________________________________________ > >> Kernelnewbies mailing list > >> [email protected] > >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > > > ---P.K.S > > _______________________________________________ > Kernelnewbies mailing list > [email protected] > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
