dm raid1: remove bio_endio from dm_rh_mark_nosync
authorMikulas Patocka <mpatocka@redhat.com>
Thu, 10 Dec 2009 23:52:05 +0000 (23:52 +0000)
committerAlasdair G Kergon <agk@redhat.com>
Thu, 10 Dec 2009 23:52:05 +0000 (23:52 +0000)
Move bio completion out of dm_rh_mark_nosync in preparation for the
next patch.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Reviewed-by: Takahiro Yasui <tyasui@redhat.com>
Tested-by: Takahiro Yasui <tyasui@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
drivers/md/dm-raid1.c
drivers/md/dm-region-hash.c
include/linux/dm-region-hash.h

index d1a7f1a4789ce508b5b4e02bb07055d136cf3ce5..4f466ad75680f2d430533f3100d9f21e62ec0b0f 100644 (file)
@@ -779,7 +779,8 @@ static void do_failures(struct mirror_set *ms, struct bio_list *failures)
                        hold_bio(ms, bio);
                else {
                        ms->in_sync = 0;
-                       dm_rh_mark_nosync(ms->rh, bio, bio->bi_size, 0);
+                       dm_rh_mark_nosync(ms->rh, bio);
+                       bio_endio(bio, 0);
                }
        }
 }
index 00806b760ccd7420aff6fc25183c2dd9eab009a2..5f19ceb6fe91f6c214c9103cc4b5b4037de84a9f 100644 (file)
@@ -383,8 +383,6 @@ static void complete_resync_work(struct dm_region *reg, int success)
 /* dm_rh_mark_nosync
  * @ms
  * @bio
- * @done
- * @error
  *
  * The bio was written on some mirror(s) but failed on other mirror(s).
  * We can successfully endio the bio but should avoid the region being
@@ -392,8 +390,7 @@ static void complete_resync_work(struct dm_region *reg, int success)
  *
  * This function is _not_ safe in interrupt context!
  */
-void dm_rh_mark_nosync(struct dm_region_hash *rh,
-                      struct bio *bio, unsigned done, int error)
+void dm_rh_mark_nosync(struct dm_region_hash *rh, struct bio *bio)
 {
        unsigned long flags;
        struct dm_dirty_log *log = rh->log;
@@ -430,7 +427,6 @@ void dm_rh_mark_nosync(struct dm_region_hash *rh,
        BUG_ON(!list_empty(&reg->list));
        spin_unlock_irqrestore(&rh->region_lock, flags);
 
-       bio_endio(bio, error);
        if (recovering)
                complete_resync_work(reg, 0);
 }
index a9e652a4137370e19fe24e0ab619a18a131074f0..9e2a7a401df50577c604bc99ed70eba43ffae833 100644 (file)
@@ -78,8 +78,7 @@ void dm_rh_dec(struct dm_region_hash *rh, region_t region);
 /* Delay bios on regions. */
 void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio);
 
-void dm_rh_mark_nosync(struct dm_region_hash *rh,
-                      struct bio *bio, unsigned done, int error);
+void dm_rh_mark_nosync(struct dm_region_hash *rh, struct bio *bio);
 
 /*
  * Region recovery control.