テストステ論

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

(writeboost report) writeboost-mgrの設計は正しい

カーゴンから, インターフェイスに関する設計を完璧にしろと言われている. writeboost-mgrは, キャッシュを管理するインターフェイスを提供するために存在する. このインターフェイスはもう少し良く出来る可能性があるかも知れないが, 現実的にはこれでいい. では, すでに存在するターゲットでこの設計を採用しているものがあれば追い風になる. そして幸運なことに, ある. それはdm-thinのpoolである.

i) Creating a new thinly-provisioned volume.

  To create a new thinly- provisioned volume you must send a message to an
  active pool device, /dev/mapper/pool in this example.

    dmsetup message /dev/mapper/pool 0 "create_thin 0"

  Here '0' is an identifier for the volume, a 24-bit number.  It's up
  to the caller to allocate and manage these identifiers.  If the
  identifier is already in use, the message will fail with -EEXIST.

厳密にいうと, 設計は異なる. poolは, たった一つしかないことが前提になっており, これを複数のthinデバイスが共有する形になっている. 他にも, create_snap, set_transaction_idといったmessageがある. 何をするかは知らないが, これらのメッセージを通して何か状態を変化させるという方針は分かる.

ちなみに, poolはシングルトンである. これらのフラグが何をするものかは知らないが, dm-thinでしか使われていない.

static struct target_type pool_target = {
        .name = "thin-pool",
        .features = DM_TARGET_SINGLETON | DM_TARGET_ALWAYS_WRITEABLE |
                    DM_TARGET_IMMUTABLE,

dm-writeboostの設計においてもっともやばい(指摘されやすい かつ 直すのが大変である)部分をクリアすることが出来たと思う. あとはじっくりオポを待つだけだ.