diff --git a/backport-fix-change-the-DefaultDependencies-configuration-to-.patch b/backport-fix-change-the-DefaultDependencies-configuration-to-.patch new file mode 100644 index 0000000..0af6636 --- /dev/null +++ b/backport-fix-change-the-DefaultDependencies-configuration-to-.patch @@ -0,0 +1,34 @@ +From aa5a4cdf094af6660ff718ef0de566aaa97a4698 Mon Sep 17 00:00:00 2001 +From: zhangyao2022 +Date: Mon, 4 Dec 2023 15:03:00 +0800 +Subject: [PATCH] fix: change the DefaultDependencies configuration to true + +--- + core/sysmaster/src/unit/rentry.rs | 2 +- + units/syslog.target | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/core/sysmaster/src/unit/rentry.rs b/core/sysmaster/src/unit/rentry.rs +index 21eddd2..d7cfc4c 100755 +--- a/core/sysmaster/src/unit/rentry.rs ++++ b/core/sysmaster/src/unit/rentry.rs +@@ -144,7 +144,7 @@ pub(crate) struct UeConfigUnit { + //When set to true, the unit will not be stopped when systemctl isolate is executed. For service, target, socket timer and path, the default value is false. For other units, the default value is true + #[entry(default = false)] + pub IgnoreOnIsolate: bool, +- #[entry(default = false)] ++ #[entry(default = true)] + pub DefaultDependencies: bool, + #[entry(default = false)] + pub RefuseManualStart: bool, +diff --git a/units/syslog.target b/units/syslog.target +index 3057814..901bdf6 100644 +--- a/units/syslog.target ++++ b/units/syslog.target +@@ -1,2 +1,3 @@ + [Unit] + Description=Initialize syslog ++DefaultDependencies=false +-- +2.33.0 + diff --git a/backport-fix-fixed-ListenNetlink-parsing.patch b/backport-fix-fixed-ListenNetlink-parsing.patch new file mode 100644 index 0000000..01c2881 --- /dev/null +++ b/backport-fix-fixed-ListenNetlink-parsing.patch @@ -0,0 +1,52 @@ +From 8bc1a7afdac5d9c2f174b141b32dc2b58deef1ee Mon Sep 17 00:00:00 2001 +From: zhangyao2022 +Date: Mon, 27 Nov 2023 10:44:12 +0800 +Subject: [PATCH] fix: fixed ListenNetlink parsing + +--- + core/coms/socket/src/config.rs | 2 +- + core/coms/socket/src/rentry.rs | 8 ++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/core/coms/socket/src/config.rs b/core/coms/socket/src/config.rs +index 69cdc32..9585d5f 100755 +--- a/core/coms/socket/src/config.rs ++++ b/core/coms/socket/src/config.rs +@@ -207,7 +207,7 @@ impl SocketConfig { + let config = &self.data.borrow().Socket; + self.parse_sockets(config.ListenStream.as_ref(), ListenItem::Stream)?; + self.parse_sockets(config.ListenDatagram.as_ref(), ListenItem::Datagram)?; +- self.parse_sockets(&[config.ListenNetlink.clone()], ListenItem::Netlink)?; ++ self.parse_sockets(config.ListenNetlink.as_ref(), ListenItem::Netlink)?; + self.parse_sockets( + config.ListenSequentialPacket.as_ref(), + ListenItem::SequentialPacket, +diff --git a/core/coms/socket/src/rentry.rs b/core/coms/socket/src/rentry.rs +index 8b20c7e..3a25761 100755 +--- a/core/coms/socket/src/rentry.rs ++++ b/core/coms/socket/src/rentry.rs +@@ -42,6 +42,10 @@ fn deserialize_pathbuf_vec(s: &str) -> Result, core::error::Error> + Ok(res) + } + ++fn deserialize_netlink_vec(s: &str) -> Result, core::error::Error> { ++ Ok(vec![s.to_string()]) ++} ++ + #[derive(UnitSection, Default, Clone, Debug, Serialize, Deserialize)] + #[allow(dead_code)] + pub(super) struct SectionSocket { +@@ -60,8 +64,8 @@ pub(super) struct SectionSocket { + pub ListenStream: Vec, + #[entry(multiple)] + pub ListenDatagram: Vec, +- #[entry(default = String::new())] +- pub ListenNetlink: String, ++ #[entry(multiple, myparser = deserialize_netlink_vec)] ++ pub ListenNetlink: Vec, + #[entry(multiple)] + pub ListenSequentialPacket: Vec, + #[entry(multiple)] +-- +2.33.0 + diff --git a/backport-fix-fixed-parsing-SocketMode-incorrectly.patch b/backport-fix-fixed-parsing-SocketMode-incorrectly.patch new file mode 100644 index 0000000..2400104 --- /dev/null +++ b/backport-fix-fixed-parsing-SocketMode-incorrectly.patch @@ -0,0 +1,59 @@ +From 461a4e7a0bf9d951d6819f7291db965d6009ff4a Mon Sep 17 00:00:00 2001 +From: zhangyao2022 +Date: Mon, 4 Dec 2023 20:23:21 +0800 +Subject: [PATCH] fix: fixed parsing SocketMode incorrectly + +--- + core/coms/socket/src/rentry.rs | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +diff --git a/core/coms/socket/src/rentry.rs b/core/coms/socket/src/rentry.rs +index 3a25761..57da556 100755 +--- a/core/coms/socket/src/rentry.rs ++++ b/core/coms/socket/src/rentry.rs +@@ -42,6 +42,12 @@ fn deserialize_pathbuf_vec(s: &str) -> Result, core::error::Error> + Ok(res) + } + ++fn deserialize_parse_mode(s: &str) -> Result { ++ u32::from_str_radix(s, 8).map_err(|_| core::error::Error::ConfigureError { ++ msg: format!("Invalid SocketMode: {}", s), ++ }) ++} ++ + fn deserialize_netlink_vec(s: &str) -> Result, core::error::Error> { + Ok(vec![s.to_string()]) + } +@@ -92,7 +98,7 @@ pub(super) struct SectionSocket { + #[entry(multiple, myparser = deserialize_pathbuf_vec)] + pub Symlinks: Vec, + pub PassSecurity: Option, +- #[entry(default = 0o666)] ++ #[entry(default = 0o666, myparser = deserialize_parse_mode)] + pub SocketMode: u32, + #[entry(default = "")] + pub SocketUser: String, +@@ -408,3 +414,20 @@ impl ReDbTable for SocketReDb { + self.0.switch_buffer(switch); + } + } ++ ++#[cfg(test)] ++ ++mod test { ++ use super::deserialize_parse_mode; ++ ++ #[test] ++ fn test_deserialize_parse_mode() { ++ assert_eq!(deserialize_parse_mode("777").unwrap(), 0o777); ++ assert_eq!(deserialize_parse_mode("644").unwrap(), 0o644); ++ assert!(deserialize_parse_mode("-777").is_err()); ++ assert!(deserialize_parse_mode("787").is_err()); ++ assert!(deserialize_parse_mode("777aa").is_err()); ++ assert!(deserialize_parse_mode("aaaaa").is_err()); ++ assert!(deserialize_parse_mode("777 aa").is_err()); ++ } ++} +-- +2.33.0 + diff --git a/backport-fix-fixed-the-ListenNetlink-parsing-error-of-socket-.patch b/backport-fix-fixed-the-ListenNetlink-parsing-error-of-socket-.patch new file mode 100644 index 0000000..12cd4b6 --- /dev/null +++ b/backport-fix-fixed-the-ListenNetlink-parsing-error-of-socket-.patch @@ -0,0 +1,41 @@ +From efd6cf89b2ae60b3117016dd1ca8ab43396c1602 Mon Sep 17 00:00:00 2001 +From: zhangyao2022 +Date: Fri, 24 Nov 2023 15:38:11 +0800 +Subject: [PATCH] fix: fixed the ListenNetlink parsing error of socket section + +--- + core/coms/socket/src/config.rs | 2 +- + core/coms/socket/src/rentry.rs | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/core/coms/socket/src/config.rs b/core/coms/socket/src/config.rs +index 9585d5f..69cdc32 100755 +--- a/core/coms/socket/src/config.rs ++++ b/core/coms/socket/src/config.rs +@@ -207,7 +207,7 @@ impl SocketConfig { + let config = &self.data.borrow().Socket; + self.parse_sockets(config.ListenStream.as_ref(), ListenItem::Stream)?; + self.parse_sockets(config.ListenDatagram.as_ref(), ListenItem::Datagram)?; +- self.parse_sockets(config.ListenNetlink.as_ref(), ListenItem::Netlink)?; ++ self.parse_sockets(&[config.ListenNetlink.clone()], ListenItem::Netlink)?; + self.parse_sockets( + config.ListenSequentialPacket.as_ref(), + ListenItem::SequentialPacket, +diff --git a/core/coms/socket/src/rentry.rs b/core/coms/socket/src/rentry.rs +index 9f9bcb5..8b20c7e 100755 +--- a/core/coms/socket/src/rentry.rs ++++ b/core/coms/socket/src/rentry.rs +@@ -60,8 +60,8 @@ pub(super) struct SectionSocket { + pub ListenStream: Vec, + #[entry(multiple)] + pub ListenDatagram: Vec, +- #[entry(multiple)] +- pub ListenNetlink: Vec, ++ #[entry(default = String::new())] ++ pub ListenNetlink: String, + #[entry(multiple)] + pub ListenSequentialPacket: Vec, + #[entry(multiple)] +-- +2.33.0 + diff --git a/backport-fix-make-sure-all-logs-are-written-to-disk.patch b/backport-fix-make-sure-all-logs-are-written-to-disk.patch new file mode 100644 index 0000000..494b5ca --- /dev/null +++ b/backport-fix-make-sure-all-logs-are-written-to-disk.patch @@ -0,0 +1,93 @@ +From ef80bd0a8d9158c9fdbcde30bd43e1d819ff338d Mon Sep 17 00:00:00 2001 +From: zhangyao2022 +Date: Mon, 27 Nov 2023 19:35:55 +0800 +Subject: [PATCH] fix: make sure all logs are written to disk + +--- + core/sysmaster/src/manager/mod.rs | 1 + + libs/log/src/inner.rs | 22 ++++++++++++++++++++++ + libs/log/src/logger.rs | 9 ++++++++- + 3 files changed, 31 insertions(+), 1 deletion(-) + +diff --git a/core/sysmaster/src/manager/mod.rs b/core/sysmaster/src/manager/mod.rs +index f1062e31..46228b77 100644 +--- a/core/sysmaster/src/manager/mod.rs ++++ b/core/sysmaster/src/manager/mod.rs +@@ -460,6 +460,7 @@ impl Manager { + } + + log::info!("Rebooting..."); ++ log::flush!(); + let _ = reboot::reboot(reboot_mode); // make lint happy + } + +diff --git a/libs/log/src/inner.rs b/libs/log/src/inner.rs +index 13f42aed..f13c51ed 100644 +--- a/libs/log/src/inner.rs ++++ b/libs/log/src/inner.rs +@@ -194,6 +194,14 @@ macro_rules! trace { + ) + } + ++/// flush output stream ++#[macro_export(local_inner_macros)] ++macro_rules! flush { ++ () => { ++ $crate::inner::__private_api_flush(); ++ }; ++} ++ + /// + /* Private, shouldn't be used out of this file. */ + pub fn __private_api_log( +@@ -222,6 +230,20 @@ pub fn __private_api_log( + } + } + ++/// ++pub fn __private_api_flush() { ++ if STATE.load(Ordering::SeqCst) != INITIALIZED { ++ return; ++ } ++ let logger = unsafe { &LOGGER_LOCK }; ++ match logger { ++ Some(v) => { ++ v.read().unwrap().flush(); ++ } ++ None => {} ++ } ++} ++ + pub use crate::debug; + pub use crate::error; + pub use crate::info; +diff --git a/libs/log/src/logger.rs b/libs/log/src/logger.rs +index 11d8d224..15f8b118 100644 +--- a/libs/log/src/logger.rs ++++ b/libs/log/src/logger.rs +@@ -340,6 +340,9 @@ impl log::Log for FileLogger { + if let Err(e) = file.flush() { + println!("Failed to flush log file: {}", e); + } ++ if let Err(e) = file.sync_all() { ++ println!("Failed to sync all log file: {}", e); ++ } + } + None => { + if !get_open_when_needed() { +@@ -605,7 +608,11 @@ impl Log for CombinedLogger { + } + } + +- fn flush(&self) {} ++ fn flush(&self) { ++ for log in &self.loggers { ++ log.flush(); ++ } ++ } + } + + impl CombinedLogger { +-- +2.33.0 + diff --git a/sysmaster.spec b/sysmaster.spec index 15945e7..ee1c8cb 100644 --- a/sysmaster.spec +++ b/sysmaster.spec @@ -16,7 +16,7 @@ Name: sysmaster Version: 0.5.1 -Release: 6 +Release: 7 Summary: redesign and reimplement process1. License: Mulan PSL v2 @@ -69,6 +69,11 @@ Patch42: backport-test-devmaster-use-unwrap-instead-of-asserting-is-ok.patch Patch43: backport-test-devmaster-add-UT-for-execute-unit.patch Patch44: backport-test-devmaster-add-UT-for-rules-module.patch Patch45: backport-test-devmaster-add-UT-for-node-and-modify-the-displa.patch +Patch46: backport-fix-fixed-the-ListenNetlink-parsing-error-of-socket-.patch +Patch47: backport-fix-fixed-ListenNetlink-parsing.patch +Patch48: backport-fix-make-sure-all-logs-are-written-to-disk.patch +Patch49: backport-fix-change-the-DefaultDependencies-configuration-to-.patch +Patch50: backport-fix-fixed-parsing-SocketMode-incorrectly.patch ExclusiveArch: x86_64 aarch64 @@ -228,6 +233,9 @@ test -f /usr/lib/sysmaster/system/udevd.service && ln -s /usr/lib/sysmaster/syst test -f /usr/lib/sysmaster/system/udev-trigger.service && ln -s /usr/lib/sysmaster/system/udev-trigger.service /etc/sysmaster/system/sysinit.target.wants/udev-trigger.service || : %changelog +* Thu Dec 14 2023 zhangyao - 0.5.1-7 +- sync patches from upstream + * Mon Dec 11 2023 chenjiayi - 0.5.1-6 - fix incorrect symbolic linkage location of devctl-trigger.service