mdconfig -o compress cont.2006年04月22日 12時31分25秒

取り合えず、どうなっているのかソースを追ってみるとする。mdconfig を覗く。

  } else if (action == ATTACH) {
    if (cmdline < 2)
      usage();
    i = ioctl(fd, MDIOCATTACH, &mdio);
    if (i < 0)
      err(1, "ioctl(/dev/%s)", MDCTL_NAME);
    if (mdio.md_options & MD_AUTOUNIT)
      printf("%s%d\n", nflag ? "" : MD_NAME, mdio.md_unit);
  }

ioctl を呼んでいるのがわかる。なお、ソースは 6.1-RC1 である。

$ cd /usr/src/sys
$ find . -type f | xargs grep MDIOCATTACH
./dev/md/md.c:  case MDIOCATTACH:
./sys/mdioctl.h:#define MDIOCATTACH     _IOWR('m', 0, struct md_ioctl)  /* attach disk */

dev/md/md.c を見ると、

  switch (cmd) {
  case MDIOCATTACH:
    switch (mdio->md_type) {
    case MD_MALLOC:
    case MD_PRELOAD:
    case MD_VNODE:
    case MD_SWAP:
      break;
    default:
      return (EINVAL);
    }

とあり、その少し下に、

    switch (sc->type) {
    case MD_MALLOC:
      sc->start = mdstart_malloc;
      error = mdcreate_malloc(sc, mdio);
      break;
    case MD_PRELOAD:
      sc->start = mdstart_preload;
      error = mdcreate_preload(sc, mdio);
      break;
    case MD_VNODE:
      sc->start = mdstart_vnode;
      error = mdcreate_vnode(sc, mdio, td);
      break;
    case MD_SWAP:
      sc->start = mdstart_swap;
      error = mdcreate_swap(sc, mdio, td);
      break;
    }

とある。各種類毎に違った初期化をしている。

この先も眺めては見たものの把握しきれなかった。しかし、-ocompress を付けて mdconfig しても、/usr/src の大きさが 400MB に迫る。そこから推測できるのが、小さいファイルには圧縮が効かないか、-ocompress 自体が実装されていない、のどちらかになる。

どちらにせよ、今回の目的では使えないので、諦めることにした。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2006/04/13/325856/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。