LINK_MAXとサブディレクトリの関係

LINK_MAX
1ファイルあたりの最大リンク数

ハードリンクとは
データとそのデータに付けた名前を繋げるもの
linuxの場合、inodeに名前を付けて繋げること

/
 |- test
   |- test1/
   |- test2

drwxr-xr-x  3 root root 4096 10月  7 15:06 .
drwxr-xr-x 28 root root 4096 10月  7 15:04 ..
drwxr-xr-x  2 root root 4096 10月  7 15:05 test1
-rw-r--r--  1 root root    0 10月  7 15:06 test2

何故LINKL_MAXがサブディレクトリ数と関係するのか
サブディレクトリの最大個数がLINK_MAX-2個なのはディレクトリ・ファイルなどのデータは1つ以上のハードリンクを持っている。testディレクトリについてlnでリンク数をみると

drwxr-xr-x 3 root root 4096 10月 7 15:06 .
上記より3となっている。これはtestディレクトリと同じデータを見るリンク、

  1. /からtestへのリンク
  2. testからtest(.)へのリンク
  3. test1からtest(test1での..)へのリンク

以上3つのリンクが存在する。

決して、testディレクトリの中にディレクトリ. .. test1の3つのディレクトリがあるからではない。testの指すデータへのリンクが3つあることを表している。


例)LINK_MAXが127の時
testの持てるサブディレクトリ数は

  1. /からtestへのリンク
  2. testからtest(.)へのリンク

以上はすでに存在しているので、125個。