mem: fix segment fd API error code for external segment

Segment fd API does not support getting segment fd's from
externally allocated memory, so return proper error code
on any attempts to do so. This changes API behavior, so
document the change as well.

Fixes: 5282bb1c36 ("mem: allow memseg lists to be marked as external")
Cc: stable@dpdk.org

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
Anatoly Burakov 2018-12-13 11:43:15 +00:00 committed by Thomas Monjalon
parent bed7941886
commit 525670756a
2 changed files with 17 additions and 0 deletions

View File

@ -109,6 +109,11 @@ API Changes
Also, make sure to start the actual text at the margin.
=========================================================
* eal: Segment fd API on Linux now sets error code to ``ENOTSUP`` in more cases
where segment fd API is not expected to be supported:
- On attempt to get segment fd for an externally allocated memory segment
* pdump: The ``rte_pdump_set_socket_dir()``, the parameter ``path`` of
``rte_pdump_init()`` and enum ``rte_pdump_socktype`` were deprecated
since 18.05 and are removed in this release.

View File

@ -705,6 +705,12 @@ rte_memseg_get_fd_thread_unsafe(const struct rte_memseg *ms)
return -1;
}
/* segment fd API is not supported for external segments */
if (msl->external) {
rte_errno = ENOTSUP;
return -1;
}
ret = eal_memalloc_get_seg_fd(msl_idx, seg_idx);
if (ret < 0) {
rte_errno = -ret;
@ -755,6 +761,12 @@ rte_memseg_get_fd_offset_thread_unsafe(const struct rte_memseg *ms,
return -1;
}
/* segment fd API is not supported for external segments */
if (msl->external) {
rte_errno = ENOTSUP;
return -1;
}
ret = eal_memalloc_get_seg_fd_offset(msl_idx, seg_idx, offset);
if (ret < 0) {
rte_errno = -ret;