OpenPOWER: Do not wait for response deleting host dump
The resource dump delete is long running operation with
dbus call to PLDM for instance id, making it inside a
dbus call will end up timeouts when PLDM tries to
access dump manager. To avoid dead-locks dump manager
will not be waiting for response after a delete
operation
Testing:
Create system dump and delete the dump
Create 10 resource dumps and delete one by one
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
Change-Id: I9c98c40672274a33097d9c4129ea52b5984c4246
diff --git a/dump-extensions/openpower-dumps/resource_dump_entry.cpp b/dump-extensions/openpower-dumps/resource_dump_entry.cpp
index a1d90a2..0f45bc2 100644
--- a/dump-extensions/openpower-dumps/resource_dump_entry.cpp
+++ b/dump-extensions/openpower-dumps/resource_dump_entry.cpp
@@ -4,6 +4,8 @@
#include "host_transport_exts.hpp"
#include "op_dump_consts.hpp"
+#include <fmt/core.h>
+
#include <phosphor-logging/elog-errors.hpp>
#include <xyz/openbmc_project/Common/error.hpp>
@@ -38,7 +40,10 @@
void Entry::delete_()
{
auto srcDumpID = sourceDumpId();
-
+ auto dumpId = id;
+ log<level::INFO>(fmt::format("Resource dump delete id({}) srcdumpid({})",
+ dumpId, srcDumpID)
+ .c_str());
// Remove Dump entry D-bus object
phosphor::dump::Entry::delete_();
diff --git a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
index a16f942..21be03a 100644
--- a/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
+++ b/host-transport-extensions/pldm/oem/ibm/pldm_oem_cmds.cpp
@@ -188,17 +188,10 @@
"allowed due to encode fileack failed"));
}
- uint8_t* pldmRespMsg = nullptr;
- size_t pldmRespMsgSize;
-
CustomFd pldmFd(openPLDM());
- retCode =
- pldm_send_recv(mctpEndPointId, pldmFd(), fileAckReqMsg.data(),
- fileAckReqMsg.size(), &pldmRespMsg, &pldmRespMsgSize);
-
- std::unique_ptr<uint8_t, decltype(std::free)*> pldmRespMsgPtr{pldmRespMsg,
- std::free};
+ retCode = pldm_send(mctpEndPointId, pldmFd(), fileAckReqMsg.data(),
+ fileAckReqMsg.size());
if (retCode != PLDM_REQUESTER_SUCCESS)
{
auto errorNumber = errno;
@@ -213,26 +206,10 @@
"allowed due to fileack send failed"));
}
- uint8_t completionCode;
-
- retCode =
- decode_file_ack_resp(reinterpret_cast<pldm_msg*>(pldmRespMsgPtr.get()),
- pldmRespMsgSize - pldmMsgHdrSize, &completionCode);
-
- if (retCode || completionCode)
- {
- log<level::ERR>(
- fmt::format("Failed to delete host dump, SRC_DUMP_ID({}), "
- "PLDM_FILE_IO_TYPE({}), PLDM_RETURN_CODE({}), "
- "PLDM_COMPLETION_CODE({})",
- dumpId, pldmDumpType, retCode, completionCode)
- .c_str());
- elog<NotAllowed>(Reason("Host dump deletion via pldm is "
- "failed"));
- }
-
log<level::INFO>(
- fmt::format("Deleted host dump, SRC_DUMP_ID({})", dumpId).c_str());
+ fmt::format("Sent request to host to delete the dump, SRC_DUMP_ID({})",
+ dumpId)
+ .c_str());
}
} // namespace pldm
} // namespace dump