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
/* 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");