dentry

# mcrash

## dentry

### 書式

usage: `dentry` [-s] [-p] [address]

### 説明

dentryはディレクトリエントリのキャッシュです。 オープンしているファイルはすべてdentryが作られます。 同じファイルを複数回オープンした場合でもdentryはひとつだけです (参照数 CNT が増えます)。 またオープンだけでなく "`a/b/c/d`" というファイルを アクセスした場合には a, b, c, d それぞれに対するdentryが作成されます。 使わなくなったファイル名であっても、 メモリに余裕があればdentryは残り続けキャッシュとして働きます。 このためdentryはディレクトリキャッシュ(dcache)とも呼ばれます。

dentryコマンドでは引数でaddressを指定しなかった場合、 ハッシュからすべてのdentryを表示します。

dentryには以下の2種類があります。

- 実ファイルが存在するもの (INODEのエントリがNULL以外)
- 実ファイルが存在しないもの (INODEのエントリがNULL)

ファイルが存在しないことをキャッシュしておく事により、 存在しないファイルへ頻繁にアクセスがあった場合に 素早く`ENOENT`を返すことができます。 このようなファイルの例としてはWWWで使われる `.htaccess` などがあります。

INODEエントリは `inode` コマンドで表示できます。 SBエントリは `super_block` コマンドで表示できます。

HLCSAエントリに表示する文字は以下の意味です。

H | ハッシュリストにリンクされている
L | LRUリストにリンクされている
C | childにリンクされている
S | subdirsにリンクされている
A | aliasにリンクされている

### オプション

-s
  サブディレクトリを表示します。
-p
  親ディレクトリを再帰的に表示します。ファイルシステムのルートで止まります。

### 実行例

一覧表示

    > dentry
        ADDR CNT    INODE   PARENT HLCSA     D_OP       SB F NAME
    cb9f55a0   1 cb34d860 cbc39720 H-C-A        0 cbf7f400 8 boot.log
    c8dbb440   1 c94532c0 c8dbb3c0 H-C-A        0 cbf7f400 8 pam_stack.so
    c31b7520   0 cb8c7d80 cbd12e60 HLC-A c0251540 cbb41400 0 CyberTrio
    c8e3a0c0   4 c928ae00 ca7e3a20 H-C-A        0 cbf7f400 8 libXt.so.6.0
    c23f9ee0   1 c1d20840 c945bc20 H-CSA        0 cbf7f400 8 textmodes
    cb36f120   0 cbf42bc0 cbfec9a0 HLC-A        0 cbf7f400 0 ld.so.cache
    ca21d3c0  13 ca1c2680 ca7e3a20 H-C-A        0 cbf7f400 8 libSM.so.6.0
      (略)

dentryを検索

    > dentry | grep " arch$"
    cbd3ee20   1 cae57080 cbd3e1a0 H-CSA        0 cbf21000 8 arch
    cb4f49a0   2 c3971ba0 cb506a20 H-CSA        0 cbbde800 8 arch

サブディレクトリ表示

    > dentry -s cb4f49a0
        ADDR CNT    INODE   PARENT HLCSA     D_OP       SB F NAME
    cb5519e0   0 c3b5a5e0 cb4f49a0 HLC-A        0 cbbde800 0 dummy
    cb551960   0 c3b5a7c0 cb4f49a0 HLC-A        0 cbbde800 0 i386

親ディレクトリ

    > dentry -p cb4f49a0
        ADDR CNT    INODE   PARENT HLCSA     D_OP       SB F NAME
    cb4f49a0   2 c3971ba0 cb506a20 H-CSA        0 cbbde800 8 arch
    cb506a20  25 c362a0a0 cb5068a0 H-CSA        0 cbbde800 8 mcrash
    cb5068a0   1 c362a640 cb332460 H-CSA        0 cbbde800 8 src
    cb332460  68 c7c4e4a0 caff2620 H-CSA        0 cbbde800 8 masano
    caff2620   3 cadf42a0 caff2620 ---SA        0 cbbde800 0 /

mcrash, Copyright (C) 2002,2003 ASANO Masahiro