I have one query as follows:
I am writing one File system.
In write/Read Module, I prepare a list of runs (logical offset, length) like in FAT IORun then prepare Multiple Irp’s and send it down to storage driver. It works fine.
Runs are continuous blocks.
Here comes the problem.
Most of run has one block size difference.
Ex. If first Run is [X, L] then next Run is [X+2, L].
Because they are different runs so I have to prepare two Irp?s and send it down. And because of that it hits the performance.
Is there any way so that I can insert one block size buffer between two Mdls and prepare a single Irp and send it down?
I mean can I build an Irp with Multiple Mdl and lower driver gets continuous buffer.
I have one solution like allocate one big Buffer send and Irp with that. Then send it down.
When lower driver returns successful, copy data to waiting Irp?s user buffer. But this is not optimized solution. If somehow I can insert one buffer betweem two Mdls, It would be great help.
I know my text may not convey the problem properly, Please revert back with questions if you do not understand problem.