I have noticed that when entering suspend-to-ram, the kernel syncs the filesystem, and ext4 issues a flush even though nothing has been written, causing a disk that has been suspended with runtime pm to wake up for no reason. 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?