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)


Reply via email to