mirror of
https://github.com/systemd/systemd.git
synced 2025-03-11 20:58:27 +03:00
tree-wide: Don't explicity disable copy-on-write when copying images
Since the copy helpers now copy file attributes as well, let's not explicitly disable copy-on-write anymore when we copy an image. If the source already has copy-on-write disabled, the copy will have it disabled as well. Otherwise, the copy will also have copy-on-write enabled. This makes sure that reflinks always work as reflink is only supported if both source and target are copy-on-write or both source and target are not copy-on-write.
This commit is contained in:
parent
2356104efc
commit
42e9288180
@ -2893,16 +2893,6 @@ static int setup_ephemeral(
|
||||
if (fd < 0)
|
||||
return log_debug_errno(fd, "Failed to copy image %s to %s: %m",
|
||||
*root_image, new_root);
|
||||
|
||||
/* A root image might be subject to lots of random writes so let's try to disable COW on it
|
||||
* which tends to not perform well in combination with lots of random writes.
|
||||
*
|
||||
* Note: btrfs actually isn't impressed by us setting the flag after making the reflink'ed
|
||||
* copy, but we at least want to make the intention clear.
|
||||
*/
|
||||
r = chattr_fd(fd, FS_NOCOW_FL, FS_NOCOW_FL, NULL);
|
||||
if (r < 0)
|
||||
log_debug_errno(r, "Failed to disable copy-on-write for %s, ignoring: %m", new_root);
|
||||
} else {
|
||||
assert(*root_directory);
|
||||
|
||||
|
@ -6072,10 +6072,8 @@ static int run(int argc, char *argv[]) {
|
||||
|
||||
{
|
||||
BLOCK_SIGNALS(SIGINT);
|
||||
r = copy_file_full(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600,
|
||||
FS_NOCOW_FL, FS_NOCOW_FL,
|
||||
COPY_REFLINK|COPY_CRTIME|COPY_SIGINT,
|
||||
NULL, NULL);
|
||||
r = copy_file(arg_image, np, O_EXCL, arg_read_only ? 0400 : 0600,
|
||||
COPY_REFLINK|COPY_CRTIME|COPY_SIGINT);
|
||||
}
|
||||
if (r == -EINTR) {
|
||||
log_error_errno(r, "Interrupted while copying image file to %s, removed again.", np);
|
||||
|
@ -1205,8 +1205,7 @@ int image_clone(Image *i, const char *new_name, bool read_only) {
|
||||
case IMAGE_RAW:
|
||||
new_path = strjoina("/var/lib/machines/", new_name, ".raw");
|
||||
|
||||
r = copy_file_atomic_full(i->path, new_path, read_only ? 0444 : 0644, FS_NOCOW_FL, FS_NOCOW_FL,
|
||||
COPY_REFLINK|COPY_CRTIME, NULL, NULL);
|
||||
r = copy_file_atomic(i->path, new_path, read_only ? 0444 : 0644, COPY_REFLINK|COPY_CRTIME);
|
||||
break;
|
||||
|
||||
case IMAGE_BLOCK:
|
||||
|
Loading…
x
Reference in New Issue
Block a user