]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
drbd: Provide hints with the error message when clearing the sync pause flag
authorPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 20 Jan 2011 10:46:41 +0000 (11:46 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 10 Mar 2011 10:47:58 +0000 (11:47 +0100)
When the user clears the sync-pause flag, and sync stays in pause
state, give hints to the user, why it still is in pause state.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_nl.c
include/linux/drbd.h

index 434b621f76a9e583235e2f170948634ecdb9615a..ffe3a97fef9b5a036a5b4af09148050077f7d8d2 100644 (file)
@@ -1952,9 +1952,17 @@ static int drbd_nl_resume_sync(struct drbd_conf *mdev, struct drbd_nl_cfg_req *n
                               struct drbd_nl_cfg_reply *reply)
 {
        int retcode = NO_ERROR;
+       union drbd_state s;
 
-       if (drbd_request_state(mdev, NS(user_isp, 0)) == SS_NOTHING_TO_DO)
-               retcode = ERR_PAUSE_IS_CLEAR;
+       if (drbd_request_state(mdev, NS(user_isp, 0)) == SS_NOTHING_TO_DO) {
+               s = mdev->state;
+               if (s.conn == C_PAUSED_SYNC_S || s.conn == C_PAUSED_SYNC_T) {
+                       retcode = s.aftr_isp ? ERR_PIC_AFTER_DEP :
+                                 s.peer_isp ? ERR_PIC_PEER_DEP : ERR_PAUSE_IS_CLEAR;
+               } else {
+                       retcode = ERR_PAUSE_IS_CLEAR;
+               }
+       }
 
        reply->ret_code = retcode;
        return 0;
index d10431fab004733bcf76e759f882e23ede8629f7..ba5c785d3f7def59578e9ca2e937772a97eed539 100644 (file)
@@ -153,6 +153,8 @@ enum drbd_ret_code {
        ERR_NEED_APV_93         = 153,
        ERR_STONITH_AND_PROT_A  = 154,
        ERR_CONG_NOT_PROTO_A    = 155,
+       ERR_PIC_AFTER_DEP       = 156,
+       ERR_PIC_PEER_DEP        = 157,
 
        /* insert new ones above this line */
        AFTER_LAST_ERR_CODE