{
int r = EOK;
struct ext4_fs *fs = journal->jbd_fs->inode_ref.fs;
+ struct jbd_buf *jbd_buf = block->buf->end_write_arg;
/* If the buffer has already been modified, we should
* flush dirty data in this buffer to disk.*/
if (ext4_bcache_test_flag(block->buf, BC_DIRTY) &&
- block->buf->end_write == jbd_trans_end_write &&
- block->buf->end_write_arg != trans) {
- r = ext4_block_flush_buf(fs->bdev, block->buf);
+ block->buf->end_write == jbd_trans_end_write) {
+ ext4_assert(jbd_buf);
+ if (jbd_buf->trans != trans)
+ r = ext4_block_flush_buf(fs->bdev, block->buf);
+
}
return r;
}
tag_info.uuid_exist = uuid_exist;
if (i == trans->data_cnt - 1)
tag_info.last_tag = true;
+ else
+ tag_info.last_tag = false;
if (uuid_exist)
memcpy(tag_info.uuid, journal->jbd_fs->sb.uuid,