mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
eedf265aa0
The /dev/ptmx device node is changed to lookup the directory entry "pts" in the same directory as the /dev/ptmx device node was opened in. If there is a "pts" entry and that entry is a devpts filesystem /dev/ptmx uses that filesystem. Otherwise the open of /dev/ptmx fails. The DEVPTS_MULTIPLE_INSTANCES configuration option is removed, so that userspace can now safely depend on each mount of devpts creating a new instance of the filesystem. Each mount of devpts is now a separate and equal filesystem. Reserved ttys are now available to all instances of devpts where the mounter is in the initial mount namespace. A new vfs helper path_pts is introduced that finds a directory entry named "pts" in the directory of the passed in path, and changes the passed in path to point to it. The helper path_pts uses a function path_parent_directory that was factored out of follow_dotdot. In the implementation of devpts: - devpts_mnt is killed as it is no longer meaningful if all mounts of devpts are equal. - pts_sb_from_inode is replaced by just inode->i_sb as all cached inodes in the tty layer are now from the devpts filesystem. - devpts_add_ref is rolled into the new function devpts_ptmx. And the unnecessary inode hold is removed. - devpts_del_ref is renamed devpts_release and reduced to just a deacrivate_super. - The newinstance mount option continues to be accepted but is now ignored. In devpts_fs.h definitions for when !CONFIG_UNIX98_PTYS are removed as they are never used. Documentation/filesystems/devices.txt is updated to describe the current situation. This has been verified to work properly on openwrt-15.05, centos5, centos6, centos7, debian-6.0.2, debian-7.9, debian-8.2, ubuntu-14.04.3, ubuntu-15.10, fedora23, magia-5, mint-17.3, opensuse-42.1, slackware-14.1, gentoo-20151225 (13.0?), archlinux-2015-12-01. With the caveat that on centos6 and on slackware-14.1 that there wind up being two instances of the devpts filesystem mounted on /dev/pts, the lower copy does not end up getting used. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Greg KH <greg@kroah.com> Cc: Peter Hurley <peter@hurleysoftware.com> Cc: Peter Anvin <hpa@zytor.com> Cc: Andy Lutomirski <luto@amacapital.net> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Serge Hallyn <serge.hallyn@ubuntu.com> Cc: Willy Tarreau <w@1wt.eu> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: One Thousand Gnomes <gnomes@lxorguk.ukuu.org.uk> Cc: Jann Horn <jann@thejh.net> Cc: Jiri Slaby <jslaby@suse.com> Cc: Florian Weimer <fw@deneb.enyo.de> Cc: Konstantin Khlebnikov <koct9i@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
27 lines
1.3 KiB
Plaintext
27 lines
1.3 KiB
Plaintext
Each mount of the devpts filesystem is now distinct such that ptys
|
|
and their indicies allocated in one mount are independent from ptys
|
|
and their indicies in all other mounts.
|
|
|
|
All mounts of the devpts filesystem now create a /dev/pts/ptmx node
|
|
with permissions 0000.
|
|
|
|
To retain backwards compatibility the a ptmx device node (aka any node
|
|
created with "mknod name c 5 2") when opened will look for an instance
|
|
of devpts under the name "pts" in the same directory as the ptmx device
|
|
node.
|
|
|
|
As an option instead of placing a /dev/ptmx device node at /dev/ptmx
|
|
it is possible to place a symlink to /dev/pts/ptmx at /dev/ptmx or
|
|
to bind mount /dev/ptx/ptmx to /dev/ptmx. If you opt for using
|
|
the devpts filesystem in this manner devpts should be mounted with
|
|
the ptmxmode=0666, or chmod 0666 /dev/pts/ptmx should be called.
|
|
|
|
Total count of pty pairs in all instances is limited by sysctls:
|
|
kernel.pty.max = 4096 - global limit
|
|
kernel.pty.reserve = 1024 - reserved for filesystems mounted from the initial mount namespace
|
|
kernel.pty.nr - current count of ptys
|
|
|
|
Per-instance limit could be set by adding mount option "max=<count>".
|
|
This feature was added in kernel 3.4 together with sysctl kernel.pty.reserve.
|
|
In kernels older than 3.4 sysctl kernel.pty.max works as per-instance limit.
|