An error returned by ie_cache_writeback could be silently overwritten by another successful ie_cache_writeback. This commit fixes disk_ll_commit, so that it doesn't ignore the error and returns it immediatelly.
Signed-off-by: Mikulas Patocka <[email protected]> Assisted-by: Claude:claude-opus-5 Cc: [email protected] Fixes: 6b06dd5a9722 ("dm space map disk: cache a small number of index entries") --- drivers/md/persistent-data/dm-space-map-common.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) Index: linux-2.6/drivers/md/persistent-data/dm-space-map-common.c =================================================================== --- linux-2.6.orig/drivers/md/persistent-data/dm-space-map-common.c +++ linux-2.6/drivers/md/persistent-data/dm-space-map-common.c @@ -1190,17 +1190,20 @@ static dm_block_t disk_ll_max_entries(st static int disk_ll_commit(struct ll_disk *ll) { - int r = 0; + int r; unsigned int i; for (i = 0; i < IE_CACHE_SIZE; i++) { struct ie_cache *iec = ll->ie_cache + i; - if (iec->valid && iec->dirty) + if (iec->valid && iec->dirty) { r = ie_cache_writeback(ll, iec); + if (unlikely(r)) + return r; + } } - return r; + return 0; } int sm_ll_new_disk(struct ll_disk *ll, struct dm_transaction_manager *tm)
