diff options
author | Tejun Heo <tj@kernel.org> | 2010-07-20 22:09:02 +0200 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-07-23 13:14:25 +0200 |
commit | 6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c (patch) | |
tree | ba12b0b9ba00e21ff73eee82714be448c5a7c6e9 /fs/gfs2/sys.c | |
parent | 991ea75cb1df7188d209274b3d51c105b4f18ffe (diff) | |
download | linux-6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c.tar.gz linux-6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c.tar.bz2 linux-6ecd7c2dd9f5dd4f6e8f65c8027159f9c73b0e4c.zip |
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 @@ #include "quota.h" #include "util.h" #include "glops.h" +#include "recovery.h" struct gfs2_attr { struct attribute attr; @@ -352,7 +353,7 @@ static ssize_t recover_store(struct gfs2_sbd *sdp, const char *buf, size_t len) list_for_each_entry(jd, &sdp->sd_jindex_list, jd_list) { if (jd->jd_jid != jid) continue; - rv = slow_work_enqueue(&jd->jd_work); + rv = gfs2_recover_journal(jd, false); break; } out: |