[lxc-devel] [PATCH] create fd, stdin, stdout, stderr symlinks in /dev
Michael H. Warfield
mhw at WittsEnd.com
Thu Feb 13 21:26:59 UTC 2014
Nice job. Ya beat me too it.
Acked-by: Michael H. Warfield <mhw at WittsEnd.com>
On Thu, 2014-02-13 at 16:13 -0500, Dwight Engen wrote:
> The kernel's Documentation/devices.txt says that these symlinks should
> exist in /dev (they are listed in the "Compulsory" section). I'm not
> currently adding nfsd and X0R since they are required for iBCS, but
> they can be easily added to the array later if need be.
>
> Signed-off-by: Dwight Engen <dwight.engen at oracle.com>
> ---
> src/lxc/conf.c | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> index 6fa3db9..0de189f 100644
> --- a/src/lxc/conf.c
> +++ b/src/lxc/conf.c
> @@ -812,6 +812,38 @@ static int setup_utsname(struct utsname *utsname)
> return 0;
> }
>
> +struct dev_symlinks {
> + const char *oldpath;
> + const char *name;
> +};
> +
> +static const struct dev_symlinks dev_symlinks[] = {
> + {"/proc/self/fd", "fd"},
> + {"/proc/self/fd/0", "stdin"},
> + {"/proc/self/fd/1", "stdout"},
> + {"/proc/self/fd/2", "stderr"},
> +};
> +
> +static int setup_dev_symlinks(const struct lxc_rootfs *rootfs)
> +{
> + char path[MAXPATHLEN];
> + int ret,i;
> +
> +
> + for (i = 0; i < sizeof(dev_symlinks) / sizeof(dev_symlinks[0]); i++) {
> + const struct dev_symlinks *d = &dev_symlinks[i];
> + ret = snprintf(path, sizeof(path), "%s/dev/%s", rootfs->mount, d->name);
> + if (ret < 0 || ret >= MAXPATHLEN)
> + return -1;
> + ret = symlink(d->oldpath, path);
> + if (ret && errno != EEXIST) {
> + SYSERROR("Error creating %s", path);
> + return -1;
> + }
> + }
> + return 0;
> +}
> +
> static int setup_tty(const struct lxc_rootfs *rootfs,
> const struct lxc_tty_info *tty_info, char *ttydir)
> {
> @@ -3616,6 +3648,11 @@ int lxc_setup(struct lxc_handler *handler)
> return -1;
> }
>
> + if (!lxc_conf->is_execute && setup_dev_symlinks(&lxc_conf->rootfs)) {
> + ERROR("failed to setup /dev symlinks for '%s'", name);
> + return -1;
> + }
> +
> /* mount /proc if needed for LSM transition */
> if (lsm_proc_mount(lxc_conf) < 0) {
> ERROR("failed to LSM mount proc for '%s'", name);
> --
> 1.8.5.3
>
>
--
Michael H. Warfield (AI4NB) | (770) 978-7061 | mhw at WittsEnd.com
/\/\|=mhw=|\/\/ | (678) 463-0932 | http://www.wittsend.com/mhw/
NIC whois: MHW9 | An optimist believes we live in the best of all
PGP Key: 0x674627FF | possible worlds. A pessimist is sure of it!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 465 bytes
Desc: This is a digitally signed message part
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20140213/6137b53e/attachment.pgp>
More information about the lxc-devel
mailing list