diff options
author | Tejun Heo <tj@kernel.org> | 2010-07-20 16:09:02 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-07-23 07:14:25 -0400 |
commit | 6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c (patch) | |
tree | ba12b0b9ba00e21ff73eee82714be448c5a7c6e9 /fs/gfs2/sys.c | |
parent | 991ea75cb1df7188d209274b3d51c105b4f18ffe (diff) |
gfs2: use workqueue instead of slow-work
Workqueue can now handle high concurrency. Convert gfs to use
workqueue instead of slow-work.
* Steven pointed out that recovery path might be run from allocation
path and thus requires forward progress guarantee without memory
allocation. Create and use gfs_recovery_wq with rescuer. Please
note that forward progress wasn't guaranteed with slow-work.
* Updated to use non-reentrant workqueue.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/sys.c')
-rw-r--r-- | fs/gfs2/sys.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c index 37f5393e68e6..6b60316ae327 100644 --- a/fs/gfs2/sys.c +++ b/fs/gfs2/sys.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include "quota.h" | 25 | #include "quota.h" |
26 | #include "util.h" | 26 | #include "util.h" |
27 | #include "glops.h" | 27 | #include "glops.h" |
28 | #include "recovery.h" | ||
28 | 29 | ||
29 | struct gfs2_attr { | 30 | struct gfs2_attr { |
30 | struct attribute attr; | 31 | struct attribute attr; |
@@ -352,7 +353,7 @@ static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len) | |||
352 | list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { | 353 | list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { |
353 | if (jd->jd_jid != jid) | 354 | if (jd->jd_jid != jid) |
354 | continue; | 355 | continue; |
355 | rv = slow_work_enqueue(&jd->jd_work); | 356 | rv = gfs2_recover_journal(jd, false); |
356 | break; | 357 | break; |
357 | } | 358 | } |
358 | out: | 359 | out: |