@@ -266,8 +266,8 @@ static void path_init(Unit *u) {
266266
267267 p -> directory_mode = 0755 ;
268268
269- p -> trigger_limit .interval = 2 * USEC_PER_SEC ;
270- p -> trigger_limit .burst = 200 ;
269+ p -> trigger_limit .interval = USEC_INFINITY ;
270+ p -> trigger_limit .burst = UINT_MAX ;
271271}
272272
273273void path_free_specs (Path * p ) {
@@ -356,6 +356,16 @@ static int path_add_trigger_dependencies(Path *p) {
356356static int path_add_extras (Path * p ) {
357357 int r ;
358358
359+ assert (p );
360+
361+ /* To avoid getting pid1 in a busy-loop state (eg: failed condition on associated service),
362+ * set a default trigger limit if the user didn't specify any. */
363+ if (p -> trigger_limit .interval == USEC_INFINITY )
364+ p -> trigger_limit .interval = 2 * USEC_PER_SEC ;
365+
366+ if (p -> trigger_limit .burst == UINT_MAX )
367+ p -> trigger_limit .burst = 200 ;
368+
359369 r = path_add_trigger_dependencies (p );
360370 if (r < 0 )
361371 return r ;
@@ -403,12 +413,16 @@ static void path_dump(Unit *u, FILE *f, const char *prefix) {
403413 "%sResult: %s\n"
404414 "%sUnit: %s\n"
405415 "%sMakeDirectory: %s\n"
406- "%sDirectoryMode: %04o\n" ,
416+ "%sDirectoryMode: %04o\n"
417+ "%sTriggerLimitIntervalSec: %s\n"
418+ "%sTriggerLimitBurst: %u\n" ,
407419 prefix , path_state_to_string (p -> state ),
408420 prefix , path_result_to_string (p -> result ),
409421 prefix , trigger ? trigger -> id : "n/a" ,
410422 prefix , yes_no (p -> make_directory ),
411- prefix , p -> directory_mode );
423+ prefix , p -> directory_mode ,
424+ prefix , FORMAT_TIMESPAN (p -> trigger_limit .interval , USEC_PER_SEC ),
425+ prefix , p -> trigger_limit .burst );
412426
413427 LIST_FOREACH (spec , s , p -> specs )
414428 path_spec_dump (s , f , prefix );
0 commit comments