Skip to content

Commit

Permalink
ublksrv_tgt: wait start_recovery in case of -EBUSY
Browse files Browse the repository at this point in the history
-EEBUSY is one intermediate state, and means device isn't quiesced
yet, so wait a while.

Signed-off-by: Ming Lei <[email protected]>
  • Loading branch information
ming1 committed Mar 16, 2024
1 parent dd4784e commit f01c509
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions ublksrv_tgt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1079,6 +1079,7 @@ static int __cmd_dev_user_recover(int number, bool verbose)
char *buf = NULL;
char pid_file[64];
int ret;
unsigned elapsed = 0;

dev = ublksrv_ctrl_init(&data);
if (!dev) {
Expand All @@ -1092,10 +1093,18 @@ static int __cmd_dev_user_recover(int number, bool verbose)
goto fail;
}

ret = ublksrv_ctrl_start_recovery(dev);
if (ret < 0) {
fprintf(stderr, "can't start recovery for %d\n", number);
goto fail;
while (elapsed < 30000000) {
unsigned unit = 100000;
ret = ublksrv_ctrl_start_recovery(dev);
if (ret < 0 && ret != -EBUSY) {
fprintf(stderr, "can't start recovery for %d ret %d\n",
number, ret);
goto fail;
}
if (ret >= 0)
break;
usleep(unit);
elapsed += unit;
}

buf = ublksrv_tgt_get_dev_data(dev);
Expand Down

0 comments on commit f01c509

Please sign in to comment.