]> git.hungrycats.org Git - linux/commitdiff
[PATCH] dio_bio_reap() return value fix
authorAndrew Morton <akpm@osdl.org>
Mon, 26 Apr 2004 16:01:14 +0000 (09:01 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 26 Apr 2004 16:01:14 +0000 (09:01 -0700)
This function doesn't correctly accumulate -EIO for its caller.

fs/direct-io.c

index 72c911a9602eb1895a08aedc5fbdcf69bc8041a6..0831f490f8713c468a5e68a3e5267e95b10b7282 100644 (file)
@@ -446,12 +446,15 @@ static int dio_bio_reap(struct dio *dio)
                while (dio->bio_list) {
                        unsigned long flags;
                        struct bio *bio;
+                       int ret2;
 
                        spin_lock_irqsave(&dio->bio_lock, flags);
                        bio = dio->bio_list;
                        dio->bio_list = bio->bi_private;
                        spin_unlock_irqrestore(&dio->bio_lock, flags);
-                       ret = dio_bio_complete(dio, bio);
+                       ret2 = dio_bio_complete(dio, bio);
+                       if (ret == 0)
+                               ret = ret2;
                }
                dio->reap_counter = 0;
        }