diff options
author | Daan De Meyer <daan.j.demeyer@gmail.com> | 2022-11-30 17:04:14 +0100 |
---|---|---|
committer | Daan De Meyer <daan.j.demeyer@gmail.com> | 2022-12-01 12:14:35 +0100 |
commit | 336ae0e71d0c2df02fbab7d874b5c34621ef5c4e (patch) | |
tree | 8a9fcb327895fdaadbc6a83522e7c25f0263c38e | |
parent | 494f7fc096a43b8ec267483110af30dc0fc2eed6 (diff) | |
download | systemd-336ae0e71d0c2df02fbab7d874b5c34621ef5c4e.tar.gz |
repart: Ignore copy failures for unsupported file types
e.g. vfat doesn't support symlinks, sockets, fifos, etc so let's ignore
any copy failures related to unsupported file types when populating
filesystems.
-rw-r--r-- | man/repart.d.xml | 4 | ||||
-rw-r--r-- | src/partition/repart.c | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/man/repart.d.xml b/man/repart.d.xml index 7e19ab7e0c..fe3de8d58a 100644 --- a/man/repart.d.xml +++ b/man/repart.d.xml @@ -420,6 +420,10 @@ <para>The copy operation is executed before the file system is registered in the partition table, thus ensuring that a file system populated this way only ever exists fully initialized.</para> + <para>Note that <varname>CopyFiles=</varname> will skip copying files that aren't supported by the + target filesystem (e.g symlinks, fifos, sockets and devices on vfat). When an unsupported file type + is encountered, repart will skip copying this file and write a log message about it.</para> + <para>This option cannot be combined with <varname>CopyBlocks=</varname>.</para> <para>When <command>systemd-repart</command> is invoked with the <option>--image=</option> or diff --git a/src/partition/repart.c b/src/partition/repart.c index 54f2f7f855..ce65ead62a 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -3731,14 +3731,14 @@ static int do_copy_files( sfd, ".", pfd, fn, override_uid, override_gid, - COPY_REFLINK|COPY_HOLES|COPY_MERGE|COPY_REPLACE|COPY_SIGINT|COPY_HARDLINKS|COPY_ALL_XATTRS, + COPY_REFLINK|COPY_HOLES|COPY_MERGE|COPY_REPLACE|COPY_SIGINT|COPY_HARDLINKS|COPY_ALL_XATTRS|COPY_GRACEFUL_WARN, denylist); } else r = copy_tree_at( sfd, ".", tfd, ".", override_uid, override_gid, - COPY_REFLINK|COPY_HOLES|COPY_MERGE|COPY_REPLACE|COPY_SIGINT|COPY_HARDLINKS|COPY_ALL_XATTRS, + COPY_REFLINK|COPY_HOLES|COPY_MERGE|COPY_REPLACE|COPY_SIGINT|COPY_HARDLINKS|COPY_ALL_XATTRS|COPY_GRACEFUL_WARN, denylist); if (r < 0) return log_error_errno(r, "Failed to copy '%s%s' to '%s%s': %m", |