lib/deploy: Ignore errors from FITHAW
authorColin Walters <walters@verbum.org>
Wed, 16 Aug 2017 16:44:05 +0000 (12:44 -0400)
committerAtomic Bot <atomic-devel@projectatomic.io>
Wed, 16 Aug 2017 18:01:04 +0000 (18:01 +0000)
In the production case since we used `daemon()` our stderr is `/dev/null`¹
there's not much use in logging errors from `FITHAW` or `exit(1)`, and doing so
breaks the test suite which checks the return from `waitpid()`. There's nothing
we can really do if `FITHAW` fails, and in most of those cases `EINVAL`,
`EOPNOTSUPP`, we *shouldn't* do anything anyways.

¹ Though perhaps we should set up the systemd journal, but let's not
  go there right now.

Closes: #1084
Approved by: jlebon

src/libostree/ostree-sysroot-deploy.c

index cb84a87f16bf223de727e44f8171e7dd0738c024..60fbc1d3f1ecb059ff0374937d68184b8788d83e 100644 (file)
@@ -1056,13 +1056,14 @@ fsfreeze_thaw_cycle (OstreeSysroot *self,
       /* Do a thaw if we hit an error, or if the poll timed out */
       if (r <= 0)
         {
-          if (TEMP_FAILURE_RETRY (ioctl (rootfs_dfd, FITHAW, 0)) != 0)
-            {
-              if (errno == EPERM)
-                ; /* Ignore this for the test suite */
-              else
-                err (1, "FITHAW");
-            }
+          /* Ignore errors:
+           * EINVAL: Not frozen
+           * EPERM: For running the test suite as non-root
+           * EOPNOTSUPP: If the filesystem doesn't support it
+           */
+          int saved_errno = errno;
+          (void) TEMP_FAILURE_RETRY (ioctl (rootfs_dfd, FITHAW, 0));
+          errno = saved_errno;
           /* But if we got an error from poll, let's log it */
           if (r < 0)
             err (1, "poll");