- else {
- ubc_upl_abort_range(upl, (upl_offset & ~PAGE_MASK), upl_size,
- UPL_ABORT_FREE_ON_EMPTY);
- }
+ /*
+ * always 'commit' the I/O via the abort primitive whether the I/O
+ * succeeded cleanly or not... this is necessary to insure that
+ * we preserve the state of the DIRTY flag on the pages used to
+ * provide the data for the I/O... the state of this flag SHOULD
+ * NOT be changed by a write
+ */
+ ubc_upl_abort_range(upl, (upl_offset & ~PAGE_MASK), upl_size,
+ UPL_ABORT_FREE_ON_EMPTY);
+