[Devel] [PATCH v2 rh7] tty: Revert custom virtualization

Cyrill Gorcunov gorcunov at virtuozzo.com
Mon Dec 14 01:44:46 PST 2015


This patch revert the following commits

	32261dbb962f56b0
	d6f07f1738511f50
	ef7194625adefadf
	7247bba9402a45c0
	996c733ac0f34af0
	953017eb9e823785
	ee5a5380520330fe
	fd19fc2c70ae5da0
	24fad9670914d675
	a707f641083da9b3
	b993de93b347199d
	7e96c89806c1671a

making code close to the native shipped with rhel7 kernel.
Initially we've been introducing tty device namespaces where
each tty driver lays inside own device namespace so that
every tty driver data carried own ve reference. This seems
to be unnesessary anymore: access into containers is done
either via Unix98 terminals where each container carries own
copy of devpts filesystem so the kernel can distinguish VEs,
either via virtual terminals (console) which are virtualized
by vtty engine code merged into the kernel where each peer
is assigned into appropriate VE using well known get_exec_ve
helper.

Once merged we need to update @ve.ve.default_sysfs_permissions adding

	devices/virtual/tty/console rx
	devices/virtual/tty/tty0 rx
	...
	devices/virtual/tty/tty12 rx

This patch is on top of 968f1ebae74f43c927a208a2b4d1f35b40b4046e

https://jira.sw.ru/browse/PSBM-41804

v2:
 - rebase on latest git repo

Signed-off-by: Cyrill Gorcunov <gorcunov at virtuozzo.com>
CC: Vladimir Davydov <vdavydov at virtuozzo.com>
CC: Konstantin Khorenko <khorenko at virtuozzo.com>
CC: Igor Sukhih <igor at parallels.com>
---
 drivers/base/core.c        |   29 -------
 drivers/base/devtmpfs.c    |   14 ---
 drivers/tty/pty.c          |  115 ++--------------------------
 drivers/tty/tty_io.c       |  184 ++++++---------------------------------------
 fs/sysfs/ve.c              |   10 --
 include/linux/device.h     |    1 
 include/linux/tty.h        |    6 -
 include/linux/tty_driver.h |    4 
 include/linux/ve.h         |   12 --
 kernel/ve/ve.c             |   18 ----
 10 files changed, 36 insertions(+), 357 deletions(-)

Index: linux-pcs7.git/drivers/base/core.c
===================================================================
--- linux-pcs7.git.orig/drivers/base/core.c
+++ linux-pcs7.git/drivers/base/core.c
@@ -1852,35 +1852,6 @@ void device_destroy(struct class *class,
 }
 EXPORT_SYMBOL_GPL(device_destroy);
 
-struct __match_devt_ns_arg {
-	dev_t	devt;
-	void	*ns;
-};
-
-static int __match_devt_ns(struct device *dev, const void *data)
-{
-	const struct __match_devt_ns_arg *arg = data;
-
-	return dev->devt == arg->devt &&
-		(!dev->class->namespace ||
-		 dev->class->namespace(dev) == arg->ns);
-}
-
-void device_destroy_namespace(struct class *class, dev_t devt, void *ns)
-{
-	struct __match_devt_ns_arg arg = {
-		.devt	= devt,
-		.ns	= ns,
-	};
-	struct device *dev;
-
-	dev = class_find_device(class, NULL, &arg, __match_devt_ns);
-	if (dev) {
-		put_device(dev);
-		device_unregister(dev);
-	}
-}
-
 /**
  * device_rename - renames a device
  * @dev: the pointer to the struct device to be renamed
Index: linux-pcs7.git/drivers/base/devtmpfs.c
===================================================================
--- linux-pcs7.git.orig/drivers/base/devtmpfs.c
+++ linux-pcs7.git/drivers/base/devtmpfs.c
@@ -135,16 +135,6 @@ static inline int is_blockdev(struct dev
 static inline int is_blockdev(struct device *dev) { return 0; }
 #endif
 
-#ifdef CONFIG_VE
-static inline int is_ve_dev(struct device *dev)
-{
-	return dev->class && dev->class->namespace == ve_namespace &&
-		ve_namespace(dev) != get_ve0();
-}
-#else
-static inline int is_ve_dev(struct device *dev) { return 0; }
-#endif
-
 int devtmpfs_create_node(struct device *dev)
 {
 	const char *tmp = NULL;
@@ -152,8 +142,6 @@ int devtmpfs_create_node(struct device *
 
 	if (!thread)
 		return 0;
-	if (is_ve_dev(dev))
-		return 0;
 
 	req.mode = 0;
 	req.uid = GLOBAL_ROOT_UID;
@@ -193,8 +181,6 @@ int devtmpfs_delete_node(struct device *
 
 	if (!thread)
 		return 0;
-	if (is_ve_dev(dev))
-		return 0;
 
 	req.name = device_get_devnode(dev, NULL, NULL, NULL, &tmp);
 	if (!req.name)
Index: linux-pcs7.git/drivers/tty/pty.c
===================================================================
--- linux-pcs7.git.orig/drivers/tty/pty.c
+++ linux-pcs7.git/drivers/tty/pty.c
@@ -490,35 +490,26 @@ static const struct tty_operations slave
 	.remove = pty_remove
 };
 
-static int __legacy_pty_init(struct ve_struct *ve, struct tty_driver **pty_driver_p,
-				     struct tty_driver **pty_slave_driver_p)
+static void __init legacy_pty_init(void)
 {
 	struct tty_driver *pty_driver, *pty_slave_driver;
-	int err;
 
 	if (legacy_count <= 0)
-		return 0;
+		return;
 
 	pty_driver = tty_alloc_driver(legacy_count,
 			TTY_DRIVER_RESET_TERMIOS |
 			TTY_DRIVER_REAL_RAW |
-			TTY_DRIVER_CONTAINERIZED |
 			TTY_DRIVER_DYNAMIC_ALLOC);
-	if (IS_ERR(pty_driver)) {
-		printk(KERN_ERR "Couldn't allocate pty driver");
-		return PTR_ERR(pty_driver);
-	}
+	if (IS_ERR(pty_driver))
+		panic("Couldn't allocate pty driver");
 
 	pty_slave_driver = tty_alloc_driver(legacy_count,
 			TTY_DRIVER_RESET_TERMIOS |
 			TTY_DRIVER_REAL_RAW |
-			TTY_DRIVER_CONTAINERIZED |
 			TTY_DRIVER_DYNAMIC_ALLOC);
-	if (IS_ERR(pty_slave_driver)) {
-		printk(KERN_ERR "Couldn't allocate pty slave driver");
-		err = PTR_ERR(pty_slave_driver);
-		goto err_pty_slave_alloc;
-	}
+	if (IS_ERR(pty_slave_driver))
+		panic("Couldn't allocate pty slave driver");
 
 	pty_driver->driver_name = "pty_master";
 	pty_driver->name = "pty";
@@ -534,7 +525,6 @@ static int __legacy_pty_init(struct ve_s
 	pty_driver->init_termios.c_ispeed = 38400;
 	pty_driver->init_termios.c_ospeed = 38400;
 	pty_driver->other = pty_slave_driver;
-	pty_driver->ve = ve;
 	tty_set_operations(pty_driver, &master_pty_ops_bsd);
 
 	pty_slave_driver->driver_name = "pty_slave";
@@ -548,71 +538,13 @@ static int __legacy_pty_init(struct ve_s
 	pty_slave_driver->init_termios.c_ispeed = 38400;
 	pty_slave_driver->init_termios.c_ospeed = 38400;
 	pty_slave_driver->other = pty_driver;
-	pty_slave_driver->ve = ve;
 	tty_set_operations(pty_slave_driver, &slave_pty_ops_bsd);
 
-	err = tty_register_driver(pty_driver);
-	if (err) {
-		printk(KERN_ERR "Couldn't register pty driver");
-		goto err_pty_master_register;
-	}
-
-	err = tty_register_driver(pty_slave_driver);
-	if (err) {
-		printk(KERN_ERR "Couldn't register pty slave driver");
-		goto err_pty_slave_register;
-	}
-
-	*pty_driver_p = pty_driver;
-	*pty_slave_driver_p = pty_slave_driver;
-	return 0;
-
-err_pty_slave_register:
-	tty_unregister_driver(pty_driver);
-err_pty_master_register:
-	put_tty_driver(pty_slave_driver);
-err_pty_slave_alloc:
-	put_tty_driver(pty_driver);
-	return err;
-}
-
-#ifdef CONFIG_VE
-#include <linux/ve.h>
-
-void ve_legacy_pty_fini(struct ve_struct *ve)
-{
-	struct tty_driver *pty_driver = ve->pty_driver;
-	struct tty_driver *pty_slave_driver = ve->pty_slave_driver;
-
-	ve->pty_driver = NULL;
-	ve->pty_slave_driver = NULL;
-
-	tty_unregister_driver(pty_slave_driver);
-	tty_unregister_driver(pty_driver);
-	put_tty_driver(pty_slave_driver);
-	put_tty_driver(pty_driver);
-
-}
-
-int ve_legacy_pty_init(struct ve_struct *ve)
-{
-	return __legacy_pty_init(ve, &ve->pty_driver, &ve->pty_slave_driver);
-}
-
-static void __init legacy_pty_init(void)
-{
-	if (__legacy_pty_init(get_ve0(), &get_ve0()->pty_driver, &get_ve0()->pty_slave_driver))
-		panic("Failed to init legacy ptys");
-}
-#else
-static void __init legacy_pty_init(void)
-{
-	struct tty_driver *pty_driver, *pty_slave_driver;
-
-	if (__legacy_pty_init(&pty_driver, &pty_slave_driver))
-		panic("Failed to init legacy ptys");
+	if (tty_register_driver(pty_driver))
+		panic("Couldn't register pty driver");
+	if (tty_register_driver(pty_slave_driver))
+		panic("Couldn't register pty slave driver");
 }
-#endif	// CONFIG_VE
 
 #else
 static inline void legacy_pty_init(void) { }
@@ -818,32 +750,6 @@ err_file:
 	return retval;
 }
 
-static int ve_unix98_pty_init(void *data)
-{
-	struct ve_struct *ve = data;
-	struct device *dev;
-
-	dev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 2), ve, "ptmx");
-	if (IS_ERR(dev)) {
-		pr_warn("Failed to create ptmx device for ve %s: %ld\n",
-			ve->ve_name, PTR_ERR(dev));
-		return PTR_ERR(dev);
-	}
-	return 0;
-}
-
-static void ve_unix98_pty_fini(void *data)
-{
-	device_destroy_namespace(tty_class, MKDEV(TTYAUX_MAJOR, 2), data);
-}
-
-static struct ve_hook ve_unix98_pty_hook = {
-	.init		= ve_unix98_pty_init,
-	.fini		= ve_unix98_pty_fini,
-	.priority	= HOOK_PRIO_DEFAULT,
-	.owner		= THIS_MODULE,
-};
-
 static struct file_operations ptmx_fops;
 
 static void __init unix98_pty_init(void)
@@ -908,7 +814,6 @@ static void __init unix98_pty_init(void)
 	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 2), 1, "/dev/ptmx") < 0)
 		panic("Couldn't register /dev/ptmx driver");
 	device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 2), NULL, "ptmx");
-	ve_hook_register(VE_SS_CHAIN, &ve_unix98_pty_hook);
 }
 
 #else
Index: linux-pcs7.git/drivers/tty/tty_io.c
===================================================================
--- linux-pcs7.git.orig/drivers/tty/tty_io.c
+++ linux-pcs7.git/drivers/tty/tty_io.c
@@ -3100,39 +3100,7 @@ int tty_put_char(struct tty_struct *tty,
 }
 EXPORT_SYMBOL_GPL(tty_put_char);
 
-static char *tty_devnode(struct device *dev, umode_t *mode);
-
-static struct class tty_class_base = {
-	.name = "tty",
-	.devnode = tty_devnode,
-	.ns_type = &ve_ns_type_operations,
-	.namespace = ve_namespace,
-	.owner = THIS_MODULE,
-};
-
-struct class *tty_class = &tty_class_base;
-EXPORT_SYMBOL(tty_class);
-
-#ifdef CONFIG_VE
-static inline bool tty_handle_register(struct tty_driver *driver)
-{
-	if (!ve_is_super(driver->ve) &&
-	    (driver->flags & TTY_DRIVER_CONTAINERIZED))
-		return false;
-	return true;
-}
-#else
-static inline bool tty_handle_register(struct tty_driver *driver)
-{
-	return true;
-}
-#endif
-
-static void tty_cdev_del(struct tty_driver *driver, struct cdev *p)
-{
-	if (tty_handle_register(driver))
-		cdev_del(p);
-}
+struct class *tty_class;
 
 static int tty_cdev_add(struct tty_driver *driver, dev_t dev,
 		unsigned int index, unsigned int count)
@@ -3140,8 +3108,6 @@ static int tty_cdev_add(struct tty_drive
 	/* init here, since reused cdevs cause crashes */
 	cdev_init(&driver->cdevs[index], &tty_fops);
 	driver->cdevs[index].owner = driver->owner;
-	if (!tty_handle_register(driver))
-		return 0;
 	return cdev_add(&driver->cdevs[index], dev, count);
 }
 
@@ -3238,8 +3204,7 @@ struct device *tty_register_device_attr(
 	dev->release = tty_device_create_release;
 	dev_set_name(dev, "%s", name);
 	dev->groups = attr_grp;
-	WARN_ON(drvdata && driver->ve);
-	dev_set_drvdata(dev, (drvdata) ? drvdata : driver->ve);
+	dev_set_drvdata(dev, drvdata);
 
 	retval = device_register(dev);
 	if (retval)
@@ -3250,7 +3215,7 @@ struct device *tty_register_device_attr(
 error:
 	put_device(dev);
 	if (cdev)
-		tty_cdev_del(driver, &driver->cdevs[index]);
+		cdev_del(&driver->cdevs[index]);
 	return ERR_PTR(retval);
 }
 EXPORT_SYMBOL_GPL(tty_register_device_attr);
@@ -3268,17 +3233,10 @@ EXPORT_SYMBOL_GPL(tty_register_device_at
 
 void tty_unregister_device(struct tty_driver *driver, unsigned index)
 {
-#ifdef CONFIG_VE
-	if (driver->flags & TTY_DRIVER_CONTAINERIZED) {
-		device_destroy_namespace(tty_class,
-			MKDEV(driver->major, driver->minor_start) + index,
-			driver->ve);
-	} else
-#endif
-		device_destroy(tty_class,
+	device_destroy(tty_class,
 			MKDEV(driver->major, driver->minor_start) + index);
 	if (!(driver->flags & TTY_DRIVER_DYNAMIC_ALLOC))
-		tty_cdev_del(driver, &driver->cdevs[index]);
+		cdev_del(&driver->cdevs[index]);
 }
 EXPORT_SYMBOL(tty_unregister_device);
 
@@ -3361,19 +3319,17 @@ static void destruct_tty_driver(struct k
 		 * drivers are removed from the kernel.
 		 */
 		for (i = 0; i < driver->num; i++) {
-			if (!(driver->flags & TTY_DRIVER_DEVPTS_MEM)) {
-				tp = driver->termios[i];
-				if (tp) {
-					driver->termios[i] = NULL;
-					kfree(tp);
-				}
+			tp = driver->termios[i];
+			if (tp) {
+				driver->termios[i] = NULL;
+				kfree(tp);
 			}
 			if (!(driver->flags & TTY_DRIVER_DYNAMIC_DEV))
 				tty_unregister_device(driver, i);
 		}
 		proc_tty_unregister_driver(driver);
 		if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC)
-			tty_cdev_del(driver, &driver->cdevs[0]);
+			cdev_del(&driver->cdevs[0]);
 	}
 	kfree(driver->cdevs);
 	kfree(driver->ports);
@@ -3411,9 +3367,6 @@ int tty_register_driver(struct tty_drive
 	dev_t dev;
 	struct device *d;
 
-	if (!tty_handle_register(driver))
-		goto tty_skip_register;
-
 	if (!driver->major) {
 		error = alloc_chrdev_region(&dev, driver->minor_start,
 						driver->num, driver->name);
@@ -3428,8 +3381,6 @@ int tty_register_driver(struct tty_drive
 	if (error < 0)
 		goto err;
 
-tty_skip_register:
-
 	if (driver->flags & TTY_DRIVER_DYNAMIC_ALLOC) {
 		error = tty_cdev_add(driver, dev, 0, driver->num);
 		if (error)
@@ -3462,8 +3413,7 @@ err_unreg_devs:
 	mutex_unlock(&tty_mutex);
 
 err_unreg_char:
-	if (tty_handle_register(driver))
-		unregister_chrdev_region(dev, driver->num);
+	unregister_chrdev_region(dev, driver->num);
 err:
 	return error;
 }
@@ -3479,9 +3429,8 @@ int tty_unregister_driver(struct tty_dri
 	if (driver->refcount)
 		return -EBUSY;
 #endif
-	if (tty_handle_register(driver))
-		unregister_chrdev_region(MKDEV(driver->major, driver->minor_start),
-					driver->num);
+	unregister_chrdev_region(MKDEV(driver->major, driver->minor_start),
+				driver->num);
 	mutex_lock(&tty_mutex);
 	list_del(&driver->tty_drivers);
 	mutex_unlock(&tty_mutex);
@@ -3590,7 +3539,11 @@ static char *tty_devnode(struct device *
 
 static int __init tty_class_init(void)
 {
-	return class_register(&tty_class_base);
+	tty_class = class_create(THIS_MODULE, "tty");
+	if (IS_ERR(tty_class))
+		return PTR_ERR(tty_class);
+	tty_class->devnode = tty_devnode;
+	return 0;
 }
 
 postcore_initcall(tty_class_init);
@@ -3637,86 +3590,6 @@ static ssize_t show_cons_active(struct d
 }
 static DEVICE_ATTR(active, S_IRUGO, show_cons_active, NULL);
 
-#ifdef CONFIG_VE
-
-void console_sysfs_notify(void)
-{
-	struct ve_struct *ve = get_exec_env();
-
-	if (ve->consdev)
-		sysfs_notify(&ve->consdev->kobj, NULL, "active");
-}
-
-void ve_tty_console_fini(struct ve_struct *ve)
-{
-	struct device *consdev = ve->consdev;
-	int i;
-
-	ve->consdev = NULL;
-	device_remove_file(consdev, &dev_attr_active);
-	device_destroy_namespace(tty_class, MKDEV(TTYAUX_MAJOR, 1), ve);
-	device_destroy_namespace(tty_class, MKDEV(TTYAUX_MAJOR, 0), ve);
-
-	if (!ve_is_super(ve)) {
-		for (i = 0; i <= MAX_NR_VTTY_CONSOLES; i++) {
-			device_destroy_namespace(tty_class,
-						 MKDEV(TTY_MAJOR, i), ve);
-		}
-	}
-}
-
-int ve_tty_console_init(struct ve_struct *ve)
-{
-	struct device *dev, *d;
-	int err, i;
-
-	dev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), ve, "tty");
-	if (IS_ERR(dev))
-		return PTR_ERR(dev);
-	dev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), ve,
-			      "console");
-	if (IS_ERR(dev)) {
-		err = PTR_ERR(dev);
-		goto err_consdev;
-	}
-
-	err = device_create_file(dev, &dev_attr_active);
-	if (err)
-		goto err_consfile;
-
-	if (!ve_is_super(ve)) {
-		for (i = 0; i <= MAX_NR_VTTY_CONSOLES; i++) {
-			d = device_create(tty_class, NULL, MKDEV(TTY_MAJOR, i),
-					  ve, "tty%d", i);
-			if (IS_ERR(d)) {
-				err = PTR_ERR(dev);
-
-				while (i-- > 0)
-					device_destroy_namespace(tty_class,
-								 MKDEV(TTY_MAJOR, i),
-								 ve);
-				device_remove_file(dev, &dev_attr_active);
-				goto err_consfile;
-			}
-		}
-	}
-
-	ve->consdev = dev;
-	return 0;
-
-err_consfile:
-	device_destroy_namespace(tty_class, MKDEV(TTYAUX_MAJOR, 1), ve);
-err_consdev:
-	device_destroy_namespace(tty_class, MKDEV(TTYAUX_MAJOR, 0), ve);
-	return err;
-}
-
-static void tty_init_devices(void)
-{
-	if (ve_tty_console_init(get_ve0()))
-	       WARN_ON(get_ve0()->consdev);
-}
-#else
 static struct device *consdev;
 
 void console_sysfs_notify(void)
@@ -3725,18 +3598,6 @@ void console_sysfs_notify(void)
 		sysfs_notify(&consdev->kobj, NULL, "active");
 }
 
-static void tty_init_devices(void)
-{
-	device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty");
-	consdev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), NULL,
-			      "console");
-	if (IS_ERR(consdev))
-		consdev = NULL;
-	else
-		WARN_ON(device_create_file(consdev, &dev_attr_active) < 0);
-}
-#endif
-
 /*
  * Ok, now we can initialize the rest of the tty devices and can count
  * on memory allocations, interrupts etc..
@@ -3747,12 +3608,19 @@ int __init tty_init(void)
 	if (cdev_add(&tty_cdev, MKDEV(TTYAUX_MAJOR, 0), 1) ||
 	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 0), 1, "/dev/tty") < 0)
 		panic("Couldn't register /dev/tty driver\n");
+	device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 0), NULL, "tty");
 
 	cdev_init(&console_cdev, &console_fops);
 	if (cdev_add(&console_cdev, MKDEV(TTYAUX_MAJOR, 1), 1) ||
 	    register_chrdev_region(MKDEV(TTYAUX_MAJOR, 1), 1, "/dev/console") < 0)
 		panic("Couldn't register /dev/console driver\n");
-	tty_init_devices();
+	consdev = device_create(tty_class, NULL, MKDEV(TTYAUX_MAJOR, 1), NULL,
+			      "console");
+	if (IS_ERR(consdev))
+		consdev = NULL;
+	else
+		WARN_ON(device_create_file(consdev, &dev_attr_active) < 0);
+
 #ifdef CONFIG_VT
 	vty_init(&console_fops);
 #endif
Index: linux-pcs7.git/fs/sysfs/ve.c
===================================================================
--- linux-pcs7.git.orig/fs/sysfs/ve.c
+++ linux-pcs7.git/fs/sysfs/ve.c
@@ -33,16 +33,6 @@ const void *ve_netlink_ns(struct sock *s
 	return sock_net(sk)->owner_ve;
 }
 
-const void *ve_namespace(struct device *dev)
-{
-	/*
-	 * Below is a hack. We use drvdata as a ve_struct pointer.
-	 * But it can be a valid drvdata. We use dev->groups pointer to differ
-	 * between them: if set, then drvdata is not a ve namespace.
-	 */
-	return (!dev->groups && dev_get_drvdata(dev)) ? dev_get_drvdata(dev) : get_ve0();
-}
-
 struct kobj_ns_type_operations ve_ns_type_operations = {
 	.type = KOBJ_NS_TYPE_VE,
 	.grab_current_ns = ve_grab_current_ns,
Index: linux-pcs7.git/include/linux/device.h
===================================================================
--- linux-pcs7.git.orig/include/linux/device.h
+++ linux-pcs7.git/include/linux/device.h
@@ -981,7 +981,6 @@ struct device *device_create_with_groups
 			     const struct attribute_group **groups,
 			     const char *fmt, ...);
 extern void device_destroy(struct class *cls, dev_t devt);
-extern void device_destroy_namespace(struct class *cls, dev_t devt, void *ns);
 
 /*
  * Platform "fixup" functions - allow the platform to have their say
Index: linux-pcs7.git/include/linux/tty.h
===================================================================
--- linux-pcs7.git.orig/include/linux/tty.h
+++ linux-pcs7.git/include/linux/tty.h
@@ -706,10 +706,4 @@ static inline void proc_tty_register_dri
 static inline void proc_tty_unregister_driver(struct tty_driver *d) {}
 #endif
 
-#ifdef CONFIG_VE
-struct ve_struct;
-void ve_legacy_pty_fini(struct ve_struct *ve);
-int ve_legacy_pty_init(struct ve_struct *ve);
-#endif
-
 #endif
Index: linux-pcs7.git/include/linux/tty_driver.h
===================================================================
--- linux-pcs7.git.orig/include/linux/tty_driver.h
+++ linux-pcs7.git/include/linux/tty_driver.h
@@ -319,9 +319,6 @@ struct tty_driver {
 
 	const struct tty_operations *ops;
 	struct list_head tty_drivers;
-#ifdef CONFIG_VE
-	struct ve_struct *ve;
-#endif
 };
 
 extern struct list_head tty_drivers;
@@ -412,7 +409,6 @@ static inline struct tty_driver *tty_dri
 #define TTY_DRIVER_HARDWARE_BREAK	0x0020
 #define TTY_DRIVER_DYNAMIC_ALLOC	0x0040
 #define TTY_DRIVER_UNNUMBERED_NODE	0x0080
-#define TTY_DRIVER_CONTAINERIZED	0x0100
 
 /* tty driver types */
 #define TTY_DRIVER_TYPE_SYSTEM		0x0001
Index: linux-pcs7.git/include/linux/ve.h
===================================================================
--- linux-pcs7.git.orig/include/linux/ve.h
+++ linux-pcs7.git/include/linux/ve.h
@@ -69,14 +69,6 @@ struct ve_struct {
 	struct binfmt_misc	*binfmt_misc;
 #endif
 
-#ifdef CONFIG_LEGACY_PTYS
-	struct tty_driver	*pty_driver, *pty_slave_driver;
-#endif
-
-#ifdef CONFIG_TTY
-	struct device		*consdev;
-#endif
-
 	struct list_head	devices;
 
 #if defined(CONFIG_VE_NETDEV) || defined (CONFIG_VE_NETDEV_MODULE)
@@ -160,8 +152,6 @@ extern struct kobj_ns_type_operations ve
 extern struct kobject * kobject_create_and_add_ve(const char *name,
 						struct kobject *parent);
 
-extern const void *ve_namespace(struct device *dev);
-
 extern struct kmapset_set ve_sysfs_perms;
 
 extern int vz_security_family_check(struct net *net, int family);
@@ -259,8 +249,6 @@ static inline struct user_namespace *ve_
 
 #define kobject_create_and_add_ve		kobject_create_and_add
 
-static const void *ve_namespace(struct device *dev) { return NULL; }
-
 static inline void monotonic_abs_to_ve(clockid_t which_clock,
 				struct timespec *tp) { }
 static inline void monotonic_ve_to_abs(clockid_t which_clock,
Index: linux-pcs7.git/kernel/ve/ve.c
===================================================================
--- linux-pcs7.git.orig/kernel/ve/ve.c
+++ linux-pcs7.git/kernel/ve/ve.c
@@ -24,7 +24,6 @@
 #include <linux/sys.h>
 #include <linux/kdev_t.h>
 #include <linux/termios.h>
-#include <linux/tty_driver.h>
 #include <linux/netdevice.h>
 #include <linux/utsname.h>
 #include <linux/proc_fs.h>
@@ -39,8 +38,6 @@
 #include <linux/percpu.h>
 #include <linux/fs_struct.h>
 #include <linux/task_work.h>
-#include <linux/tty.h>
-#include <linux/console.h>
 #include <linux/ctype.h>
 
 #include <uapi/linux/vzcalluser.h>
@@ -476,14 +473,6 @@ int ve_start_container(struct ve_struct
 	if (err)
 		goto err_umh;
 
-	err = ve_legacy_pty_init(ve);
-	if (err)
-		goto err_legacy_pty;
-
-	err = ve_tty_console_init(ve);
-	if (err)
-		goto err_tty_console;
-
 	err = ve_hook_iterate_init(VE_SS_CHAIN, ve);
 	if (err < 0)
 		goto err_iterate;
@@ -497,10 +486,6 @@ int ve_start_container(struct ve_struct
 	return 0;
 
 err_iterate:
-	ve_tty_console_fini(ve);
-err_tty_console:
-	ve_legacy_pty_fini(ve);
-err_legacy_pty:
 	ve_stop_umh(ve);
 err_umh:
 	ve_stop_kthread(ve);
@@ -531,9 +516,6 @@ void ve_stop_ns(struct pid_namespace *pi
 	 */
 	ve->is_running = 0;
 
-	ve_tty_console_fini(ve);
-	ve_legacy_pty_fini(ve);
-
 	ve_stop_umh(ve);
 	/*
 	 * Stop kernel thread, or zap_pid_ns_processes() would wait it forever.


More information about the Devel mailing list