diff options
-rw-r--r-- | fs/ocfs2/dlmglue.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index f92612e4b9d6..474e57f834e6 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -1390,6 +1390,7 @@ static int __ocfs2_cluster_lock(struct ocfs2_super *osb, | |||
1390 | unsigned int gen; | 1390 | unsigned int gen; |
1391 | int noqueue_attempted = 0; | 1391 | int noqueue_attempted = 0; |
1392 | int dlm_locked = 0; | 1392 | int dlm_locked = 0; |
1393 | int kick_dc = 0; | ||
1393 | 1394 | ||
1394 | if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) { | 1395 | if (!(lockres->l_flags & OCFS2_LOCK_INITIALIZED)) { |
1395 | mlog_errno(-EINVAL); | 1396 | mlog_errno(-EINVAL); |
@@ -1524,7 +1525,12 @@ update_holders: | |||
1524 | unlock: | 1525 | unlock: |
1525 | lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); | 1526 | lockres_clear_flags(lockres, OCFS2_LOCK_UPCONVERT_FINISHING); |
1526 | 1527 | ||
1528 | /* ocfs2_unblock_lock reques on seeing OCFS2_LOCK_UPCONVERT_FINISHING */ | ||
1529 | kick_dc = (lockres->l_flags & OCFS2_LOCK_BLOCKED); | ||
1530 | |||
1527 | spin_unlock_irqrestore(&lockres->l_lock, flags); | 1531 | spin_unlock_irqrestore(&lockres->l_lock, flags); |
1532 | if (kick_dc) | ||
1533 | ocfs2_wake_downconvert_thread(osb); | ||
1528 | out: | 1534 | out: |
1529 | /* | 1535 | /* |
1530 | * This is helping work around a lock inversion between the page lock | 1536 | * This is helping work around a lock inversion between the page lock |