}
}
- if (m->running_as == SYSTEMD_SYSTEM) {
- const char* target;
-
- target = mount_needs_network(options, fstype) ? SPECIAL_REMOTE_FS_TARGET : NULL;
+ if (m->running_as == SYSTEMD_SYSTEM &&
+ mount_needs_network(options, fstype)) {
/* _netdev option may have shown up late, or on a
* remount. Add remote-fs dependencies, even though
- * local-fs ones may already be there */
- if (target) {
- unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
- load_extras = true;
- }
+ * local-fs ones may already be there. */
+ unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_REMOTE_FS_TARGET, NULL, true);
+ load_extras = true;
}
if (u->load_state == UNIT_NOT_FOUND) {
if (!tb || !itr)
return log_oom();
- mnt_table_parse_mtab(tb, NULL);
- if (r)
+ r = mnt_table_parse_mtab(tb, NULL);
+ if (r < 0)
return r;
- while (mnt_table_next_fs(tb, itr, &fs) == 0) {
+ r = 0;
+ for (;;) {
const char *device, *path, *options, *fstype;
_cleanup_free_ const char *d = NULL, *p = NULL;
int k;
+ k = mnt_table_next_fs(tb, itr, &fs);
+ if (k == 1)
+ break;
+ else if (k < 0)
+ return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m");
+
device = mnt_fs_get_source(fs);
path = mnt_fs_get_target(fs);
options = mnt_fs_get_options(fs);
return log_oom();
k = mount_add_one(m, d, p, options, fstype, set_flags);
- if (k < 0)
+ if (r == 0 && k < 0)
r = k;
}