core: unit_name_from_path() does not return -ENAMETOOLONG anymore
Follow-ups fora7fb1f2eaeand1d0727e76f.
This commit is contained in:
+4
-27
@@ -1717,37 +1717,14 @@ static int mount_setup_unit(
|
||||
if (!is_path(where))
|
||||
return 0;
|
||||
|
||||
/* Mount unit names have to be (like all other unit names) short enough to fit into file names. This
|
||||
* means there's a good chance that overly long mount point paths after mangling them to look like a
|
||||
* unit name would result in unit names we don't actually consider valid. This should be OK however
|
||||
* as such long mount point paths should not happen on regular systems — and if they appear
|
||||
* nonetheless they are generally synthesized by software, and thus managed by that other
|
||||
* software. Having such long names just means you cannot use systemd to manage those specific mount
|
||||
* points, which should be an OK restriction to make. After all we don't have to be able to manage
|
||||
* all mount points in the world — as long as we don't choke on them when we encounter them. */
|
||||
r = unit_name_from_path(where, ".mount", &e);
|
||||
if (r < 0) {
|
||||
static RateLimit rate_limit = { /* Let's log about this at warning level at most once every
|
||||
* 5s. Given that we generate this whenever we read the file
|
||||
* otherwise we probably shouldn't flood the logs with
|
||||
* this */
|
||||
.interval = 5 * USEC_PER_SEC,
|
||||
.burst = 1,
|
||||
};
|
||||
|
||||
if (r == -ENAMETOOLONG)
|
||||
return log_struct_errno(
|
||||
ratelimit_below(&rate_limit) ? LOG_WARNING : LOG_DEBUG, r,
|
||||
"MESSAGE_ID=" SD_MESSAGE_MOUNT_POINT_PATH_NOT_SUITABLE_STR,
|
||||
"MOUNT_POINT=%s", where,
|
||||
LOG_MESSAGE("Mount point path '%s' too long to fit into unit name, ignoring mount point.", where));
|
||||
|
||||
if (r < 0)
|
||||
return log_struct_errno(
|
||||
ratelimit_below(&rate_limit) ? LOG_WARNING : LOG_DEBUG, r,
|
||||
LOG_WARNING, r,
|
||||
"MESSAGE_ID=" SD_MESSAGE_MOUNT_POINT_PATH_NOT_SUITABLE_STR,
|
||||
"MOUNT_POINT=%s", where,
|
||||
LOG_MESSAGE("Failed to generate valid unit name from mount point path '%s', ignoring mount point: %m", where));
|
||||
}
|
||||
LOG_MESSAGE("Failed to generate valid unit name from mount point path '%s', ignoring mount point: %m",
|
||||
where));
|
||||
|
||||
u = manager_get_unit(m, e);
|
||||
if (u)
|
||||
|
||||
+1
-2
@@ -1437,8 +1437,7 @@ int swap_process_device_new(Manager *m, sd_device *dev) {
|
||||
int q;
|
||||
|
||||
q = unit_name_from_path(devlink, ".swap", &n);
|
||||
if (IN_SET(q, -EINVAL, -ENAMETOOLONG)) /* If name too long or otherwise not convertible to
|
||||
* unit name, we can't manage it */
|
||||
if (q == -EINVAL) /* If the name is not convertible to unit name, we can't manage it */
|
||||
continue;
|
||||
if (q < 0)
|
||||
return q;
|
||||
|
||||
+1
-1
@@ -1519,7 +1519,7 @@ static int unit_add_mount_dependencies(Unit *u) {
|
||||
Unit *m;
|
||||
|
||||
r = unit_name_from_path(prefix, ".mount", &p);
|
||||
if (IN_SET(r, -EINVAL, -ENAMETOOLONG))
|
||||
if (r == -EINVAL)
|
||||
continue; /* If the path cannot be converted to a mount unit name, then it's
|
||||
* not manageable as a unit by systemd, and hence we don't need a
|
||||
* dependency on it. Let's thus silently ignore the issue. */
|
||||
|
||||
Reference in New Issue
Block a user