`/proc/self/mountinfo`の「ファイルシステム関連情報」とは何ですか?

`/proc/self/mountinfo`の「ファイルシステム関連情報」とは何ですか?

マンページ/proc/pid/マウント情報フィールドがあるとしましょう。

36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue

(1)(2)(3)   (4)   (5)      (6)      (7)   (8) (9)   (10)         (11)

(10)マウントソース:ファイルシステム関連情報または「なし」。

このフィールド(10)は正確に何を意味しますか?私の実験で奇妙な結果が出ました。

279 23 7:0 /file//deleted /home/xtricman/file_mnt_point rw,relatime shared:158 - ext4 /dev/loop0 rw
301 23 7:0 /file2//deleted /home/xtricman/file_mnt_point2 rw,relatime shared:158 - ext4 /dev/loop0 rw
268 23 7:0 / /mnt rw,relatime shared:159 - ext4 /dev/loop0 rw
313 23 7:0 / /home/xtricman/home_mnt rw,relatime shared:183 - ext4 /home/xtricman/loop1 rw

/dev/loop0mountこれにより、プログラムによって自動的に生成され、mount a.ext4 /mnt手動/home/xtricman/loop1で生成されますmknod loop1 b 7 0

それで、私が見ている結果はほとんど説明できないでしょうが、なぜデバイスノードパスが(10)フィールドに表示されるのでしょうか。私はArchLinuxでLinux 5.0.4カーネルを使用しています。

ベストアンサー1

このフィールド(10)は正確に何を意味しますか?

sourceこれは、システムコール()に渡された最初の引数、またはmount(2)次のようになります。show_devname()ファイルシステムがそれを実装する場合のコールバック。

実際には存在しない可能性があるため、実際に存在できるオプション(7)のフィールドのリストです。(10)(9)

/dev/loop0これにより、mountmount a.ext4 /mnt/home/xtricman/loop1manualによって自動的に生成されますmknod loop1 b 7 0

/dev/loop0システムコールを使用するときに「自動生成」はありませんmount(2)

これはmount(8) 便利通常のファイル「デバイス」引数(およびいくつかのDWIM推測を使用)を使用して呼び出すと、最初に利用可能なループデバイスを見つけて引数として提供されたファイルに追加し、ループデバイスのパスとmount(2)マウントポイントを引数として使用します。 。

例:

# strace -e trace=ioctl,mount mount /tmp/foo $'/tmp/foox\tX\nX\\X X'
ioctl(3, LOOP_CTL_GET_FREE)             = 0
ioctl(4, LOOP_SET_FD, 3)                = 0
ioctl(4, LOOP_SET_STATUS64, {lo_offset=0, lo_number=0, lo_flags=LO_FLAGS_AUTOCLEAR, lo_file_name="/tmp/foo", ...}) = 0
ioctl(3, BLKGETSIZE64, [536870912])     = 0
ioctl(3, CDROM_GET_CAPABILITY, 0)       = -1 EINVAL (Invalid argument)
ioctl(3, BLKSSZGET, [512])              = 0
mount("/dev/loop0", "/tmp/foox\tX\nX\\X X", "btrfs", MS_MGC_VAL, NULL) = 0

おすすめ記事