mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 02:17:36 -04:00
liveupdate: Extract luo_session_deserialize_one helper
Extract the logic for deserializing single entries for sessions into separate helper functions. In preparation to a linked-block serialization for sessions. This is a pure code movement, no other changes intended. Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Reviewed-by: Pratyush Yadav (Google) <pratyush@kernel.org> Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Link: https://patch.msgid.link/20260603154402.468928-7-pasha.tatashin@soleen.com Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
This commit is contained in:
committed by
Mike Rapoport (Microsoft)
parent
51b71af922
commit
be9d10d167
@@ -555,6 +555,40 @@ int __init luo_session_setup_incoming(u64 sessions_pa)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int luo_session_deserialize_one(struct luo_session_header *sh,
|
||||
struct luo_session_ser *ser)
|
||||
{
|
||||
struct luo_session *session;
|
||||
int err;
|
||||
|
||||
session = luo_session_alloc(ser->name);
|
||||
if (IS_ERR(session)) {
|
||||
pr_warn("Failed to allocate session [%.*s] during deserialization %pe\n",
|
||||
(int)sizeof(ser->name), ser->name, session);
|
||||
return PTR_ERR(session);
|
||||
}
|
||||
|
||||
err = luo_session_insert(sh, session);
|
||||
if (err) {
|
||||
pr_warn("Failed to insert session [%s] %pe\n",
|
||||
session->name, ERR_PTR(err));
|
||||
luo_session_free(session);
|
||||
return err;
|
||||
}
|
||||
|
||||
scoped_guard(mutex, &session->mutex) {
|
||||
err = luo_file_deserialize(&session->file_set,
|
||||
&ser->file_set_ser);
|
||||
}
|
||||
if (err) {
|
||||
pr_warn("Failed to deserialize files for session [%s] %pe\n",
|
||||
session->name, ERR_PTR(err));
|
||||
return err;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int luo_session_deserialize(void)
|
||||
{
|
||||
struct luo_session_header *sh = &luo_session_global.incoming;
|
||||
@@ -586,34 +620,9 @@ int luo_session_deserialize(void)
|
||||
* reliably reset devices and reclaim memory.
|
||||
*/
|
||||
for (int i = 0; i < sh->header_ser->count; i++) {
|
||||
struct luo_session *session;
|
||||
|
||||
session = luo_session_alloc(sh->ser[i].name);
|
||||
if (IS_ERR(session)) {
|
||||
pr_warn("Failed to allocate session [%.*s] during deserialization %pe\n",
|
||||
(int)sizeof(sh->ser[i].name),
|
||||
sh->ser[i].name, session);
|
||||
err = PTR_ERR(session);
|
||||
err = luo_session_deserialize_one(sh, &sh->ser[i]);
|
||||
if (err)
|
||||
goto save_err;
|
||||
}
|
||||
|
||||
err = luo_session_insert(sh, session);
|
||||
if (err) {
|
||||
pr_warn("Failed to insert session [%s] %pe\n",
|
||||
session->name, ERR_PTR(err));
|
||||
luo_session_free(session);
|
||||
goto save_err;
|
||||
}
|
||||
|
||||
scoped_guard(mutex, &session->mutex) {
|
||||
err = luo_file_deserialize(&session->file_set,
|
||||
&sh->ser[i].file_set_ser);
|
||||
}
|
||||
if (err) {
|
||||
pr_warn("Failed to deserialize files for session [%s] %pe\n",
|
||||
session->name, ERR_PTR(err));
|
||||
goto save_err;
|
||||
}
|
||||
}
|
||||
|
||||
kho_restore_free(sh->header_ser);
|
||||
|
||||
Reference in New Issue
Block a user