|
@@ -391,7 +391,7 @@ forced such requests to be broken up into small chunks before being passed
|
|
on to the generic block layer, only to be merged by the i/o scheduler
|
|
on to the generic block layer, only to be merged by the i/o scheduler
|
|
when the underlying device was capable of handling the i/o in one shot.
|
|
when the underlying device was capable of handling the i/o in one shot.
|
|
Also, using the buffer head as an i/o structure for i/os that didn't originate
|
|
Also, using the buffer head as an i/o structure for i/os that didn't originate
|
|
-from the buffer cache unecessarily added to the weight of the descriptors
|
|
|
|
|
|
+from the buffer cache unnecessarily added to the weight of the descriptors
|
|
which were generated for each such chunk.
|
|
which were generated for each such chunk.
|
|
|
|
|
|
The following were some of the goals and expectations considered in the
|
|
The following were some of the goals and expectations considered in the
|
|
@@ -403,14 +403,14 @@ i. Should be appropriate as a descriptor for both raw and buffered i/o -
|
|
for raw i/o.
|
|
for raw i/o.
|
|
ii. Ability to represent high-memory buffers (which do not have a virtual
|
|
ii. Ability to represent high-memory buffers (which do not have a virtual
|
|
address mapping in kernel address space).
|
|
address mapping in kernel address space).
|
|
-iii.Ability to represent large i/os w/o unecessarily breaking them up (i.e
|
|
|
|
|
|
+iii.Ability to represent large i/os w/o unnecessarily breaking them up (i.e
|
|
greater than PAGE_SIZE chunks in one shot)
|
|
greater than PAGE_SIZE chunks in one shot)
|
|
iv. At the same time, ability to retain independent identity of i/os from
|
|
iv. At the same time, ability to retain independent identity of i/os from
|
|
different sources or i/o units requiring individual completion (e.g. for
|
|
different sources or i/o units requiring individual completion (e.g. for
|
|
latency reasons)
|
|
latency reasons)
|
|
v. Ability to represent an i/o involving multiple physical memory segments
|
|
v. Ability to represent an i/o involving multiple physical memory segments
|
|
(including non-page aligned page fragments, as specified via readv/writev)
|
|
(including non-page aligned page fragments, as specified via readv/writev)
|
|
- without unecessarily breaking it up, if the underlying device is capable of
|
|
|
|
|
|
+ without unnecessarily breaking it up, if the underlying device is capable of
|
|
handling it.
|
|
handling it.
|
|
vi. Preferably should be based on a memory descriptor structure that can be
|
|
vi. Preferably should be based on a memory descriptor structure that can be
|
|
passed around different types of subsystems or layers, maybe even
|
|
passed around different types of subsystems or layers, maybe even
|