Skip to contentSkip to conversation

cgroup: use read lock to guard find_existing_css_set()

PATCH In review Li Zefan 6 participants 7 messages Apr 23, 2008 – Apr 24, 2008 2 messages not in the archive

lore
Share & tools
lore

Li Zefan

author
#0 lore raw

PATCH 1/1 cgroup: use read lock to guard find_existing_css_set()

The function does not modify anything (except the temporary css template), so it's sufficient to hold read lock.

---
 kernel/cgroup.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/cgroup.c +2 -2
index 2727f92..e9eb5da 100644
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(
 
 	/* First see if we already have a cgroup group that matches
 	 * the desired set */
-	write_lock(&css_set_lock);
+	read_lock(&css_set_lock);
 	res = find_existing_css_set(oldcg, cgrp, template);
 	if (res)
 		get_css_set(res);
-	write_unlock(&css_set_lock);
+	read_unlock(&css_set_lock);
 
 	if (res)
 		return res;

-- 1.5.4.rc3

A message that is not in the archive (sent off-list or not yet received): [email protected]

Acked-by
#2 lore raw
Quoted 4 lines · Li Zefan

The function does not modify anything (except the temporary
css template), so it's sufficient to hold read lock.

Thanks.

Quoted 25 lines

---

  kernel/cgroup.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 2727f92..e9eb5da 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(

/* First see if we already have a cgroup group that matches
* the desired set */
- write_lock(&css_set_lock);

 +       read_lock(&css_set_lock);
        res = find_existing_css_set(oldcg, cgrp, template);
        if (res)
                get_css_set(res);

- write_unlock(&css_set_lock);
+ read_unlock(&css_set_lock);

        if (res)
                return res;

-- 1.5.4.rc3

#3 lore raw
In reply to a message not in the archive
Quoted 16 lines · Li Zefan

The function does not modify anything (except the temporary css template), so it's sufficient to hold read lock.

---
 kernel/cgroup.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/cgroup.c +0 -0
index 2727f92..e9eb5da 100644
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(
 
 	/* First see if we already have a cgroup group that matches
 	 * the desired set */

kernel/cgroup.c static struct css_set *find_css_set( · line 416

Quoted 10 lines
kernel/cgroup.c +2 -2
-	write_lock(&css_set_lock);
+	read_lock(&css_set_lock);
 	res = find_existing_css_set(oldcg, cgrp, template);
 	if (res)
 		get_css_set(res);
-	write_unlock(&css_set_lock);
+	read_unlock(&css_set_lock);
 
 	if (res)
 		return res;

Looks good to me. Did you run lockdep?

Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL
Acked-by on v1 1/1
#4 lore raw
In reply to Li Zefan
Quoted 4 lines · Li Zefan

The function does not modify anything (except the temporary
css template), so it's sufficient to hold read lock.

Thanks.

Quoted 25 lines

---

  kernel/cgroup.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 2727f92..e9eb5da 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(

/* First see if we already have a cgroup group that matches
* the desired set */
- write_lock(&css_set_lock);

 +       read_lock(&css_set_lock);
        res = find_existing_css_set(oldcg, cgrp, template);
        if (res)
                get_css_set(res);

- write_unlock(&css_set_lock);
+ read_unlock(&css_set_lock);

        if (res)
                return res;

-- 1.5.4.rc3

#5 lore raw
In reply to Li Zefan
Quoted 16 lines · Li Zefan

The function does not modify anything (except the temporary css template), so it's sufficient to hold read lock.

---
 kernel/cgroup.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/cgroup.c +0 -0
index 2727f92..e9eb5da 100644
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(
 
 	/* First see if we already have a cgroup group that matches
 	 * the desired set */

kernel/cgroup.c static struct css_set *find_css_set( · line 416

Quoted 10 lines
kernel/cgroup.c +2 -2
-	write_lock(&css_set_lock);
+	read_lock(&css_set_lock);
 	res = find_existing_css_set(oldcg, cgrp, template);
 	if (res)
 		get_css_set(res);
-	write_unlock(&css_set_lock);
+	read_unlock(&css_set_lock);
 
 	if (res)
 		return res;

Looks good to me. Did you run lockdep?

Signature · 4 lines
	Warm Regards,
	Balbir Singh
	Linux Technology Center
	IBM, ISTL

A message that is not in the archive (sent off-list or not yet received): 480EDBD2.2060709-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org

#7 lore raw
Quoted 25 lines · Balbir Singh
Quoted 24 lines · Li Zefan

The function does not modify anything (except the temporary css template), so it's sufficient to hold read lock.

---
 kernel/cgroup.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/cgroup.c +2 -2
index 2727f92..e9eb5da 100644
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(
 
 	/* First see if we already have a cgroup group that matches
 	 * the desired set */
-	write_lock(&css_set_lock);
+	read_lock(&css_set_lock);
 	res = find_existing_css_set(oldcg, cgrp, template);
 	if (res)
 		get_css_set(res);
-	write_unlock(&css_set_lock);
+	read_unlock(&css_set_lock);
 
Quoted 5 lines

kernel/cgroup.c static struct css_set *find_css_set( · line 416

Quoted 2 lines
kernel/cgroup.c +0 -0
 	if (res)
 		return res;

Looks good to me. Did you run lockdep?

No, I found this when reading the code, but I do have done some test.

author
#8 lore raw
In reply to Balbir Singh
Quoted 25 lines · Balbir Singh
Quoted 24 lines · Li Zefan

The function does not modify anything (except the temporary css template), so it's sufficient to hold read lock.

---
 kernel/cgroup.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
kernel/cgroup.c +2 -2
index 2727f92..e9eb5da 100644
@@ -406,11 +406,11 @@ static struct css_set *find_css_set(
 
 	/* First see if we already have a cgroup group that matches
 	 * the desired set */
-	write_lock(&css_set_lock);
+	read_lock(&css_set_lock);
 	res = find_existing_css_set(oldcg, cgrp, template);
 	if (res)
 		get_css_set(res);
-	write_unlock(&css_set_lock);
+	read_unlock(&css_set_lock);
 
Quoted 5 lines

kernel/cgroup.c static struct css_set *find_css_set( · line 416

Quoted 2 lines
kernel/cgroup.c +0 -0
 	if (res)
 		return res;

Looks good to me. Did you run lockdep?

No, I found this when reading the code, but I do have done some test.