Merge pull request #446 from mssonicbld/sonicbld/202305-merge

[code sync] Merge code from sonic-net/sonic-buildimage:202305 to 202305
This commit is contained in:
mssonicbld 2024-09-04 11:08:49 +08:00 коммит произвёл GitHub
Родитель a37e59a4a0 d6c60a9857
Коммит b570254b0b
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
2 изменённых файлов: 111 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,110 @@
From 449a90a20967a3fa33535662ecd259793ad078ae Mon Sep 17 00:00:00 2001
From: yaqiangz <zyq1512099831@gmail.com>
Date: Mon, 26 Aug 2024 02:18:52 +0000
Subject: [PATCH] Register IO obj before create fd watch
---
omapip/dispatch.c | 44 +++++++++++++++++++++++++++-----------------
1 file changed, 27 insertions(+), 17 deletions(-)
diff --git a/omapip/dispatch.c b/omapip/dispatch.c
index ba99889..7f21c9a 100644
--- a/omapip/dispatch.c
+++ b/omapip/dispatch.c
@@ -123,6 +123,7 @@ omapi_iscsock_cb(isc_task_t *task,
int flags)
{
omapi_io_object_t *obj;
+ omapi_io_object_t *temp_obj;
isc_result_t status;
/* Get the current time... */
@@ -140,6 +141,9 @@ omapi_iscsock_cb(isc_task_t *task,
}
if (obj == NULL) {
+ temp_obj = (omapi_io_object_t *) cbarg;
+ log_error ("Isc socket callback of fd %d return 0 because obj is NULL",
+ temp_obj->fd->methods->getfd(temp_obj->fd));
return(0);
}
#else
@@ -157,6 +161,8 @@ omapi_iscsock_cb(isc_task_t *task,
* close the socket.
*/
if (obj->closed == ISC_TRUE) {
+ log_error ("Isc socket callback of fd %d return 0 because fd closed",
+ obj->fd->methods->getfd(obj->fd));
return(0);
}
#endif
@@ -170,8 +176,11 @@ omapi_iscsock_cb(isc_task_t *task,
* read and got no bytes) we don't need to try
* again.
*/
- if (status == ISC_R_SHUTTINGDOWN)
+ if (status == ISC_R_SHUTTINGDOWN) {
+ log_error ("Isc socket callback of fd %d return 0 because reader shutdown",
+ obj->fd->methods->getfd(obj->fd));
return (0);
+ }
/* Otherwise We always ask for more when reading */
return (1);
} else if ((flags == ISC_SOCKFDWATCH_WRITE) &&
@@ -190,6 +199,8 @@ omapi_iscsock_cb(isc_task_t *task,
* structures etc) or no more to write, tell the socket
* lib we don't have more to do right now.
*/
+ log_error ("Isc socket callback of fd %d return 0 because unknown issue",
+ obj->fd->methods->getfd(obj->fd));
return (0);
}
@@ -255,6 +266,21 @@ isc_result_t omapi_register_io_object (omapi_object_t *h,
fd = writefd(h);
}
+ /* Find the last I/O state, if there are any. */
+ for (p = omapi_io_states.next;
+ p && p -> next; p = p -> next)
+ ;
+ if (p)
+ omapi_io_reference (&p -> next, obj, MDL);
+ else
+ omapi_io_reference (&omapi_io_states.next, obj, MDL);
+
+ obj -> readfd = readfd;
+ obj -> writefd = writefd;
+ obj -> reader = reader;
+ obj -> writer = writer;
+ obj -> reaper = reaper;
+
if (fd_flags != 0) {
status = isc_socket_fdwatchcreate(dhcp_gbl_ctx.socketmgr,
fd, fd_flags,
@@ -274,22 +300,6 @@ isc_result_t omapi_register_io_object (omapi_object_t *h,
}
}
-
- /* Find the last I/O state, if there are any. */
- for (p = omapi_io_states.next;
- p && p -> next; p = p -> next)
- ;
- if (p)
- omapi_io_reference (&p -> next, obj, MDL);
- else
- omapi_io_reference (&omapi_io_states.next, obj, MDL);
-
- obj -> readfd = readfd;
- obj -> writefd = writefd;
- obj -> reader = reader;
- obj -> writer = writer;
- obj -> reaper = reaper;
-
omapi_io_dereference(&obj, MDL);
return ISC_R_SUCCESS;
}
--
2.25.1

Просмотреть файл

@ -13,3 +13,4 @@
0012-add-option-si-to-support-using-src-intf-ip-in-relay.patch
0013-Fix-dhcrelay-agent-option-buffer-pointer-logic.patch
0016-Don-t-look-up-the-ifindex-for-fallback.patch
0017-Register-IO-obj-before-create-fd-watch.patch