* Userspace sets timeout=0 to disable socket disconnection,
                 * so just warn and reset the timer.
                 */
+               struct nbd_sock *nsock = config->socks[cmd->index];
                cmd->retries++;
                dev_info(nbd_to_dev(nbd), "Possible stuck request %p: control (%s@%llu,%uB). Runtime %u seconds\n",
                        req, nbdcmd_to_ascii(req_to_nbd_cmd_type(req)),
                        (unsigned long long)blk_rq_pos(req) << 9,
                        blk_rq_bytes(req), (req->timeout / HZ) * cmd->retries);
 
+               mutex_lock(&nsock->tx_lock);
+               if (cmd->cookie != nsock->cookie) {
+                       nbd_requeue_cmd(cmd);
+                       mutex_unlock(&nsock->tx_lock);
+                       mutex_unlock(&cmd->lock);
+                       nbd_config_put(nbd);
+                       return BLK_EH_DONE;
+               }
+               mutex_unlock(&nsock->tx_lock);
                mutex_unlock(&cmd->lock);
                nbd_config_put(nbd);
                return BLK_EH_RESET_TIMER;