* [dpdk-dev] [PATCH 2/4] eal: fix IPC socket paths
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
@ 2018-02-22 15:43 ` Anatoly Burakov
2018-02-23 3:14 ` Tan, Jianfeng
2018-02-22 15:44 ` [dpdk-dev] [PATCH 3/4] eal: fix IPC request " Anatoly Burakov
` (7 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Anatoly Burakov @ 2018-02-22 15:43 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: bacaa2754017 ("eal: add channel for multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/librte_eal/common/eal_common_proc.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index e4d8104..ec60d16 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -489,10 +489,14 @@ mp_send(struct rte_mp_msg *msg, const char *peer, int type)
return -1;
}
while ((ent = readdir(mp_dir))) {
+ char path[PATH_MAX];
+
if (fnmatch(mp_filter, ent->d_name, 0) != 0)
continue;
- if (send_msg(ent->d_name, msg, type) < 0)
+ snprintf(path, sizeof(path), "%s/%s", mp_dir_path,
+ ent->d_name);
+ if (send_msg(path, msg, type) < 0)
ret = -1;
}
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 3/4] eal: fix IPC request socket paths
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
2018-02-22 15:43 ` [dpdk-dev] [PATCH 2/4] eal: fix IPC socket paths Anatoly Burakov
@ 2018-02-22 15:44 ` Anatoly Burakov
2018-02-23 3:15 ` Tan, Jianfeng
2018-02-22 15:44 ` [dpdk-dev] [PATCH 4/4] eal: fix handling of errno values in IPC Anatoly Burakov
` (6 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Anatoly Burakov @ 2018-02-22 15:44 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/librte_eal/common/eal_common_proc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index ec60d16..2dddcaf 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -658,10 +658,15 @@ rte_mp_request(struct rte_mp_msg *req, struct rte_mp_reply *reply,
}
while ((ent = readdir(mp_dir))) {
+ char path[PATH_MAX];
+
if (fnmatch(mp_filter, ent->d_name, 0) != 0)
continue;
- if (mp_request_one(ent->d_name, req, reply, &end))
+ snprintf(path, sizeof(path), "%s/%s", mp_dir_path,
+ ent->d_name);
+
+ if (mp_request_one(path, req, reply, &end))
ret = -1;
}
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH 3/4] eal: fix IPC request socket paths
2018-02-22 15:44 ` [dpdk-dev] [PATCH 3/4] eal: fix IPC request " Anatoly Burakov
@ 2018-02-23 3:15 ` Tan, Jianfeng
0 siblings, 0 replies; 15+ messages in thread
From: Tan, Jianfeng @ 2018-02-23 3:15 UTC (permalink / raw)
To: Burakov, Anatoly, dev
> -----Original Message-----
> From: Burakov, Anatoly
> Sent: Thursday, February 22, 2018 11:44 PM
> To: dev@dpdk.org
> Cc: Tan, Jianfeng
> Subject: [PATCH 3/4] eal: fix IPC request socket paths
>
> Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
> Cc: jianfeng.tan@intel.com
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Thanks!
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH 4/4] eal: fix handling of errno values in IPC
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
2018-02-22 15:43 ` [dpdk-dev] [PATCH 2/4] eal: fix IPC socket paths Anatoly Burakov
2018-02-22 15:44 ` [dpdk-dev] [PATCH 3/4] eal: fix IPC request " Anatoly Burakov
@ 2018-02-22 15:44 ` Anatoly Burakov
2018-02-23 3:16 ` Tan, Jianfeng
2018-02-23 3:11 ` [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Tan, Jianfeng
` (5 subsequent siblings)
8 siblings, 1 reply; 15+ messages in thread
From: Anatoly Burakov @ 2018-02-22 15:44 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: bacaa2754017 ("eal: add channel for multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
lib/librte_eal/common/eal_common_proc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index 2dddcaf..3a1088e 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -444,13 +444,13 @@ send_msg(const char *dst_path, struct rte_mp_msg *msg, int type)
if (snd < 0) {
rte_errno = errno;
/* Check if it caused by peer process exits */
- if (errno == -ECONNREFUSED) {
+ if (errno == ECONNREFUSED) {
/* We don't unlink the primary's socket here */
if (rte_eal_process_type() == RTE_PROC_PRIMARY)
unlink_socket_by_path(dst_path);
return 0;
}
- if (errno == -ENOBUFS) {
+ if (errno == ENOBUFS) {
RTE_LOG(ERR, EAL, "Peer cannot receive message %s\n",
dst_path);
return 0;
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (2 preceding siblings ...)
2018-02-22 15:44 ` [dpdk-dev] [PATCH 4/4] eal: fix handling of errno values in IPC Anatoly Burakov
@ 2018-02-23 3:11 ` Tan, Jianfeng
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 1/5] " Anatoly Burakov
` (4 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Tan, Jianfeng @ 2018-02-23 3:11 UTC (permalink / raw)
To: Burakov, Anatoly, dev
> -----Original Message-----
> From: Burakov, Anatoly
> Sent: Thursday, February 22, 2018 11:44 PM
> To: dev@dpdk.org
> Cc: Tan, Jianfeng
> Subject: [PATCH 1/4] eal: fix IPC timeouts
>
> Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
> Cc: jianfeng.tan@intel.com
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Thank you for identifying and fixing this bug.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH v2 1/5] eal: fix IPC timeouts
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (3 preceding siblings ...)
2018-02-23 3:11 ` [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Tan, Jianfeng
@ 2018-03-02 8:41 ` Anatoly Burakov
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 2/5] eal: fix IPC socket paths Anatoly Burakov
` (3 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Anatoly Burakov @ 2018-03-02 8:41 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
Notes:
v2: no changes
lib/librte_eal/common/eal_common_proc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index caa8774..e4d8104 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -583,7 +583,7 @@ mp_request_one(const char *dst, struct rte_mp_msg *req,
/* Check if time is out */
if (gettimeofday(&now, NULL) < 0)
break;
- if (now.tv_sec < ts->tv_sec)
+ if (ts->tv_sec < now.tv_sec)
break;
else if (now.tv_sec == ts->tv_sec &&
now.tv_usec * 1000 < ts->tv_nsec)
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH v2 2/5] eal: fix IPC socket paths
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (4 preceding siblings ...)
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 1/5] " Anatoly Burakov
@ 2018-03-02 8:41 ` Anatoly Burakov
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 3/5] eal: fix IPC request " Anatoly Burakov
` (2 subsequent siblings)
8 siblings, 0 replies; 15+ messages in thread
From: Anatoly Burakov @ 2018-03-02 8:41 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: bacaa2754017 ("eal: add channel for multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
Notes:
v2: no changes
lib/librte_eal/common/eal_common_proc.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index e4d8104..ec60d16 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -489,10 +489,14 @@ mp_send(struct rte_mp_msg *msg, const char *peer, int type)
return -1;
}
while ((ent = readdir(mp_dir))) {
+ char path[PATH_MAX];
+
if (fnmatch(mp_filter, ent->d_name, 0) != 0)
continue;
- if (send_msg(ent->d_name, msg, type) < 0)
+ snprintf(path, sizeof(path), "%s/%s", mp_dir_path,
+ ent->d_name);
+ if (send_msg(path, msg, type) < 0)
ret = -1;
}
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH v2 3/5] eal: fix IPC request socket paths
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (5 preceding siblings ...)
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 2/5] eal: fix IPC socket paths Anatoly Burakov
@ 2018-03-02 8:41 ` Anatoly Burakov
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 4/5] eal: fix handling of errno values in IPC Anatoly Burakov
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests Anatoly Burakov
8 siblings, 0 replies; 15+ messages in thread
From: Anatoly Burakov @ 2018-03-02 8:41 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
Notes:
v2: no changes
lib/librte_eal/common/eal_common_proc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index ec60d16..2dddcaf 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -658,10 +658,15 @@ rte_mp_request(struct rte_mp_msg *req, struct rte_mp_reply *reply,
}
while ((ent = readdir(mp_dir))) {
+ char path[PATH_MAX];
+
if (fnmatch(mp_filter, ent->d_name, 0) != 0)
continue;
- if (mp_request_one(ent->d_name, req, reply, &end))
+ snprintf(path, sizeof(path), "%s/%s", mp_dir_path,
+ ent->d_name);
+
+ if (mp_request_one(path, req, reply, &end))
ret = -1;
}
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH v2 4/5] eal: fix handling of errno values in IPC
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (6 preceding siblings ...)
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 3/5] eal: fix IPC request " Anatoly Burakov
@ 2018-03-02 8:41 ` Anatoly Burakov
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests Anatoly Burakov
8 siblings, 0 replies; 15+ messages in thread
From: Anatoly Burakov @ 2018-03-02 8:41 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Fixes: bacaa2754017 ("eal: add channel for multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
Notes:
v2: no changes
lib/librte_eal/common/eal_common_proc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index 2dddcaf..3a1088e 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -444,13 +444,13 @@ send_msg(const char *dst_path, struct rte_mp_msg *msg, int type)
if (snd < 0) {
rte_errno = errno;
/* Check if it caused by peer process exits */
- if (errno == -ECONNREFUSED) {
+ if (errno == ECONNREFUSED) {
/* We don't unlink the primary's socket here */
if (rte_eal_process_type() == RTE_PROC_PRIMARY)
unlink_socket_by_path(dst_path);
return 0;
}
- if (errno == -ENOBUFS) {
+ if (errno == ENOBUFS) {
RTE_LOG(ERR, EAL, "Peer cannot receive message %s\n",
dst_path);
return 0;
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests
2018-02-22 15:43 [dpdk-dev] [PATCH 1/4] eal: fix IPC timeouts Anatoly Burakov
` (7 preceding siblings ...)
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 4/5] eal: fix handling of errno values in IPC Anatoly Burakov
@ 2018-03-02 8:41 ` Anatoly Burakov
2018-03-07 14:06 ` Tan, Jianfeng
8 siblings, 1 reply; 15+ messages in thread
From: Anatoly Burakov @ 2018-03-02 8:41 UTC (permalink / raw)
To: dev; +Cc: jianfeng.tan
Unlocking the action list before sending message and locking it
again aftterwards introduces a window where a response might
arrive before we have a chance to start waiting on a condition,
resulting in timeouts on valid messages.
Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
Cc: jianfeng.tan@intel.com
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
---
Notes:
v2: added this patch
lib/librte_eal/common/eal_common_proc.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/lib/librte_eal/common/eal_common_proc.c b/lib/librte_eal/common/eal_common_proc.c
index 3a1088e..da7930f 100644
--- a/lib/librte_eal/common/eal_common_proc.c
+++ b/lib/librte_eal/common/eal_common_proc.c
@@ -561,10 +561,10 @@ mp_request_one(const char *dst, struct rte_mp_msg *req,
exist = find_sync_request(dst, req->name);
if (!exist)
TAILQ_INSERT_TAIL(&sync_requests.requests, &sync_req, next);
- pthread_mutex_unlock(&sync_requests.lock);
if (exist) {
RTE_LOG(ERR, EAL, "A pending request %s:%s\n", dst, req->name);
rte_errno = EEXIST;
+ pthread_mutex_unlock(&sync_requests.lock);
return -1;
}
@@ -578,7 +578,6 @@ mp_request_one(const char *dst, struct rte_mp_msg *req,
reply->nb_sent++;
- pthread_mutex_lock(&sync_requests.lock);
do {
pthread_cond_timedwait(&sync_req.cond, &sync_requests.lock, ts);
/* Check spurious wakeups */
--
2.7.4
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests
2018-03-02 8:41 ` [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests Anatoly Burakov
@ 2018-03-07 14:06 ` Tan, Jianfeng
2018-03-21 8:51 ` Thomas Monjalon
0 siblings, 1 reply; 15+ messages in thread
From: Tan, Jianfeng @ 2018-03-07 14:06 UTC (permalink / raw)
To: Anatoly Burakov, dev
On 3/2/2018 4:41 PM, Anatoly Burakov wrote:
> Unlocking the action list before sending message and locking it
> again aftterwards introduces a window where a response might
Typo: afterwards
> arrive before we have a chance to start waiting on a condition,
> resulting in timeouts on valid messages.
>
> Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
> Cc: jianfeng.tan@intel.com
>
> Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
Thank you for catching another bug :-)
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [dpdk-dev] [PATCH v2 5/5] eal: fix race condition in IPC requests
2018-03-07 14:06 ` Tan, Jianfeng
@ 2018-03-21 8:51 ` Thomas Monjalon
0 siblings, 0 replies; 15+ messages in thread
From: Thomas Monjalon @ 2018-03-21 8:51 UTC (permalink / raw)
To: Anatoly Burakov; +Cc: dev, Tan, Jianfeng
07/03/2018 15:06, Tan, Jianfeng:
>
> On 3/2/2018 4:41 PM, Anatoly Burakov wrote:
> > Unlocking the action list before sending message and locking it
> > again aftterwards introduces a window where a response might
>
> Typo: afterwards
>
> > arrive before we have a chance to start waiting on a condition,
> > resulting in timeouts on valid messages.
> >
> > Fixes: 783b6e54971d ("eal: add synchronous multi-process communication")
> > Cc: jianfeng.tan@intel.com
> >
> > Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
>
> Acked-by: Jianfeng Tan <jianfeng.tan@intel.com>
>
> Thank you for catching another bug :-)
Series applied, thanks
^ permalink raw reply [flat|nested] 15+ messages in thread