add detailed error values to block layer
Subsystems (7)
RFC PATCH 2/2 add detailed error values to block layer
02-ec-bioendio.patch converts the bio_endio and bi_end_io callers to pass one of the error values defined in 01-ec-core.patch instead of the Exxx errnos. Should be applied on top of 01-ec-core.patch.
diffstat
drivers/block/cciss.c | 3 ++- drivers/block/cpqarray.c | 2 +- drivers/block/ll_rw_blk.c | 4 ++-- drivers/block/loop.c | 2 +- drivers/block/rd.c | 2 +- drivers/block/umem.c | 2 +- drivers/md/dm-crypt.c | 6 +++--- drivers/md/dm.c | 2 +- drivers/md/multipath.c | 2 +- drivers/md/raid1.c | 2 +- drivers/md/raid5.c | 4 ++-- drivers/md/raid6main.c | 4 ++-- drivers/s390/block/dcssblk.c | 2 +- drivers/s390/block/xpram.c | 2 +- fs/bio.c | 4 ++-- mm/highmem.c | 2 +- 16 files changed, 23 insertions(+), 22 deletions(-)
Mike Chrisite
drivers/block/cciss.c +2 -1
@@ -1747,7 +1747,8 @@ static inline void complete_buffers(stru bio->bi_next =NULL ;blk_finished_io (len); -bio_endio (bio, nr_sectors <<9 , status ?0 : -EIO ); +bio_endio (bio, nr_sectors <<9 , + status ?BLK_SUCCESS :BLK_ERR ); bio = xbh; }
drivers/block/cpqarray.c +1 -1
@@ -886,7 +886,7 @@ static inline void complete_buffers(stru bio->bi_next =NULL ;blk_finished_io (nr_sectors); -bio_endio (bio, nr_sectors <<9 , ok ?0 : -EIO ); +bio_endio (bio, nr_sectors <<9 , ok ?BLK_SUCCESS :BLK_ERR ); bio = xbh; }
drivers/block/ll_rw_blk.c +2 -2
@@ -2309,7 +2309,7 @@ out:return 0 ; end_io: -bio_endio (bio, nr_sectors <<9 , -EWOULDBLOCK ); +bio_endio (bio, nr_sectors <<9 ,BLK_RETRY_DRV );return 0 ; }
@@ -2411,7 +2411,7 @@ void generic_make_request(struct bio *bibdevname (bio->bi_bdev, b), (long long) bio->bi_sector); end_io: -bio_endio (bio, bio->bi_size, -EIO ); +bio_endio (bio, bio->bi_size,BLK_ERR );break ; }
drivers/block/loop.c +1 -1
@@ -450,7 +450,7 @@ static inline void loop_handle_bio(strucbio_put (bio); }else { ret =do_bio_filebacked (lo, bio); -bio_endio (bio, bio->bi_size, ret); +bio_endio (bio, bio->bi_size, ret ?BLK_ERR :BLK_SUCCESS ); } }
drivers/block/rd.c +1 -1
@@ -237,7 +237,7 @@ static int rd_make_request(request_queueif (ret) goto fail; -bio_endio (bio, bio->bi_size,0 ); +bio_endio (bio, bio->bi_size,BLK_SUCCESS );return 0 ; fail:bio_io_error (bio, bio->bi_size);
drivers/block/umem.c +1 -1
@@ -544,7 +544,7 @@ static void process_page(unsigned long d return_bio = bio->bi_next; bio->bi_next =NULL ; -bio_endio (bio, bio->bi_size,0 ); +bio_endio (bio, bio->bi_size,BLK_SUCCESS ); } }
drivers/md/dm.c +1 -1
@@ -486,7 +486,7 @@ static void __split_bio(struct mapped_de ci.md = md; ci.bio = bio; ci.io =alloc_io (md); - ci.io->error =0 ; + ci.io->error =BLK_SUCCESS ;atomic_set (&ci.io->io_count,1 ); ci.io->bio = bio; ci.io->md = md;
drivers/md/dm-crypt.c +3 -3
@@ -320,8 +320,8 @@ static void dec_pending(struct crypt_io {struct crypt_config *cc = (struct crypt_config *) io->target->private; -if (error <0 ) - io->error = error; +if (error) + io->error =BLK_ERR ;if (!atomic_dec_and_test (&io->pending))return ;
@@ -635,7 +635,7 @@ static int crypt_map(struct dm_target *t io->target = ti; io->bio = bio; io->first_clone =NULL ; - io->error =0 ; + io->error =BLK_SUCCESS ;atomic_set (&io->pending,1 );/* hold a reference */ if (bio_data_dir (bio) ==WRITE )
drivers/md/multipath.c +1 -1
@@ -106,7 +106,7 @@ static void multipath_end_bh_io (structstruct bio *bio = mp_bh->master_bio;multipath_conf_t *conf =mddev_to_conf (mp_bh->mddev); -bio_endio (bio, bio->bi_size, uptodate ?0 : -EIO ); +bio_endio (bio, bio->bi_size, uptodate ?BLK_SUCCESS :BLK_ERR );mempool_free (mp_bh, conf->pool); }
drivers/md/raid1.c +1 -1
@@ -229,7 +229,7 @@ static void raid_end_bio_io(r1bio_t *r1_struct bio *bio = r1_bio->master_bio;bio_endio (bio, bio->bi_size, -test_bit (R1BIO_Uptodate, &r1_bio->state) ?0 : -EIO ); +test_bit (R1BIO_Uptodate, &r1_bio->state) ?BLK_SUCCESS :BLK_ERR );free_r1bio (r1_bio); }
drivers/md/raid5.c +2 -2
@@ -1221,7 +1221,7 @@ static void handle_stripe(struct stripe_ return_bi = bi->bi_next; bi->bi_next =NULL ; bi->bi_size =0 ; - bi->bi_end_io (bi, bytes,0 ); + bi->bi_end_io (bi, bytes,BLK_SUCCESS ); }for (i=disks; i-- ;) {int rw;
@@ -1372,7 +1372,7 @@ static int make_request (request_queue_tif (bio_data_dir (bi) ==WRITE )md_write_end (mddev); bi->bi_size =0 ; - bi->bi_end_io (bi, bytes,0 ); + bi->bi_end_io (bi, bytes,BLK_SUCCESS ); }spin_unlock_irq (&conf->device_lock);return 0 ;
drivers/md/raid6main.c +2 -2
@@ -1383,7 +1383,7 @@ static void handle_stripe(struct stripe_ return_bi = bi->bi_next; bi->bi_next =NULL ; bi->bi_size =0 ; - bi->bi_end_io (bi, bytes,0 ); + bi->bi_end_io (bi, bytes,BLK_SUCCESS ); }for (i=disks; i-- ;) {int rw;
@@ -1534,7 +1534,7 @@ static int make_request (request_queue_tif (bio_data_dir (bi) ==WRITE )md_write_end (mddev); bi->bi_size =0 ; - bi->bi_end_io (bi, bytes,0 ); + bi->bi_end_io (bi, bytes,BLK_SUCCESS ); }spin_unlock_irq (&conf->device_lock);return 0 ;
drivers/s390/block/dcssblk.c +1 -1
@@ -641,7 +641,7 @@ dcssblk_make_request(request_queue_t *q, } bytes_done += bvec->bv_len; } -bio_endio (bio, bytes_done,0 ); +bio_endio (bio, bytes_done,BLK_SUCCESS );return 0 ; fail:bio_io_error (bio, bytes_done);
drivers/s390/block/xpram.c +1 -1
@@ -322,7 +322,7 @@ static int xpram_make_request(request_quset_bit (BIO_UPTODATE , &bio->bi_flags); bytes = bio->bi_size; bio->bi_size =0 ; - bio->bi_end_io (bio, bytes,0 ); + bio->bi_end_io (bio, bytes,BLK_SUCCESS );return 0 ; fail:bio_io_error (bio, bio->bi_size);
fs/bio.c +2 -2
@@ -473,7 +473,7 @@ struct bio *bio_map_user(request_queue_tbio_get (bio);if (bio->bi_size < len) { -bio_endio (bio, bio->bi_size,0 ); +bio_endio (bio, bio->bi_size,BLK_SUCCESS );bio_unmap_user (bio,0 );return NULL ; }
@@ -737,7 +737,7 @@ struct bio_pair *bio_split(struct bio *bBUG_ON (bi->bi_vcnt !=1 );BUG_ON (bi->bi_idx !=0 );atomic_set (&bp->cnt,3 ); - bp->error =0 ; + bp->error =BLK_SUCCESS ; bp->bio1 = *bi; bp->bio2 = *bi; bp->bio2.bi_sector += first_sectors;
mm/highmem.c +1 -1
@@ -328,7 +328,7 @@ static void bounce_end_io(struct bio *bi } out_eio: -bio_endio (bio_orig, bio_orig->bi_size,0 ); +bio_endio (bio_orig, bio_orig->bi_size,BLK_SUCCESS );bio_put (bio); }