]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
repart: Ignore copy failures for unsupported file types 25579/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 30 Nov 2022 16:04:14 +0000 (17:04 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 1 Dec 2022 11:14:35 +0000 (12:14 +0100)
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.

man/repart.d.xml
src/partition/repart.c

index 7e19ab7e0ccd0d5561312e04969b71a82e0103d4..fe3de8d58a4678bd3be9a5816c735c45b840c497 100644 (file)
         <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
index 54f2f7f855363bd4ec220b0af4b20d7715965890..ce65ead62a02a6f4e25a5fa899f05d1c933e58cb 100644 (file)
@@ -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",