diff options
author | Dipankar Sarma <dipankar@in.ibm.com> | 2005-09-09 16:04:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-09 16:57:55 -0400 |
commit | b835996f628eadb55c5fb222ba46fe9395bf73c7 (patch) | |
tree | d63d80585d197e1ffc299af4a0034049790fb197 /drivers/char/tty_io.c | |
parent | ab2af1f5005069321c5d130f09cce577b03f43ef (diff) |
[PATCH] files: lock-free fd look-up
With the use of RCU in files structure, the look-up of files using fds can now
be lock-free. The lookup is protected by rcu_read_lock()/rcu_read_unlock().
This patch changes the readers to use lock-free lookup.
Signed-off-by: Maneesh Soni <maneesh@in.ibm.com>
Signed-off-by: Ravikiran Thirumalai <kiran_th@gmail.com>
Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/tty_io.c')
-rw-r--r-- | drivers/char/tty_io.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c index 0bfc7af68917..e5953f3433f3 100644 --- a/drivers/char/tty_io.c +++ b/drivers/char/tty_io.c | |||
@@ -2480,7 +2480,7 @@ static void __do_SAK(void *arg) | |||
2480 | } | 2480 | } |
2481 | task_lock(p); | 2481 | task_lock(p); |
2482 | if (p->files) { | 2482 | if (p->files) { |
2483 | spin_lock(&p->files->file_lock); | 2483 | rcu_read_lock(); |
2484 | fdt = files_fdtable(p->files); | 2484 | fdt = files_fdtable(p->files); |
2485 | for (i=0; i < fdt->max_fds; i++) { | 2485 | for (i=0; i < fdt->max_fds; i++) { |
2486 | filp = fcheck_files(p->files, i); | 2486 | filp = fcheck_files(p->files, i); |
@@ -2495,7 +2495,7 @@ static void __do_SAK(void *arg) | |||
2495 | break; | 2495 | break; |
2496 | } | 2496 | } |
2497 | } | 2497 | } |
2498 | spin_unlock(&p->files->file_lock); | 2498 | rcu_read_unlock(); |
2499 | } | 2499 | } |
2500 | task_unlock(p); | 2500 | task_unlock(p); |
2501 | } while_each_task_pid(session, PIDTYPE_SID, p); | 2501 | } while_each_task_pid(session, PIDTYPE_SID, p); |