Skip to content

Multiple devpts instances

[email protected] containers 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest9 patches 19 repliesIn review

Changelog [v5] from the cover letter

- Merge all option-parsing (previously in patches 6,7) into patch 6.
- Bugfixes (see changelog in patches 6 and 8)
- Replace get_sb_ref() with devpts-specific get_init_pts_sb() (patch 7)
- Minor update to devpts.txt documentation (patch 9)

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/9Remove devpts_root globalfs/devpts/inode.c+20 -90 replies
2/9Per-mount allocated_ptysfs/devpts/inode.c+48 -70 replies
3/9Per-mount 'config' objectfs/devpts/inode.c+29 -200 replies
4/9Extract option parsing to new functionfs/devpts/inode.c+9 -30 replies
5/9Add DEVPTS_MULTIPLE_INSTANCES config tokendrivers/char/Kconfig+11 -00 replies
6/9Define mknod_ptmx()fs/devpts/inode.c+109 -40 replies
7/9Define get_init_pts_sb()fs/devpts/inode.c+54 -10 replies
8/9Enable multiple instances of devptsfs/devpts/inode.c+163 -70 replies
9/9Document usage of multiple-instances of devptsDocumentation/filesystems/devpts.txt+132 -03 replies

Reviews trailers per patch

4 of 9 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchSerge Hallyn
SeriesT-b A-b
1/9A-b
2/9
3/9A-b
4/9A-b
5/9A-b
6/9
7/9
8/9
9/9

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 0/9] Multiple devpts instances

Enable multiple instances of devpts filesystem so each container can allocate ptys independently.

User interface:

Since supporting multiple mounts of devpts can break user-space, this feature is enabled only if:

- CONFIG_DEVPTS_MULTIPLE_INSTANCES=y (new config token), and
- new mount option, -o newinstance is specified

If CONFIG_DEVPTS_MULTIPLE_INSTANCES=n, there should be no change in behavior.

See [PATCH 9/9] - Documentation/filesystems/devpts.txt for detailed usage/compatibility information.

[PATCH 1/9] Remove devpts_root global
[PATCH 2/9] Per-mount allocated_ptys
[PATCH 3/9] Per-mount 'config' object
[PATCH 4/9] Extract option parsing to new function [PATCH 5/9] Add DEVPTS_MULTIPLE_INSTANCES config token [PATCH 6/9] Define mknod_ptmx()
[PATCH 7/9] Define get_init_pts_sb()
[PATCH 8/9] Enable multiple instances of devpts [PATCH 9/9] Document usage of multiple-instances of devpts

Implementation notes:

1. To enable multiple mounts of /dev/pts, (most) devpts interfaces need to know which instance of devpts is being accessed. This patchset uses the 'struct inode' or 'struct tty_struct' of the device being accessed to identify the appropriate devpts instance. Hence the need for the /dev/pts/ptmx bind-mount.

2. Mount options must be parsed twice during mount (once to determine the mode of mount (single/multi-instance) and once to actually save the options. There does not seem to be an easy way to parse once and reuse (See 'safe_process_mount_opts()' in [PATCH 9/10])

Changelog [v5]:
- Merge all option-parsing (previously in patches 6,7) into patch 6.
- Bugfixes (see changelog in patches 6 and 8)
- Replace get_sb_ref() with devpts-specific get_init_pts_sb() (patch 7)
- Minor update to devpts.txt documentation (patch 9)

Changelog [v4]:

- Port to 2008-09-04 ttydev tree (and drop patches that were merged in)
- Add DEVPTS_MULTIPLE_INSTANCES config token (patch 5) and move new behavior under #ifdef CONFIG_DEVPTS_MULTIPLE_INSTANCES.
- Create ptmx node even in initial mount
- Change default permissions of pts/ptmx node to 0000 (patch 6)
- Cache ptmx dentry and use to update permissions of ptmx node on remount so legacy mode can use the node with a simpler change to /etc/fstab (patch 7)
- Move get_sb_ref() helper code to separate patch (patch 8)
- Add Documentation/filesystems/devpts.txt and describe usage info in that file.

Changelog [v3]:

- Port to 2008-08-28 ttydev tree
- Rename new mount options to 'ptmxmode' and 'newinstance'.
- [Alan Cox] Use tty driver data to identify devpts (this is used to cleanup get_node() in devpts_pty_kill()).
- [H. Peter Anvin] get_node() cleanup in devpts (which was enabled by the inode/tty parameter to devpts interfaces)
- Bugfix in multi-mount mode (see Patch 11/11).
- Executed pty tests in LTP (in both single-instance and multi-instance mode)
- Should be bisect-safe :-)

Changelog [v2]:

- New mount option '-o newmnt' added (patch 8/8)
- Support both single-mount and multi-mount semantics (patch 8/8)
- Automatically create ptmx node when devpts is mounted (patch 7/8)
- Extract option parsing code to new function (patch 6/8)
- Make 'config' params per-mount variables (patch 5/8)
- Slightly re-ordered existing patches in set (patches 1/8, 2/8)

TODO:
- Do we need a '-o ptmxuid' and '-o ptmxgid' options as well ?
- Update mount(8) man page
- (Sometime in future) Remove even initial kernel mount of devpts
- Any other good test suites to test this (besides LTP, sshd).