<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - systemd 219: tmpfiles.d: new "v" option fails on btrfs due to existing dir (not subvol)"
href="https://bugs.freedesktop.org/show_bug.cgi?id=90281">90281</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>systemd 219: tmpfiles.d: new "v" option fails on btrfs due to existing dir (not subvol)
</td>
</tr>
<tr>
<th>Product</th>
<td>systemd
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>x86-64 (AMD64)
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux (All)
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>general
</td>
</tr>
<tr>
<th>Assignee</th>
<td>systemd-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>1i5t5.duncan@cox.net
</td>
</tr>
<tr>
<th>QA Contact</th>
<td>systemd-bugs@lists.freedesktop.org
</td>
</tr></table>
<p>
<div>
<pre>The 219 tmpfs.d documentation says "v" creates a subvolume if the path doesn't
exist yet and the filesystem (btrfs) supports it, otherwise creating a normal
directory in the same way as "d".
Unfortunately, it doesn't work that way, at least in 219. An existing
directory (not subvolume) on a read-only btrfs succeeded with 218's "d", but
219's replacement "d" fails.
In particular, 219 tmpfiles.d's new "v" option fails where 218's "d" option
succeeds, triggering systemd-tmpfiles-setup failure, in the following case:
* tmpfiles.d/tmp.conf as shipped by 219 includes these lines:
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d
* tmpfiles.d/var.conf as shipped by 219 includes this line:
v /var/lib/machines 0700 - - -
* / is btrfs and contains all three of the above as _directories_ (that is, not
as subvolumes).
* / is mounted read-only by default and only mounted writable when I want to
update it manually.
All three of the above fail with the following (as logged by syslog-ng after
relay from journald):
May 1 19:35:59 h2 systemd-tmpfiles[434]: Failed to create directory or
subvolume "/var/tmp": Read-only file system
May 1 19:35:59 h2 systemd-tmpfiles[434]: Failed to create directory or
subvolume "/tmp": Read-only file system
May 1 19:35:59 h2 systemd-tmpfiles[434]: Failed to create directory or
subvolume "/var/lib/machines": Read-only file system
But... the _directories_ exist, and the "v" documentation says that should be
enough, just as it is for "d".
218's corresponding tmpfiles.d settings used "d" in place of "v", and it worked
just fine (with /var/lib/container instead of machine, of course).
By way of explanation, I use btrfs, but prefer using entirely separate
partitions to subvolumes and don't actually have any subvolumes (other than the
ID 5 root subvolume) setup on any of my btrfs. I want to keep it that way.
As I'm also affected by <a class="bz_bug_link
bz_status_NEW "
title="NEW - networkd: fails to bring interface up if ipv6 is disabled"
href="show_bug.cgi?id=90103">bug #90103</a> (networkd fails if IPv4 only), I've kept 219
masked (gentoo) and remain on 218, but it would be nice to have this fixed too
by the time I can upgrade, so I don't have to deviate from the shipped tmp.conf
and var.conf settings, changing "v" to "d".
Duncan</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>