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>
This commit is contained in:
@@ -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:
|
||||
|
Reference in New Issue
Block a user