テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

bioに追加されたbi_iterがデバイスマッパーターゲットに及ぼす影響

ケントがblockレイヤーを大きくリファクタリングした. 調べると一年前くらいからコミュニティに提案していた大きな成果のようだ(http://www.redhat.com/archives/dm-devel/2012-September/msg00120.html). 3.13から導入される?この変更により, writeboostも多少影響を受けるように思う. ケントは根っからのストレージ野郎だ.

https://lkml.org/lkml/2013/8/7/623

commit ca51e399427712cb818c0a3df7938f8a80af76d5
Author: Kent Overstreet <kmo@daterainc.com>
Date:   Fri Oct 11 15:44:27 2013 -0700

    block: Abstract out bvec iterator

    Immutable biovecs are going to require an explicit iterator. To
    implement immutable bvecs, a later patch is going to add a bi_bvec_done
    member to this struct; for now, this patch effectively just renames
    things.

この変更によって, DMレイヤーに影響が及んでいる. 一番小さいものはdm-linearであり, 以下のように, bi_sectorにつくまでに一度bi_iterを経由せねばならなくなっている. writeboostへの影響もこの程度であろうと推測する. コンパイルして通らなかったら直すくらいのもので, 論理的に強烈におかしくなることはないであろう.

akira@Lyle:~/linux-bcache/drivers/md$ git d 55a62ee dm-linear.c
diff --git a/drivers/md/dm-linear.c b/drivers/md/dm-linear.c
index 4f99d26..53e848c 100644
--- a/drivers/md/dm-linear.c
+++ b/drivers/md/dm-linear.c
@@ -85,7 +85,8 @@ static void linear_map_bio(struct dm_target *ti, struct bio *bio)

        bio->bi_bdev = lc->dev->bdev;
        if (bio_sectors(bio))
-               bio->bi_sector = linear_map_sector(ti, bio->bi_sector);
+               bio->bi_iter.bi_sector =
+                       linear_map_sector(ti, bio->bi_iter.bi_sector);
 }