Full stripe I/O Parity is computed from the data, and then data and parity both are written by breaking the stripe I/O into second level stage I/Os corresponding to each buffer in the stripe. We also need to invalidate the cache buffers corresponding the stripe undergoing I/O before writing the data to disk (see section 4.2.2).
Partial stripe I/O Partial stripe writes are a bit more involved than full stripe writes. To improve performance, a partial stripe write is handled in two ways:
1: Read-Modify-Write: This type of I/O handling is used when the size of update is less than half the stripe length. The buffers in stripe units that are going to be overwritten are read, then the parity is computed by xoring the old data, old parity and new data. The new parity and data are written to the disk by creating second level stage I/Os for each of the buffer involved.
2: Reconstruction-Writes: This type of I/O handling is used when the size of update is more than half the stripe length. Stripe units that are not going to be written are read in from the disk. The parity is computed by xoring the data read and data to be written. The new parity and data are written in similar way to Read-Modify-Write I/O.