Compare commits
3 Commits
e128723dae
...
c8f12abc73
Author | SHA1 | Date |
---|---|---|
Christian Göttsche | c8f12abc73 | |
Piotr Drąg | 116d6d2965 | |
Yu Watanabe | f527c6fa08 |
|
@ -488,3 +488,39 @@ Mocno zalecane jest unikanie wykonywania usług pod tą tożsamością użytkown
|
||||||
zwłaszcza na komputerach używających NFS lub mających kontenery. Należy
|
zwłaszcza na komputerach używających NFS lub mających kontenery. Należy
|
||||||
przydzielić identyfikator użytkownika dla tej konkretnej usługi, statycznie
|
przydzielić identyfikator użytkownika dla tej konkretnej usługi, statycznie
|
||||||
przez systemd-sysusers lub dynamicznie przez ustawienie usługi DynamicUser=.
|
przez systemd-sysusers lub dynamicznie przez ustawienie usługi DynamicUser=.
|
||||||
|
|
||||||
|
-- 1c0454c1bd2241e0ac6fefb4bc631433
|
||||||
|
Subject: Usługa systemd-udev-settle.service jest przestarzała.
|
||||||
|
Defined-By: systemd
|
||||||
|
Support: %SUPPORT_URL%
|
||||||
|
|
||||||
|
Użycie jednostki usługi systemd „systemd-udev-settle.service” jest
|
||||||
|
przestarzałe. Wstawia ona sztuczne opóźnienie do procesu uruchamiania
|
||||||
|
bez dostarczania gwarancji, które były oczekiwane przez pozostałe
|
||||||
|
podsystemy. Korzystanie z tej usługi może prowadzić do hazardów,
|
||||||
|
i zasadniczo jest błędem.
|
||||||
|
|
||||||
|
W przeszłości zadaniem tej usługi było oczekiwanie, aż wszystkie urządzenia
|
||||||
|
komputera zostaną w pełni wykryte i zainicjowane, opóźniając uruchamianie
|
||||||
|
do ukończenia tego etapu. Jednakże, współczesne komputery i urządzenia
|
||||||
|
na ogół nie działają już w ten sposób, tylko mogą pojawić się w dowolnej
|
||||||
|
chwili i zająć dowolny czas na wykrycie i inicjację. Z tego powodu,
|
||||||
|
w ogólnym przypadku, nie jest już możliwe poprawne opóźnienie uruchamiania
|
||||||
|
do przetworzenia „wszystkich urządzeń”, ponieważ nie jest jasne, co znaczy
|
||||||
|
„wszystkie urządzenia” i kiedy zostały odnalezione. Dotyczy to zwłaszcza
|
||||||
|
urządzeń podłączonych przez USB lub sieć.
|
||||||
|
|
||||||
|
Nowoczesne oprogramowanie wymagające określonego sprzętu (takiego jak
|
||||||
|
urządzenie sieciowe lub urządzenie blokowe) do działania powinno oczekiwać
|
||||||
|
tylko na pojawienie się danego urządzenia, a w przeciwnym razie działać
|
||||||
|
asynchronicznie, inicjując urządzenia, kiedy te pojawiają się w trakcie
|
||||||
|
uruchamiania i w trakcie działania systemu bez opóźniania procesu uruchamiania.
|
||||||
|
|
||||||
|
Jest to wada danego oprogramowania, jeśli nie działa ono w ten sposób
|
||||||
|
i nadal wciąga usługę systemd-udev-settle.service do procesu uruchamiania.
|
||||||
|
|
||||||
|
Prosimy zgłosić błąd w następujących jednostkach z prośbą
|
||||||
|
o ich aktualizację tak, aby działały w sposób dynamiczny
|
||||||
|
bez zależności od usługi systemd-udev-settle.service:
|
||||||
|
|
||||||
|
@OFFENDING_UNITS@
|
||||||
|
|
|
@ -101,7 +101,7 @@ static void test_config_parse_duid_rawdata(void) {
|
||||||
test_config_parse_duid_rawdata_one("11::", 0, &(DUID){0, 1, {0x11}}); /* FIXME: should this be an error? */
|
test_config_parse_duid_rawdata_one("11::", 0, &(DUID){0, 1, {0x11}}); /* FIXME: should this be an error? */
|
||||||
test_config_parse_duid_rawdata_one("abcdef", 0, &(DUID){});
|
test_config_parse_duid_rawdata_one("abcdef", 0, &(DUID){});
|
||||||
test_config_parse_duid_rawdata_one(BYTES_0_128, 0, &(DUID){});
|
test_config_parse_duid_rawdata_one(BYTES_0_128, 0, &(DUID){});
|
||||||
test_config_parse_duid_rawdata_one(BYTES_0_128 + 2, 0, &(DUID){0, 128, BYTES_1_128});
|
test_config_parse_duid_rawdata_one(&BYTES_0_128[2], 0, &(DUID){0, 128, BYTES_1_128});
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_config_parse_hwaddr(void) {
|
static void test_config_parse_hwaddr(void) {
|
||||||
|
|
|
@ -1969,8 +1969,10 @@ static int call_dns(sd_bus *bus, char **dns, const BusLocator *locator, sd_bus_e
|
||||||
return bus_log_create_error(r);
|
return bus_log_create_error(r);
|
||||||
|
|
||||||
r = sd_bus_call(bus, req, 0, error, NULL);
|
r = sd_bus_call(bus, req, 0, error, NULL);
|
||||||
if (r < 0 && extended && sd_bus_error_has_name(error, SD_BUS_ERROR_UNKNOWN_METHOD))
|
if (r < 0 && extended && sd_bus_error_has_name(error, SD_BUS_ERROR_UNKNOWN_METHOD)) {
|
||||||
|
sd_bus_error_free(error);
|
||||||
return call_dns(bus, dns, locator, error, false);
|
return call_dns(bus, dns, locator, error, false);
|
||||||
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,9 @@ static void test_cleanup_order(void) {
|
||||||
static void test_auto_erase_memory(void) {
|
static void test_auto_erase_memory(void) {
|
||||||
_cleanup_(erase_and_freep) uint8_t *p1, *p2;
|
_cleanup_(erase_and_freep) uint8_t *p1, *p2;
|
||||||
|
|
||||||
|
/* print address of p2, else e.g. clang-11 will optimize it out */
|
||||||
|
log_debug("p1: %p p2: %p", &p1, &p2);
|
||||||
|
|
||||||
assert_se(p1 = new(uint8_t, 1024));
|
assert_se(p1 = new(uint8_t, 1024));
|
||||||
assert_se(p2 = new(uint8_t, 1024));
|
assert_se(p2 = new(uint8_t, 1024));
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ static void test_clock_is_localtime(void) {
|
||||||
log_info("scenario #%zu:, expected result %i", i, scenarios[i].expected_result);
|
log_info("scenario #%zu:, expected result %i", i, scenarios[i].expected_result);
|
||||||
log_info("%s", scenarios[i].contents);
|
log_info("%s", scenarios[i].contents);
|
||||||
rewind(f);
|
rewind(f);
|
||||||
ftruncate(fileno(f), 0);
|
assert_se(ftruncate(fileno(f), 0) == 0);
|
||||||
assert_se(write_string_stream(f, scenarios[i].contents, WRITE_STRING_FILE_AVOID_NEWLINE) == 0);
|
assert_se(write_string_stream(f, scenarios[i].contents, WRITE_STRING_FILE_AVOID_NEWLINE) == 0);
|
||||||
assert_se(clock_is_localtime(adjtime) == scenarios[i].expected_result);
|
assert_se(clock_is_localtime(adjtime) == scenarios[i].expected_result);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue