Skip to content

Commit e396754

Browse files
committed
ioctl: retry ioctl on EINTR return value
Recent changes in the nvme-tcp transport started to return EINTR due to a signal while reading from a socket. The transport could retry the operation but so far this hasn't been implemented. Thus we retry in userpace the connect call when EINTR is returned. Signed-off-by: Daniel Wagner <[email protected]>
1 parent 0172e65 commit e396754

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

src/nvme/ioctl.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ int nvme_subsystem_reset(int fd)
5252
ret = nvme_verify_chr(fd);
5353
if (ret)
5454
return ret;
55-
return ioctl(fd, NVME_IOCTL_SUBSYS_RESET);
55+
return TFR(ioctl(fd, NVME_IOCTL_SUBSYS_RESET));
5656
}
5757

5858
int nvme_ctrl_reset(int fd)
@@ -62,7 +62,7 @@ int nvme_ctrl_reset(int fd)
6262
ret = nvme_verify_chr(fd);
6363
if (ret)
6464
return ret;
65-
return ioctl(fd, NVME_IOCTL_RESET);
65+
return TFR(ioctl(fd, NVME_IOCTL_RESET));
6666
}
6767

6868
int nvme_ns_rescan(int fd)
@@ -72,13 +72,13 @@ int nvme_ns_rescan(int fd)
7272
ret = nvme_verify_chr(fd);
7373
if (ret)
7474
return ret;
75-
return ioctl(fd, NVME_IOCTL_RESCAN);
75+
return TFR(ioctl(fd, NVME_IOCTL_RESCAN));
7676
}
7777

7878
int nvme_get_nsid(int fd, __u32 *nsid)
7979
{
8080
errno = 0;
81-
*nsid = ioctl(fd, NVME_IOCTL_ID);
81+
*nsid = TFR(ioctl(fd, NVME_IOCTL_ID));
8282
return -1 * (errno != 0);
8383
}
8484

@@ -87,7 +87,7 @@ int nvme_submit_passthru64(int fd, unsigned long ioctl_cmd,
8787
struct nvme_passthru_cmd64 *cmd,
8888
__u64 *result)
8989
{
90-
int err = ioctl(fd, ioctl_cmd, cmd);
90+
int err = TFR(ioctl(fd, ioctl_cmd, cmd));
9191

9292
if (err >= 0 && result)
9393
*result = cmd->result;
@@ -98,7 +98,7 @@ __attribute__((weak))
9898
int nvme_submit_passthru(int fd, unsigned long ioctl_cmd,
9999
struct nvme_passthru_cmd *cmd, __u32 *result)
100100
{
101-
int err = ioctl(fd, ioctl_cmd, cmd);
101+
int err = TFR(ioctl(fd, ioctl_cmd, cmd));
102102

103103
if (err >= 0 && result)
104104
*result = cmd->result;

0 commit comments

Comments
 (0)