> + if (optype & XLOG_START_TRANS) > + headers++; This deserves a comment. > + len = xlog_write_calc_vec_length(ticket, log_vector, optype); > + if (start_lsn) > + *start_lsn = 0; I'd slightly prefer that allowing a NULL start_lsn was a separate prep patch. As-is it really clutters the patch and detracts from the real change. > int copy_len; > int copy_off; > bool ordered = false; > + bool wrote_start_rec = false; > > /* ordered log vectors have no regions to write */ > if (lv->lv_buf_len == XFS_LOG_VEC_ORDERED) { > @@ -2502,13 +2501,15 @@ xlog_write( > * write a start record. Only do this for the first > * iclog we write to. > */ > - if (need_start_rec) { > + if (optype & XLOG_START_TRANS) { So this relies on the fact that the only callers that passes an optype of XLOG_START_TRANS only writes a single lv. I think we want an assert for that somewhere to avoid a bad surprise later.