Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8d44c98a authored by Joe Thornber's avatar Joe Thornber Committed by Alasdair G Kergon
Browse files

dm persistent data: always unlock superblock in dm_bm_flush_and_unlock



Unlock the superblock even if initial dm_bufio_write_dirty_buffers fails.

Also, remove redundant flush calls.  dm_bm_flush_and_unlock's calls to
dm_bufio_write_dirty_buffers already result in dm_bufio_issue_flush
being called.

This avoids warnings about unflushed dirty buffers from bufio.

Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 60049701
Loading
Loading
Loading
Loading
+4 −12
Original line number Diff line number Diff line
@@ -587,22 +587,14 @@ int dm_bm_flush_and_unlock(struct dm_block_manager *bm,
	int r;

	r = dm_bufio_write_dirty_buffers(to_bufio(bm));
	if (unlikely(r))
		return r;
	r = dm_bufio_issue_flush(to_bufio(bm));
	if (unlikely(r))
	if (unlikely(r)) {
		dm_bm_unlock(superblock);
		return r;
	}

	dm_bm_unlock(superblock);

	r = dm_bufio_write_dirty_buffers(to_bufio(bm));
	if (unlikely(r))
		return r;
	r = dm_bufio_issue_flush(to_bufio(bm));
	if (unlikely(r))
		return r;

	return 0;
	return dm_bufio_write_dirty_buffers(to_bufio(bm));
}

u32 dm_bm_checksum(const void *data, size_t len, u32 init_xor)