`/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이렇게 하면 mount mount 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

관련 정보