Re: [PATCH UPDATED2 3/3] vhost: apply cpumask and cgroup to vhost pollers

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Tejun Heo
Date: Monday, May 31, 2010 - 3:20 am

Apply the cpumask and cgroup of the initializing task to the created
vhost poller.

Based on Sridhar Samudrala's patch.  Li Zefan spotted a bug in error
path (twice), fixed (twice).

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Sridhar Samudrala <samudrala.sridhar@gmail.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
---
Heh... that's embarrassing.  Let's see if I can get it right the third
time.

Thank you.

 drivers/vhost/vhost.c |   36 ++++++++++++++++++++++++++++++++----
 1 file changed, 32 insertions(+), 4 deletions(-)

Index: work/drivers/vhost/vhost.c
===================================================================
--- work.orig/drivers/vhost/vhost.c
+++ work/drivers/vhost/vhost.c
@@ -23,6 +23,7 @@
 #include <linux/highmem.h>
 #include <linux/slab.h>
 #include <linux/kthread.h>
+#include <linux/cgroup.h>

 #include <linux/net.h>
 #include <linux/if_packet.h>
@@ -177,11 +178,29 @@ long vhost_dev_init(struct vhost_dev *de
 		    struct vhost_virtqueue *vqs, int nvqs)
 {
 	struct task_struct *poller;
-	int i;
+	cpumask_var_t mask;
+	int i, ret = -ENOMEM;
+
+	if (!alloc_cpumask_var(&mask, GFP_KERNEL))
+		goto out_free_mask;

 	poller = kthread_create(vhost_poller, dev, "vhost-%d", current->pid);
-	if (IS_ERR(poller))
-		return PTR_ERR(poller);
+	if (IS_ERR(poller)) {
+		ret = PTR_ERR(poller);
+		goto out_free_mask;
+	}
+
+	ret = sched_getaffinity(current->pid, mask);
+	if (ret)
+		goto out_stop_poller;
+
+	ret = sched_setaffinity(poller->pid, mask);
+	if (ret)
+		goto out_stop_poller;
+
+	ret = cgroup_attach_task_current_cg(poller);
+	if (ret)
+		goto out_stop_poller;

 	dev->vqs = vqs;
 	dev->nvqs = nvqs;
@@ -202,7 +221,16 @@ long vhost_dev_init(struct vhost_dev *de
 			vhost_poll_init(&dev->vqs[i].poll,
 					dev->vqs[i].handle_kick, POLLIN, dev);
 	}
-	return 0;
+
+	wake_up_process(poller);	/* avoid contributing to loadavg */
+	ret = 0;
+	goto out_free_mask;
+
+out_stop_poller:
+	kthread_stop(poller);
+out_free_mask:
+	free_cpumask_var(mask);
+	return ret;
 }

 /* Caller should have device mutex */
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 2/3] workqueue: Add an API to create a singlethread ..., Sridhar Samudrala, (Tue May 18, 5:04 pm)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Thu May 27, 2:14 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Thu May 27, 6:12 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Sridhar Samudrala, (Thu May 27, 9:24 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Thu May 27, 9:41 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Thu May 27, 10:32 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Fri May 28, 8:08 am)
Re: [PATCH 2/3] workqueue: Add an API to create a singleth ..., Michael S. Tsirkin, (Sun May 30, 4:29 am)
Re: [PATCH UPDATED2 3/3] vhost: apply cpumask and cgroup t ..., Tejun Heo, (Mon May 31, 3:20 am)
Re: [PATCH 1/3] vhost: replace vhost_workqueue with per-vh ..., Michael S. Tsirkin, (Mon May 31, 8:22 am)
Re: [PATCH 1/3] vhost: replace vhost_workqueue with per-vh ..., Michael S. Tsirkin, (Mon May 31, 9:00 am)
Re: [PATCH 3/3] vhost: apply cpumask and cgroup to vhost w ..., Michael S. Tsirkin, (Tue Jun 1, 3:17 am)
Re: [PATCH 3/3] vhost: apply cpumask and cgroup to vhost w ..., Sridhar Samudrala, (Tue Jun 1, 10:19 am)
Re: [PATCH 3/3] vhost: apply cpumask and cgroup to vhost p ..., Michael S. Tsirkin, (Thu Jun 24, 1:11 am)
Re: [PATCH 3/3] vhost: apply cpumask and cgroup to vhost p ..., Sridhar Samudrala, (Thu Jun 24, 3:45 pm)
[PATCH] sched: export sched_set/getaffinity (was Re: [PATC ..., Michael S. Tsirkin, (Fri Jun 25, 3:10 am)
[PATCH repost] sched: export sched_set/getaffinity to modules, Michael S. Tsirkin, (Thu Jul 1, 4:07 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Thu Jul 1, 4:55 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Thu Jul 1, 5:23 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Thu Jul 1, 5:50 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Thu Jul 1, 6:08 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Thu Jul 1, 6:22 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Sridhar Samudrala, (Fri Jul 2, 11:01 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Sun Jul 4, 2:00 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Sridhar Samudrala, (Mon Jul 12, 11:59 pm)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Tue Jul 13, 4:09 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Sridhar Samudrala, (Wed Jul 14, 4:26 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Thu Jul 22, 8:58 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Sat Jul 24, 12:14 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Sun Jul 25, 3:04 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 8:25 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 8:50 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 8:51 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 9:23 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 9:31 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 9:51 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 9:57 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Mon Jul 26, 10:12 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Sridhar Samudrala, (Mon Jul 26, 10:51 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Mon Jul 26, 12:55 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 12:57 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 12:59 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Mon Jul 26, 1:19 pm)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Mon Jul 26, 1:27 pm)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Mon Jul 26, 9:55 pm)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Tue Jul 27, 8:41 am)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Tue Jul 27, 12:19 pm)
Re: [PATCH UPDATED 1/3] vhost: replace vhost_workqueue wit ..., Michael S. Tsirkin, (Wed Jul 28, 3:48 am)
Re: [PATCH repost] sched: export sched_set/getaffinity to ..., Michael S. Tsirkin, (Sun Aug 1, 1:50 am)