Multiple devpts instances
Get series with b4
b4 am [email protected]Versions newest first
- 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 files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/9 | Remove devpts_root globalfs/ | +20 | 0 replies | |
| 2/9 | Per-mount allocated_ptysfs/ | +48 | 0 replies | |
| 3/9 | Per-mount 'config' objectfs/ | +29 | 0 replies | |
| 4/9 | Extract option parsing to new functionfs/ | +9 | 0 replies | |
| 5/9 | Add DEVPTS_MULTIPLE_INSTANCES config tokendrivers/ | +11 | 0 replies | |
| 6/9 | Define mknod_ptmx()fs/ | +109 | 0 replies | |
| 7/9 | Define get_init_pts_sb()fs/ | +54 | 0 replies | |
| 8/9 | Enable multiple instances of devptsfs/ | +163 | 0 replies | |
| 9/9 | Document usage of multiple-instances of devptsDocumentation/ | +132 | 3 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.
| Patch | Serge Hallyn |
|---|---|
| Series | T-b A-b |
| 1/9 | A-b |
| 2/9 | |
| 3/9 | A-b |
| 4/9 | A-b |
| 5/9 | A-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.
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).