Commit Graph
41847 Commits
Author SHA1 Message Date
Daan De Meyer 81427d0fd2 repart: Use COPY_HOLES more 2022-11-11 13:48:21 +01:00
Daan De Meyer 8c467ee8ef repart: Use COPY_REFLINK in context_copy_blocks()
We might be copying between files without a loop device involved.
In that case, a reflink is possible and will be much faster.
2022-11-11 13:47:47 +01:00
Daan De Meyer a673b0568b repart: Use copy_bytes() instead of copy_bytes_full() 2022-11-11 13:47:47 +01:00
Daan De Meyer 46fddd8eb6 Merge pull request #24803 from DaanDeMeyer/repart-copy-deny-list
repart: Don't descend into directories assigned to other partitions
2022-11-11 13:19:58 +01:00
Daan De Meyer cc085ec65f Revert "rm-rf: Add rm_rf_physical_and_close()"
This reverts commit 56e2bceddc.

Doing destructive cleanup operations via unreliable /proc path
lookups is unsafe and should be avoided so let's remove this function.
2022-11-11 10:19:18 +01:00
Daan De Meyer c9a1202ecb test-copy: Stop using rm_rf_physical_and_close
This cleanup function depends on resolving fd's to paths via /proc
which is unreliable so we shouldn't depend on it for destructive
operations. Use regular path based cleanup instead.
2022-11-11 10:19:18 +01:00
Daan De Meyer 7d000133c2 fs-util: Add missing assert to chmod_and_chown_at() 2022-11-11 10:19:18 +01:00
Daan De Meyer c2fc5890e3 chase-symlinks: Drop unnecessary if 2022-11-11 09:52:12 +01:00
Daan De Meyer 8c39e28191 path-util: Drop path_make_relative_cwd()
Function is unused
2022-11-11 09:50:50 +01:00
Daan De Meyer 8b9c56ba3e tmpfile-util: Add missing assert 2022-11-11 09:50:19 +01:00
Yu Watanabe b27c803601 Merge pull request #25328 from poettering/vertical-tables
format-table: add concept of "vertical" table
2022-11-11 15:18:12 +09:00
Luca Boccassi 021397f776 Merge pull request #25325 from yuwata/resolve-cap-per-link-setting-by-global
resolve: provide effective mDNS or LLMNR settings
2022-11-10 23:20:40 +01:00
Lennart Poettering 31a19acf82 timedatectl: port to new 'vertical' table type 2022-11-10 23:11:17 +01:00
Lennart Poettering 37a50123fa resolvectl: port to new 'vertical' table type 2022-11-10 23:10:37 +01:00
Lennart Poettering 858409499c resolvectl: fail properly if we can't append to table 2022-11-10 23:09:56 +01:00
Lennart Poettering c6bf9dff3a format-table: add an explicit "vertical" mode
Originally, the table formatting code was written to display a number of
records, one per line, and within each line multiple fields of the same
record. The first line contains the column names.

It was then started to be used in a "vertical" mode however,
i.e. with field names on the left instead of the top. Let's support such
a mode explicitly, so that we can provide systematic styling, and can
properly convert this mode to JSON.

A new constructor "table_new_vertical()" is added creating such
"vertical" tables. Internally, this is a table with two columns: "key"
and "value". When outputting this as JSON we'll output a single JSON
object, with key/value as fields. (Which is different from the
traditional output where we'd use the first line as JSON field names,
and output an array of objects).

A new cell type TABLE_FIELD is added for specifically marking the
"field" cells, i.e. the cells in the first column. We'll automatically
suffic ":" to these fields on output.
2022-11-10 23:09:18 +01:00
Daan De Meyer 8522691d4d journal: Ratelimit more journald log messages
systemd-journald is prone to spamming logs if the system gets into
a messy state. Let's improve the situation by ratelimiting logs on
the hot code paths to 3 times per minute.
2022-11-10 17:51:05 +01:00
Daan De Meyer 2199ff9018 log: Add shorthands for log_ratelimit_full() 2022-11-10 17:51:05 +01:00
Daan De Meyer 0f06e64c3d log: Add ratelimit argument to ratelimit log macros
Allows configuring the ratelimit per logging statement.
2022-11-10 17:51:03 +01:00
Daan De Meyer 7a2ec6d0bf log: Add log_ratelimit_full() 2022-11-10 17:49:34 +01:00
Daan De Meyer fa83506d50 log: Use ##__VA_ARGS__ in ratelimit log macros
This allows us to call these without formatting arguments.
2022-11-10 17:49:34 +01:00
Lennart Poettering 71ea84369e locale: honour new env var $SYSTEMD_UTF8=
This is useful to force off fancy unicode glyph use (i.e. use "->"
instead of "→"), which is useful in tests where locales might be
missing, and thus control via $LC_CTYPE is not reliable.

Use this in TEST-58, to ensure the output checks we do aren't confused
by missing these glyphs being unicode or not.
2022-11-10 17:20:36 +01:00
Daan De Meyer c0fad2d9b6 repart: Don't descend into directories assigned to other partitions
Let's say we have the following repart definitions files root.conf
and home.conf:

```
[Partition]
Type=root
CopyFiles=/
```

```
[Partition]
Type=home
CopyFiles=/home
```

Currently, we'd end up copying /home to both the root partition and
the home partition. To prevent this from happening, let's adopt a
new policy when copying files for a partition: We won't copy any
files/directories that appear in the CopyFiles= list of another
partition, unless that directory explicitly appears in our own
CopyFiles= list.

This way, we prevent copying /home twice into the root and home
partition, but should a user really want that behavior, they can
have it by adding /home to the CopyFIles= list of the root partition
as well.
2022-11-10 16:40:33 +01:00
Daan De Meyer 58b4ad76ca gpt: Add gpt_partition_type_mountpoint_nulstr() 2022-11-10 16:40:33 +01:00
Daan De Meyer dd8940235f gpt: Replace bitfields with designator field in GptPartitionType
To achieve this we move the PartitionDesignator enum from
dissect-image.h to gpt.h
2022-11-10 16:40:33 +01:00
Daan De Meyer a424958aa6 copy: Support passing a deny list of files/directories to not copy 2022-11-10 16:40:31 +01:00
Lennart Poettering 5db8b0bcad dissect: make image name bold 2022-11-10 16:00:59 +01:00
Lennart Poettering b387778c5b dissect: also parse out the top-level GPT table uuid and expose this as image UUID
systemd-repart generates this in a suitably stable fashion, hence let's
actually use it as an identifier for the image. As a first step parse
it, and show it.
2022-11-10 16:00:59 +01:00
Lennart Poettering 9bc4156cdf json: add build helpers to insert id128 in uuid formatting into json object 2022-11-10 16:00:59 +01:00
Daan De Meyer ddfdf86f81 stat-util: Move inode_hash_ops to stat-util
TO make it usable in other code.
2022-11-10 15:59:18 +01:00
Yu Watanabe c38a03df4a resolvectl: warn if the global mDNS or LLMNR support level is lower than the requested one 2022-11-10 21:54:56 +09:00
Yu Watanabe dc167037c4 resolve: provide effective supporting levels of mDNS and LLMNR
The per-link settings are ignored if the feature is disabled by the global setting.
Let's announce the effective level, to make not users confused.

Closes #24863.
2022-11-10 21:54:56 +09:00
Yu Watanabe bce459e327 resolve: introduce link_get_llmnr_support() and link_get_mdns_support() 2022-11-10 21:54:18 +09:00
Yu Watanabe f6e4aa7b03 resolve: drop redundant call of socket_ipv6_is_supported()
As link_relevant() is called with AF_INET6, which returns true only when
the link has at least one relevant IPv6 address.
2022-11-10 21:46:36 +09:00
Luca Boccassi 741504aa17 Merge pull request #24813 from DaanDeMeyer/at-all-the-things
Add more openat() style variants for existing stuff
2022-11-10 10:57:14 +01:00
Luca Boccassi 84fe5182d5 Merge pull request #25315 from poettering/dissect-mtree
dissect: add new --mtree switch to generate BSD comaptible mtree manifests of DDIs
2022-11-10 10:44:27 +01:00
Frantisek Sumsal a92401d558 Merge pull request #25280 from keszybz/initrd-with-overlayfs
Initrd with overlayfs
2022-11-10 08:22:15 +00:00
Zbigniew Jędrzejewski-Szmek a940f507fb pid1: skip cleanup if root is not tmpfs/ramfs
in_initrd() was really doing two things: checking if we're in the initrd, and
also verifying that the initrd is set up correctly. But this second check is
complicated, in particular it would return false for overlayfs, even with an
upper tmpfs layer. It also doesn't support the use case of having an initial
initrd with tmpfs, and then transitioning into an intermediate initrd that is
e.g. a DDI, i.e. a filesystem possibly with verity arranged as a disk image.

We don't need to check if we're in initrd in every program. Instead, concerns
are separated:
- in_initrd() just does a simple check for /etc/initrd-release.
- When doing cleanup, pid1 checks if it's on a tmpfs before starting to wipe
  the old root. The only case where we want to remove the old root is when
  we're on a plain tempory filesystem. With an overlay, we'd be creating
  whiteout files, which is not very useful. (*)

This should resolve https://bugzilla.redhat.com/show_bug.cgi?id=2137631
which is caused by systemd refusing to treat the system as an initrd because
overlayfs is used.

(*) I think the idea of keeping the initrd fs around for shutdown is outdated.
We should just have a completely separate exitrd that is unpacked when we want
to shut down. This way, we don't waste memory at runtime, and we also don't
transition to a potentially older version of systemd. But we don't have support
for this yet.

This replaces 0fef5b0f0bd9ded1ae7bcb3e4e4b2893e36c51a6.
2022-11-09 22:44:23 +01:00
Zbigniew Jędrzejewski-Szmek 3ed332e77a test-fd-util: fix typos and use log_tests_skipped() 2022-11-09 22:44:23 +01:00
Lennart Poettering db02190eec dissect: add a new "--mtree" switch for generating a BSD mtree(5) compatible file manifest 2022-11-09 22:20:51 +01:00
Lennart Poettering b21ec07b54 recurse-dir: optionally, call callback when entering/leaving toplevel dir, too
So far recurse_dir() will call the callback whenever we enter a
directory, and then pass the struct dirent for that directory, and an fd
for the directory the dirent is part of (i.e. the parent of the
directory we call things for). For the top-level dir the function is
invoked for we will not call the callback however, because we have no
dirent for that, and not fd for the directory the top-level dir is part
of. Let's add a flag to call it anyway, and in that case pass a NULL
dirent and -1 as directory fd.

This is useful when we want to treat the top-level dir the same as any
dir further down.

This is done opt-in since the callback must be ablet to handle a NULL
dirent and a -1 directory fd.
2022-11-09 18:55:58 +01:00
Franck Bui a2f0dbb810 random-seed: make sure to load machine id even if the seed file is missing 2022-11-09 18:41:30 +01:00
Lennart Poettering 718e5d3f60 Merge pull request #25321 from poettering/acpi-timing-fix
acp-fpdt: minor tweaks/fixes
2022-11-09 18:32:34 +01:00
Lennart Poettering 31edf44064 acpi-fpdt: make sure length/type fields are available in acpi_fpdt_header
some extra safety: make sure the two fields we care about are actually
properly present before the buffer is over.
2022-11-09 15:16:12 +01:00
Lennart Poettering 8cee3283f0 acpi-fpdt: don't accidentally drop signedness of pread() return 2022-11-09 15:09:08 +01:00
Lennart Poettering ab10dfe0d5 acpi-fpdt: use our usual ret_xyz naming scheme 2022-11-09 15:08:40 +01:00
Lennart Poettering 06186c4c99 dissect: add new --with command 2022-11-09 14:57:23 +01:00
Lennart Poettering fab2294646 dissect: officially support initrd DDIs (to implement 2nd stage initrds)
Let's complete support for DDI discovery, and also support 2nd stage
initrds.
2022-11-09 14:43:55 +01:00
Lennart Poettering 2e1f76f6ea dissect: open pager in --list mode, output might be long 2022-11-09 11:52:50 +01:00
Lennart Poettering a245225e2d dissect: simplify flags for recurse_dir()
We are not interested in the struct dirent data, hence there's no point
in passing RECURSE_DIR_ENSURE_TYPE. Let's drop it, and thus avoid some
extrac work on file systems where readdir() does not report .d_type.

Also drop RECURSE_DIR_SAME_MOUNT, because DDIs after all may contain
multiple partitions, and we mount them all together. The --list command
really should report the full set of files in an image.
2022-11-09 11:44:17 +01:00