chiark / gitweb /
timedatectl: remove unused variables
[elogind.git] / src / import / import-raw.c
index 15e5eb2ca274177adf214b27251de5680fcfc224..7d1ac2afd700749cf6166b70f1d258050ab1ec6b 100644 (file)
@@ -117,7 +117,7 @@ int raw_import_new(
         i->on_finished = on_finished;
         i->userdata = userdata;
 
-        RATELIMIT_INIT(i->progress_rate_limit, 500 * USEC_PER_MSEC, 1);
+        RATELIMIT_INIT(i->progress_rate_limit, 100 * USEC_PER_MSEC, 1);
         i->last_percent = (unsigned) -1;
 
         i->image_root = strdup(image_root ?: "/var/lib/machines");
@@ -245,8 +245,9 @@ static int raw_import_finish(RawImport *i) {
                 (void) rm_rf_dangerous(i->final_path, false, true, false);
         }
 
-        if (renameat2(AT_FDCWD, i->temp_path, AT_FDCWD, i->final_path, RENAME_NOREPLACE) < 0)
-                return log_error_errno(errno, "Failed to move image into place: %m");
+        r = rename_noreplace(AT_FDCWD, i->temp_path, AT_FDCWD, i->final_path);
+        if (r < 0)
+                return log_error_errno(r, "Failed to move image into place: %m");
 
         free(i->temp_path);
         i->temp_path = NULL;
@@ -343,6 +344,9 @@ static int raw_import_process(RawImport *i) {
 
         l = read(i->input_fd, i->buffer + i->buffer_size, sizeof(i->buffer) - i->buffer_size);
         if (l < 0) {
+                if (errno == EAGAIN)
+                        return 0;
+
                 r = log_error_errno(errno, "Failed to read input file: %m");
                 goto finish;
         }
@@ -428,6 +432,10 @@ int raw_import_start(RawImport *i, int fd, const char *local, bool force_local,
         if (i->input_fd >= 0)
                 return -EBUSY;
 
+        r = fd_nonblock(fd, true);
+        if (r < 0)
+                return r;
+
         r = free_and_strdup(&i->local, local);
         if (r < 0)
                 return r;