diff options
Diffstat (limited to 'fs/gfs2/sys.c')
-rw-r--r-- | fs/gfs2/sys.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c index 462e84142759..4fb9ad80d260 100644 --- a/fs/gfs2/sys.c +++ b/fs/gfs2/sys.c | |||
@@ -330,6 +330,28 @@ static ssize_t block_store(struct gfs2_sbd *sdp, const char *buf, size_t len) | |||
330 | return ret; | 330 | return ret; |
331 | } | 331 | } |
332 | 332 | ||
333 | static ssize_t wdack_show(struct gfs2_sbd *sdp, char *buf) | ||
334 | { | ||
335 | int val = completion_done(&sdp->sd_wdack) ? 1 : 0; | ||
336 | |||
337 | return sprintf(buf, "%d\n", val); | ||
338 | } | ||
339 | |||
340 | static ssize_t wdack_store(struct gfs2_sbd *sdp, const char *buf, size_t len) | ||
341 | { | ||
342 | ssize_t ret = len; | ||
343 | int val; | ||
344 | |||
345 | val = simple_strtol(buf, NULL, 0); | ||
346 | |||
347 | if ((val == 1) && | ||
348 | !strcmp(sdp->sd_lockstruct.ls_ops->lm_proto_name, "lock_dlm")) | ||
349 | complete(&sdp->sd_wdack); | ||
350 | else | ||
351 | ret = -EINVAL; | ||
352 | return ret; | ||
353 | } | ||
354 | |||
333 | static ssize_t lkfirst_show(struct gfs2_sbd *sdp, char *buf) | 355 | static ssize_t lkfirst_show(struct gfs2_sbd *sdp, char *buf) |
334 | { | 356 | { |
335 | struct lm_lockstruct *ls = &sdp->sd_lockstruct; | 357 | struct lm_lockstruct *ls = &sdp->sd_lockstruct; |
@@ -461,7 +483,7 @@ static struct gfs2_attr gdlm_attr_##_name = __ATTR(_name,_mode,_show,_store) | |||
461 | 483 | ||
462 | GDLM_ATTR(proto_name, 0444, proto_name_show, NULL); | 484 | GDLM_ATTR(proto_name, 0444, proto_name_show, NULL); |
463 | GDLM_ATTR(block, 0644, block_show, block_store); | 485 | GDLM_ATTR(block, 0644, block_show, block_store); |
464 | GDLM_ATTR(withdraw, 0644, withdraw_show, withdraw_store); | 486 | GDLM_ATTR(withdraw, 0644, wdack_show, wdack_store); |
465 | GDLM_ATTR(jid, 0644, jid_show, jid_store); | 487 | GDLM_ATTR(jid, 0644, jid_show, jid_store); |
466 | GDLM_ATTR(first, 0644, lkfirst_show, lkfirst_store); | 488 | GDLM_ATTR(first, 0644, lkfirst_show, lkfirst_store); |
467 | GDLM_ATTR(first_done, 0444, first_done_show, NULL); | 489 | GDLM_ATTR(first_done, 0444, first_done_show, NULL); |