[Bugs] [Bug 1267950] need a way to pause/stop tiering to take snapshot

bugzilla at redhat.com bugzilla at redhat.com
Mon Dec 21 13:23:23 UTC 2015


https://bugzilla.redhat.com/show_bug.cgi?id=1267950



--- Comment #15 from Vijay Bellur <vbellur at redhat.com> ---
COMMIT: http://review.gluster.org/12987 committed in master by Dan Lambright
(dlambrig at redhat.com) 
------
commit 3a094f1de03b3da8cdff650c14e46aab87e1905b
Author: Dan Lambright <dlambrig at redhat.com>
Date:   Wed Dec 16 15:28:57 2015 -0500

    cluster/tier: do not block in synctask created from pause tier

    We had run sleep() in the pause tier callback. Blocking within
    a synctask is dangerous. The sleep() call does not inform
    the synctask scheduler that a thread is no longer running.
    It therefore believes it is running. If a second synctask already
    exists, it may not be able to run. This occurs if the thread
    limit in the pool has been reached.

    Note the pool size only grows when a synctask is created, not
    when it is moved from wait state to run state, as is the case
    when an FOP completes. When the tier is paused during migration,
    synctasks already exist waiting for responses to FOPs to the
    server with high probability.

    The fix is to yield() in the RPC callback, which will place
    the synctask into the wait queue and free up a thread for the
    FOP callback. A timer wakes the callback after sufficient
    time has elapsed for the pause to occur.

    Change-Id: I6a947ee04c6e5649946cb6d8207ba17263a67fc6
    BUG: 1267950
    Signed-off-by: Dan Lambright <dlambrig at redhat.com>
    Reviewed-on: http://review.gluster.org/12987
    Tested-by: Gluster Build System <jenkins at build.gluster.com>
    Reviewed-by: Rajesh Joseph <rjoseph at redhat.com>

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are on the CC list for the bug.


More information about the Bugs mailing list