Skip to content

Commit 3845f25

Browse files
Kalesh Singhtorvalds
authored andcommitted
procfs/dmabuf: add inode number to /proc/*/fdinfo
And 'ino' field to /proc/<pid>/fdinfo/<FD> and /proc/<pid>/task/<tid>/fdinfo/<FD>. The inode numbers can be used to uniquely identify DMA buffers in user space and avoids a dependency on /proc/<pid>/fd/* when accounting per-process DMA buffer sizes. Link: https://lkml.kernel.org/r/20210308170651.919148-2-kaleshsingh@google.com Signed-off-by: Kalesh Singh <kaleshsingh@google.com> Acked-by: Randy Dunlap <rdunlap@infradead.org> Acked-by: Christian König <christian.koenig@amd.com> Cc: Jann Horn <jannh@google.com> Cc: Jeff Vander Stoep <jeffv@google.com> Cc: Kees Cook <keescook@chromium.org> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Hridya Valsaraju <hridya@google.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Kalesh Singh <kaleshsingh@google.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Alexey Gladkov <gladkov.alexey@gmail.com> Cc: Szabolcs Nagy <szabolcs.nagy@arm.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Christian Brauner <christian.brauner@ubuntu.com> Cc: Michel Lespinasse <walken@google.com> Cc: Bernd Edlinger <bernd.edlinger@hotmail.de> Cc: Andrei Vagin <avagin@gmail.com> Cc: Helge Deller <deller@gmx.de> Cc: James Morris <jamorris@linux.microsoft.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 7bc3fa0 commit 3845f25

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

Documentation/filesystems/proc.rst

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1920,18 +1920,20 @@ if precise results are needed.
19201920
3.8 /proc/<pid>/fdinfo/<fd> - Information about opened file
19211921
---------------------------------------------------------------
19221922
This file provides information associated with an opened file. The regular
1923-
files have at least three fields -- 'pos', 'flags' and 'mnt_id'. The 'pos'
1924-
represents the current offset of the opened file in decimal form [see lseek(2)
1925-
for details], 'flags' denotes the octal O_xxx mask the file has been
1926-
created with [see open(2) for details] and 'mnt_id' represents mount ID of
1927-
the file system containing the opened file [see 3.5 /proc/<pid>/mountinfo
1928-
for details].
1923+
files have at least four fields -- 'pos', 'flags', 'mnt_id' and 'ino'.
1924+
The 'pos' represents the current offset of the opened file in decimal
1925+
form [see lseek(2) for details], 'flags' denotes the octal O_xxx mask the
1926+
file has been created with [see open(2) for details] and 'mnt_id' represents
1927+
mount ID of the file system containing the opened file [see 3.5
1928+
/proc/<pid>/mountinfo for details]. 'ino' represents the inode number of
1929+
the file.
19291930

19301931
A typical output is::
19311932

19321933
pos: 0
19331934
flags: 0100002
19341935
mnt_id: 19
1936+
ino: 63107
19351937

19361938
All locks associated with a file descriptor are shown in its fdinfo too::
19371939

@@ -1948,6 +1950,7 @@ Eventfd files
19481950
pos: 0
19491951
flags: 04002
19501952
mnt_id: 9
1953+
ino: 63107
19511954
eventfd-count: 5a
19521955

19531956
where 'eventfd-count' is hex value of a counter.
@@ -1960,6 +1963,7 @@ Signalfd files
19601963
pos: 0
19611964
flags: 04002
19621965
mnt_id: 9
1966+
ino: 63107
19631967
sigmask: 0000000000000200
19641968

19651969
where 'sigmask' is hex value of the signal mask associated
@@ -1973,6 +1977,7 @@ Epoll files
19731977
pos: 0
19741978
flags: 02
19751979
mnt_id: 9
1980+
ino: 63107
19761981
tfd: 5 events: 1d data: ffffffffffffffff pos:0 ino:61af sdev:7
19771982

19781983
where 'tfd' is a target file descriptor number in decimal form,
@@ -1989,6 +1994,8 @@ For inotify files the format is the following::
19891994

19901995
pos: 0
19911996
flags: 02000000
1997+
mnt_id: 9
1998+
ino: 63107
19921999
inotify wd:3 ino:9e7e sdev:800013 mask:800afce ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:7e9e0000640d1b6d
19932000

19942001
where 'wd' is a watch descriptor in decimal form, i.e. a target file
@@ -2011,6 +2018,7 @@ For fanotify files the format is::
20112018
pos: 0
20122019
flags: 02
20132020
mnt_id: 9
2021+
ino: 63107
20142022
fanotify flags:10 event-flags:0
20152023
fanotify mnt_id:12 mflags:40 mask:38 ignored_mask:40000003
20162024
fanotify ino:4f969 sdev:800013 mflags:0 mask:3b ignored_mask:40000000 fhandle-bytes:8 fhandle-type:1 f_handle:69f90400c275b5b4
@@ -2035,6 +2043,7 @@ Timerfd files
20352043
pos: 0
20362044
flags: 02
20372045
mnt_id: 9
2046+
ino: 63107
20382047
clockid: 0
20392048
ticks: 0
20402049
settime flags: 01
@@ -2049,6 +2058,22 @@ details]. 'it_value' is remaining time until the timer expiration.
20492058
with TIMER_ABSTIME option which will be shown in 'settime flags', but 'it_value'
20502059
still exhibits timer's remaining time.
20512060

2061+
DMA Buffer files
2062+
~~~~~~~~~~~~~~~~
2063+
2064+
::
2065+
2066+
pos: 0
2067+
flags: 04002
2068+
mnt_id: 9
2069+
ino: 63107
2070+
size: 32768
2071+
count: 2
2072+
exp_name: system-heap
2073+
2074+
where 'size' is the size of the DMA buffer in bytes. 'count' is the file count of
2075+
the DMA buffer file. 'exp_name' is the name of the DMA buffer exporter.
2076+
20522077
3.9 /proc/<pid>/map_files - Information about memory mapped files
20532078
---------------------------------------------------------------------
20542079
This directory contains symbolic links which represent memory mapped files

fs/proc/fd.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ static int seq_show(struct seq_file *m, void *v)
5454
if (ret)
5555
return ret;
5656

57-
seq_printf(m, "pos:\t%lli\nflags:\t0%o\nmnt_id:\t%i\n",
57+
seq_printf(m, "pos:\t%lli\nflags:\t0%o\nmnt_id:\t%i\nino:\t%lu\n",
5858
(long long)file->f_pos, f_flags,
59-
real_mount(file->f_path.mnt)->mnt_id);
59+
real_mount(file->f_path.mnt)->mnt_id,
60+
file_inode(file)->i_ino);
6061

6162
/* show_fd_locks() never deferences files so a stale value is safe */
6263
show_fd_locks(m, file, files);

0 commit comments

Comments
 (0)