Phillip Susi <phill@xxxxxxxxxxxx> writes: > It looks like ext4_sync_fs() calls jbd2_trans_will_send_data_barrier(), > which returns 0, causing a call to blkdev_issue_flush(). Shouldn't this > return a 1 if the transaction is empty? Tracing a little more, it appears that jbd2_trans_will_send_data_barrier() is returning 0 because the transaction is already committed. How can this be? If a transaction has been committed, shouldn't a new one be opened? If not, and the transaction indeed has already been committed, then why is that a reason for the fs to issue another barrier? If it has already been committed, then the barrier should already have been issued shouldn't it?