ETIMEDOUT on zero response

The expected behavior is not really documented, but this seems to
be what is happening.
This commit is contained in:
Francesco Mazzoli
2024-02-22 18:06:30 +00:00
parent 2922415f4d
commit 0dba36ab4e
2 changed files with 8 additions and 0 deletions

View File

@@ -110,6 +110,7 @@ int eggsfs_create_shuckle_socket(atomic64_t* addr1, atomic64_t* addr2, struct so
iov.iov_base = resp_header + read_so_far;
iov.iov_len = sizeof(resp_header) - read_so_far;
int read = kernel_recvmsg(*sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}
@@ -127,6 +128,7 @@ int eggsfs_create_shuckle_socket(atomic64_t* addr1, atomic64_t* addr2, struct so
iov.iov_base = (char*)&resp + read_so_far;
iov.iov_len = sizeof(resp) - read_so_far;
int read = kernel_recvmsg(*sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}

View File

@@ -57,6 +57,7 @@ static int eggsfs_refresh_fs_info(struct eggsfs_fs_info* info) {
iov.iov_base = shards_resp_header + read_so_far;
iov.iov_len = sizeof(shards_resp_header) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}
@@ -81,6 +82,7 @@ static int eggsfs_refresh_fs_info(struct eggsfs_fs_info* info) {
iov.iov_base = shard_info_resp + read_so_far;
iov.iov_len = sizeof(shard_info_resp) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}
@@ -118,6 +120,7 @@ static int eggsfs_refresh_fs_info(struct eggsfs_fs_info* info) {
iov.iov_base = cdc_resp_header + read_so_far;
iov.iov_len = sizeof(cdc_resp_header) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}
@@ -133,6 +136,7 @@ static int eggsfs_refresh_fs_info(struct eggsfs_fs_info* info) {
iov.iov_base = (char*)&cdc_resp + read_so_far;
iov.iov_len = sizeof(cdc_resp) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) { err = read; goto out_sock; }
read_so_far += read;
}
@@ -319,6 +323,7 @@ static int eggsfs_statfs(struct dentry* dentry, struct kstatfs* stats) {
iov.iov_base = shuckle_resp_header + read_so_far;
iov.iov_len = sizeof(shuckle_resp_header) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) {
err = read;
eggsfs_info("could not recv msg err=%d", err);
@@ -342,6 +347,7 @@ static int eggsfs_statfs(struct dentry* dentry, struct kstatfs* stats) {
iov.iov_base = (char*)&shuckle_resp + read_so_far;
iov.iov_len = sizeof(shuckle_resp) - read_so_far;
int read = kernel_recvmsg(shuckle_sock, &msg, &iov, 1, iov.iov_len, 0);
if (read == 0) { err = -ETIMEDOUT; goto out_sock; }
if (read < 0) {
err = read;
eggsfs_info("could not recv msg err=%d", err);