Commit 62fdf670 authored by Long Li's avatar Long Li Committed by Steve French
Browse files

cifs: smbd: Indicate to retry on transport sending failure



Failure to send a packet doesn't mean it's a permanent failure, it can't be
returned to user process. This I/O should be retried or failed based on
server packet response and transport health. This logic is handled by the
upper layer.

Give this decision to upper layer.

Signed-off-by: default avatarLong Li <longli@microsoft.com>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 98e0d408
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -853,7 +853,7 @@ static int smbd_create_header(struct smbd_connection *info,

	if (info->transport_status != SMBD_CONNECTED) {
		log_outgoing(ERR, "disconnected not sending\n");
		return -ENOENT;
		return -EAGAIN;
	}
	atomic_dec(&info->send_credits);

@@ -979,6 +979,7 @@ static int smbd_post_send(struct smbd_connection *info,
				wake_up(&info->wait_send_pending);
		}
		smbd_disconnect_rdma_connection(info);
		rc = -EAGAIN;
	} else
		/* Reset timer for idle connection after packet is sent */
		mod_delayed_work(info->workqueue, &info->idle_timer_work,
@@ -2085,7 +2086,7 @@ int smbd_send(struct TCP_Server_Info *server, struct smb_rqst *rqst)
	int rc;

	if (info->transport_status != SMBD_CONNECTED) {
		rc = -ENODEV;
		rc = -EAGAIN;
		goto done;
	}