Yu Watanabe [Tue, 17 Dec 2019 14:10:08 +0000 (23:10 +0900)]
Merge pull request #14208 from poettering/json-homed-prepare
json bits from homed PR
Jan Alexander Steffens (heftig) [Sat, 14 Dec 2019 22:13:17 +0000 (23:13 +0100)]
hwdb: Add Bluetooth-attached Logitech MX Master
Except for the product IDs, the original MX Master appears identical to
the MX Master 2S.
Zbigniew Jędrzejewski-Szmek [Tue, 17 Dec 2019 11:13:47 +0000 (12:13 +0100)]
Merge pull request #14360 from yuwata/udev-alternative-names-policy
udev: introduce AlternativeNamesPolicy= setting
Bart Willems [Mon, 16 Dec 2019 15:45:59 +0000 (16:45 +0100)]
systemctl: show what verbs support --dry-run in the help page
Signed-off-by: Bart Willems <bwillems@protonmail.com>
Lennart Poettering [Tue, 17 Dec 2019 09:34:43 +0000 (10:34 +0100)]
Merge pull request #14241 from keszybz/resume-timeout
Bump resume timeout to infinity
Yu Watanabe [Mon, 16 Dec 2019 15:30:38 +0000 (00:30 +0900)]
network: set AlternativeNamesPolicy= in 99-default.link
Yu Watanabe [Mon, 16 Dec 2019 14:44:42 +0000 (23:44 +0900)]
udev: introduce AlternativeNamesPolicy= setting
Yu Watanabe [Tue, 17 Dec 2019 06:32:22 +0000 (15:32 +0900)]
udev: do not fail if kernel does not support alternative names
Yu Watanabe [Tue, 17 Dec 2019 06:04:14 +0000 (15:04 +0900)]
Merge pull request #14339 from keszybz/invalid-enablement-logs
Small enhancements to logs for enabling of invalid units
Yu Watanabe [Mon, 16 Dec 2019 10:47:48 +0000 (19:47 +0900)]
random-util: call initialize_srand() after fork()
Anita Zhang [Tue, 17 Dec 2019 02:08:04 +0000 (18:08 -0800)]
Merge pull request #14351 from yuwata/util-constify-strv-xxx
util: constify arguments of strv_xxx()
Yu Watanabe [Tue, 17 Dec 2019 02:01:35 +0000 (11:01 +0900)]
udev: extend the length of ID_NET_NAME_XXX= to ALTIFNAMSIZ
Lennart Poettering [Mon, 16 Dec 2019 11:07:06 +0000 (12:07 +0100)]
efivars: properly NUL terminate EFI variables when reading
A follow-up for
35b9eb0a72b6254568a294f0ebd011da20958a64.
Thomas Haller [Sun, 15 Dec 2019 14:50:43 +0000 (15:50 +0100)]
basic/tmpfile: avoid maybe-uninitialized warning in mkostemp_safe()
The variable is always initialized, but the compiler might not notice
that. With gcc-9.2.1-1.fc31:
$ CFLAGS='-Werror=maybe-uninitialized -Og' meson build
$ ninja -C build
[...]
../src/basic/tmpfile-util.c: In function ‘mkostemp_safe’:
../src/basic/tmpfile-util.c:76:12: error: ‘fd’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
76 | if (fd < 0)
| ^
Zbigniew Jędrzejewski-Szmek [Fri, 13 Dec 2019 18:30:00 +0000 (19:30 +0100)]
Zbigniew Jędrzejewski-Szmek [Fri, 13 Dec 2019 18:25:50 +0000 (19:25 +0100)]
shared/install: log syntax error for invalid DefaultInstance=
Ideally, we would want to report this over back over dbus. But that is pretty hard,
because the unitfile parsing logic doesn't provide any feedback.
systemd-analyze verify also doesn't notice the issue, because it doesn't look
at the [Install] section at all. Let's print a message in the logs at least.
Benjamin Dahlhoff [Sat, 14 Dec 2019 16:48:06 +0000 (17:48 +0100)]
Added Trekstor Primetab S11B
Yu Watanabe [Mon, 16 Dec 2019 09:06:33 +0000 (18:06 +0900)]
Merge pull request #14354 from poettering/link-fix
two trivial doc fixes
Lennart Poettering [Mon, 16 Dec 2019 08:50:02 +0000 (09:50 +0100)]
docs: CSS files should not be executable
Lennart Poettering [Mon, 16 Dec 2019 08:49:51 +0000 (09:49 +0100)]
github: use systemd.io links in issue template
Lennart Poettering [Mon, 16 Dec 2019 08:27:46 +0000 (09:27 +0100)]
Merge pull request #14261 from keszybz/loop-utils-and-efivars
Fixes for networkd, shared/loop-util, basic/efivars
Lennart Poettering [Mon, 16 Dec 2019 08:24:02 +0000 (09:24 +0100)]
Merge pull request #14196 from keszybz/gpt-auto-generator-debugging
gpt-auto-generator debugging
Lennart Poettering [Mon, 16 Dec 2019 08:15:23 +0000 (09:15 +0100)]
Merge pull request #14350 from yuwata/network-udev-altnames-support
network, udev: add altname support
Yu Watanabe [Mon, 16 Dec 2019 06:51:04 +0000 (15:51 +0900)]
util: constify arguments of strv_xxx()
Yu Watanabe [Sun, 15 Dec 2019 19:37:00 +0000 (04:37 +0900)]
test-network: pass environment variables to networkctl
Yu Watanabe [Sun, 15 Dec 2019 19:17:57 +0000 (04:17 +0900)]
test-network: add a test case for netdev altname
Yu Watanabe [Sun, 15 Dec 2019 19:27:27 +0000 (04:27 +0900)]
networkctl: show alternative names
Yu Watanabe [Sun, 15 Dec 2019 13:46:19 +0000 (22:46 +0900)]
network: make Name= in [Match] support alternative names of interfaces
Yu Watanabe [Sun, 15 Dec 2019 14:21:18 +0000 (23:21 +0900)]
udev: support AlternativeName= setting in .link file
Yu Watanabe [Sun, 15 Dec 2019 14:01:54 +0000 (23:01 +0900)]
util: introduce ifname_valid_full()
Yu Watanabe [Sun, 15 Dec 2019 12:48:12 +0000 (21:48 +0900)]
test: add a test for sd_netlink_message_{append,read}_strv()
Yu Watanabe [Sun, 15 Dec 2019 12:47:21 +0000 (21:47 +0900)]
sd-netlink: introduce sd_netlink_message_append_strv()
Yu Watanabe [Sun, 15 Dec 2019 12:32:25 +0000 (21:32 +0900)]
sd-netlink: introduce sd_netlink_message_read_strv()
The combination of sd_netlink_message_enter_container() and
sd_netlink_message_read_string() only reads the last element if the attribute is
duplicated, such a situation easily happens for IFLA_ALT_IFNAME.
The function introduced here reads all matched attributes.
Zbigniew Jędrzejewski-Szmek [Sun, 15 Dec 2019 19:58:59 +0000 (20:58 +0100)]
shared/loop-util: spin on open() returning ENOENT too
https://github.com/systemd/systemd/pull/14261#discussion_r355001559
Zbigniew Jędrzejewski-Szmek [Fri, 6 Dec 2019 11:13:34 +0000 (12:13 +0100)]
basic/efivars: do not return EIO if an efivar read is shorten than fstat size
On my machine stat returns size 22, but only 20 bytes are read:
openat(AT_FDCWD, "/sys/firmware/efi/efivars/LoaderTimeInitUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f", O_RDONLY|O_NOCTTY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
read(3, "\6\0\0\0", 4) = 4
read(3, "7\0001\0001\0003\0005\0002\0007\0\0\0", 18) = 16
Failed to read LoaderTimeInitUSec: Input/output error
Let's just accept that the kernel is returning inconsistent results.
It seems to happen two only two variables on my machine:
/sys/firmware/efi/efivars/LoaderTimeInitUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f
/sys/firmware/efi/efivars/LoaderTimeMenuUSec-
4a67b082-0a4c-41cf-b6c7-
440b29bb8c4f
so it might be related to the way we write them.
Zbigniew Jędrzejewski-Szmek [Fri, 6 Dec 2019 10:55:20 +0000 (11:55 +0100)]
shared/efi-loader: add some debugging statements
Should make it easier to figure out why some operations fail...
Zbigniew Jędrzejewski-Szmek [Fri, 6 Dec 2019 10:35:57 +0000 (11:35 +0100)]
shared/loop-util: spin on LOOP_CTL_REMOVE
If we call LOOP_CLR_FD and LOOP_CTL_REMOVE too rapidly, the kernel cannot deal
with that (5.3.13-300.fc31.x86_64 running on dual core
Intel(R) Core(TM) i7-6500U CPU @ 2.50GHz).
$ sudo strace -eioctl build/test-dissect-image /tmp/foobar3.img
ioctl(3, TCGETS, 0x7ffcee47de20) = -1 ENOTTY (Inappropriate ioctl for device)
ioctl(4, LOOP_CTL_GET_FREE) = 9
ioctl(5, LOOP_SET_FD, 3) = 0
ioctl(5, LOOP_SET_STATUS64, {lo_offset=0, lo_number=0, lo_flags=LO_FLAGS_READ_ONLY|LO_FLAGS_AUTOCLEAR|LO_FLAGS_PARTSCAN, lo_file_name="", ...}) = 0
ioctl(5, BLKGETSIZE64, [
299999744]) = 0
ioctl(5, CDROM_GET_CAPABILITY, 0) = -1 EINVAL (Invalid argument)
ioctl(5, BLKSSZGET, [512]) = 0
Waiting for device (parent + 0 partitions) to appear...
Found root partition, writable of type btrfs at #-1 (/dev/block/7:9)
ioctl(5, LOOP_CLR_FD) = 0
ioctl(3, LOOP_CTL_REMOVE, 9) = -1 EBUSY (Device or resource busy)
Failed to remove loop device: Device or resource busy
This seems to be clear race condition, and attaching strace is generally enough
to "win" the race. But even with strace attached, we will fail occasionally.
Let's wait a bit and retry. With the wait, on my machine, the second attempt
always succeeds:
...
Found root partition, writable of type btrfs at #-1 (/dev/block/7:9)
ioctl(5, LOOP_CLR_FD) = 0
ioctl(3, LOOP_CTL_REMOVE, 9) = -1 EBUSY (Device or resource busy)
ioctl(3, LOOP_CTL_REMOVE, 9) = 9
+++ exited with 0 +++
Without the wait, all 64 attempts will occasionally fail.
Zbigniew Jędrzejewski-Szmek [Fri, 6 Dec 2019 10:10:10 +0000 (11:10 +0100)]
shared/loop-util: fix error handling in loop_device_make_full()
The function no longer returns the fd. This complicated semantics, because it
wasn't clear what holds the ownership: the return value or the output
parameter. There were no users of the fd in the return value, so let's
simplify things conceptually and only return the fd once.
Reduce the scope of variables.
LOOP_CLR_FD was called on the wrong fd. Let's use a cleanup function to make
this automatic and reduce chances of a mixup in the future.
CID
1408498.
Yu Watanabe [Sun, 15 Dec 2019 11:57:51 +0000 (20:57 +0900)]
sd-netlink: support IFLA_PROP_LIST and IFLA_ALT_IFNAME attributes
Yu Watanabe [Sun, 15 Dec 2019 11:25:25 +0000 (20:25 +0900)]
linux: update headers
Jin Park [Sun, 15 Dec 2019 03:10:51 +0000 (12:10 +0900)]
Add Acer Spin 1 SP111-33 to sensor hwdb
Hans de Goede [Fri, 13 Dec 2019 12:01:02 +0000 (13:01 +0100)]
hwdb: Add accel orientation quirk for Thundersoft TST168 tablet
Add a quirk to fix the accelerometer orientation on the Thundersoft
TST168 tablet.
Zbigniew Jędrzejewski-Szmek [Fri, 13 Dec 2019 17:36:29 +0000 (18:36 +0100)]
shared/install: provide a nicer error message for invalid WantedBy=/Required= values
$ build/systemctl --user cat badinstall
# /home/zbyszek/.config/systemd/user/badinstall.service
[Service]
ExecStart=true
[Install]
WantedBy=asdf
$ build/systemctl --user enable badinstall
Failed to enable unit: "asdf" is not a valid unit name.
Fixes #4209.
Zbigniew Jędrzejewski-Szmek [Fri, 13 Dec 2019 17:42:54 +0000 (18:42 +0100)]
shared/install: remove duplicated check
install_info_add() does the exact same check.
Lennart Poettering [Thu, 12 Dec 2019 16:05:21 +0000 (17:05 +0100)]
nspawn: fix overlay with automatic temporary tree
This makes --overlay=+/foobar::/foobar work again, i.e. where the middle
parameter is left out. According to the documentation this is supposed
to generate a temporary writable work place in the midle. But it
apparently never did. Weird.
Tobias Bernard [Fri, 13 Dec 2019 11:01:59 +0000 (12:01 +0100)]
Merge pull request #14333 from poettering/markdown-header-fixes
docs: make sure there's only one # markdown header in each file
Lennart Poettering [Fri, 13 Dec 2019 10:56:08 +0000 (11:56 +0100)]
docs: make sure there's only one # markdown header in each file
@bertob wants us to be strict here, and only have one "#" header per
markdown file, and use "##" (or "###", …) for all others. Interestingly,
we mostly got this right already, but this fixes a few cases where this
wasn't correct.
Lennart Poettering [Thu, 12 Dec 2019 13:18:26 +0000 (14:18 +0100)]
blockdev-util: rework get_block_device()
Let's open the specified path once, and use the same fd for all lookups.
Also, don't check for btrfs twice.
The behaviour remains unmodified.
Yu Watanabe [Fri, 13 Dec 2019 09:33:04 +0000 (18:33 +0900)]
Merge pull request #13915 from ddstreet/ipv6_mtu
Set ipv6 mtu after link-up or device mtu change
Yu Watanabe [Fri, 13 Dec 2019 02:09:36 +0000 (11:09 +0900)]
Merge pull request #14320 from yuwata/network-tc-fq_codel-more
network: tc: introduce more FQ-CoDel settings
Lennart Poettering [Thu, 12 Dec 2019 23:05:38 +0000 (00:05 +0100)]
Merge pull request #14269 from DaanDeMeyer/enable-mounts-on-root
nspawn: Enable specifying root as the mount target directory.
Daan De Meyer [Thu, 12 Dec 2019 19:18:37 +0000 (20:18 +0100)]
nspawn-mount: Use FLAGS_SET to check flags.
Daan De Meyer [Sat, 7 Dec 2019 11:43:39 +0000 (12:43 +0100)]
nspawn: Only bind-mount directory when necessary.
Daan De Meyer [Sat, 7 Dec 2019 10:59:59 +0000 (11:59 +0100)]
nspawn-mount: Remove unused parameters
Daan De Meyer [Fri, 6 Dec 2019 21:45:14 +0000 (22:45 +0100)]
nspawn: Enable specifying root as the mount target directory.
Fixes #3847.
Christian Ehrhardt [Thu, 12 Dec 2019 12:37:27 +0000 (13:37 +0100)]
test: increase qemu timeout for TEST-08 and TEST-09
These tests two have shown to be flaky in Ubuntu test infrastructure,
but got more reliable with increased timeouts of 300 seconds each.
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Shengjing Zhu [Sun, 8 Dec 2019 19:00:01 +0000 (03:00 +0800)]
nspawn: allow combination of private-network and network-namespace-path
Fixes: #14289
Lennart Poettering [Thu, 12 Dec 2019 16:52:09 +0000 (17:52 +0100)]
Merge pull request #14321 from yuwata/network-generator-14319
network-generator: allow empty hostname
Yu Watanabe [Thu, 12 Dec 2019 09:22:09 +0000 (18:22 +0900)]
test-network: add a test case for the new settings of FQ-CoDel
Yu Watanabe [Thu, 12 Dec 2019 08:25:29 +0000 (17:25 +0900)]
network: tc: support more attributes for FQ-CoDel
Yu Watanabe [Thu, 12 Dec 2019 12:16:38 +0000 (21:16 +0900)]
Merge pull request #14305 from ssahani/tc-fq
network tc: inroduce FQ - Fair Queue traffic policing
Yu Watanabe [Thu, 12 Dec 2019 10:02:25 +0000 (19:02 +0900)]
test: add a test case for network-generator
Yu Watanabe [Thu, 12 Dec 2019 10:01:21 +0000 (19:01 +0900)]
network-generator: allow empty hostname
Fixes #14319.
Yu Watanabe [Thu, 12 Dec 2019 07:29:23 +0000 (16:29 +0900)]
test-network: add a test case for FQ
Susant Sahani [Wed, 11 Dec 2019 09:52:51 +0000 (10:52 +0100)]
network tc: inroduce FQ - Fair Queue traffic policing
Please see http://man7.org/linux/man-pages/man8/tc-fq.8.html
Yu Watanabe [Thu, 12 Dec 2019 08:04:06 +0000 (17:04 +0900)]
Merge pull request #14308 from poettering/man-naming-scheme-typo
superficial fixes to network naming docs
Yu Watanabe [Thu, 12 Dec 2019 07:21:49 +0000 (16:21 +0900)]
sd-netlink: add attributes for FQ
Yu Watanabe [Thu, 12 Dec 2019 06:55:11 +0000 (15:55 +0900)]
Merge pull request #14309 from yuwata/network-tc-vtable
network: tc: introduce QDiscVTable
Anita Zhang [Wed, 11 Dec 2019 21:49:01 +0000 (13:49 -0800)]
Merge pull request #14307 from poettering/unicode-fuckup
locale-util: drop weird invisible unicode codepoints accidentally ins…
Anita Zhang [Wed, 11 Dec 2019 21:35:22 +0000 (13:35 -0800)]
Merge pull request #14317 from poettering/hwdb-indent-fix
hwdb: trivial indentation fix
Lennart Poettering [Tue, 10 Dec 2019 20:30:39 +0000 (21:30 +0100)]
locale-util: drop weird invisible unicode codepoints accidentally inserted in comment
Lennart Poettering [Wed, 11 Dec 2019 20:35:33 +0000 (21:35 +0100)]
hwdb: trivial indentation fix
Tobias Bernard [Wed, 11 Dec 2019 16:19:14 +0000 (17:19 +0100)]
minor: avoid double title
The logo and H1 were clashing a bit
Tobias Bernard [Wed, 11 Dec 2019 16:01:46 +0000 (17:01 +0100)]
docs: make it pretty
Add custom Jekyll theme, logo, webfont and .gitignore
FIXME: the markdown files have some H1 headers which need to be replaced
with H2
Yu Watanabe [Wed, 11 Dec 2019 11:10:29 +0000 (20:10 +0900)]
network: tc: introduce QDiscVTable for future extendability
Yu Watanabe [Wed, 11 Dec 2019 11:09:11 +0000 (20:09 +0900)]
network: tc: drop unused element
Yu Watanabe [Wed, 11 Dec 2019 10:25:09 +0000 (19:25 +0900)]
network: tc: drop unused functions
Lennart Poettering [Wed, 11 Dec 2019 11:04:55 +0000 (12:04 +0100)]
docs: direct to systemd.io version of naming scheme docs
The document was imported back in
f9e6d49904e06d2cba3871f6873d0519fe086d0f. Let's make sure we actually
point to that version rather than the old one on freedesktop.
Lennart Poettering [Wed, 11 Dec 2019 11:04:32 +0000 (12:04 +0100)]
docs: fix markdown links
Lennart Poettering [Wed, 11 Dec 2019 11:03:58 +0000 (12:03 +0100)]
docs: use `` quotes for marking identifiers of some form
Lennart Poettering [Wed, 11 Dec 2019 10:52:00 +0000 (11:52 +0100)]
man: fix typo in net-naming-scheme man page
Yu Watanabe [Wed, 11 Dec 2019 11:07:20 +0000 (20:07 +0900)]
Merge pull request #14303 from yuwata/tc-use-typesafe-functions
network: tc: use typesafe functions
Lennart Poettering [Wed, 11 Dec 2019 10:43:31 +0000 (11:43 +0100)]
Merge pull request #14306 from poettering/markdown-category
beef up systemd.io pages with simple categorization
Lennart Poettering [Wed, 11 Dec 2019 09:49:59 +0000 (10:49 +0100)]
docs: beef up entrypoint documentation page
Let's use the rough categorization of the markdown pages to add basic
sections, via Jeykll templating. Also, add in a couple of additional
links via a JSON array that lists them.
So much web development, so much wow!
Lennart Poettering [Wed, 11 Dec 2019 09:49:28 +0000 (10:49 +0100)]
docs: place all our markdown docs in rough categories
cheese1 [Wed, 11 Dec 2019 09:33:13 +0000 (10:33 +0100)]
man: fix typos (#14304)
Yu Watanabe [Wed, 11 Dec 2019 07:31:52 +0000 (16:31 +0900)]
network: tc: use typesafe functions to append netlink attributes
Yu Watanabe [Wed, 11 Dec 2019 07:30:39 +0000 (16:30 +0900)]
sd-netlink: make TCA_OPTIONS take NETLINK_TYPE_UNION
Yu Watanabe [Wed, 11 Dec 2019 04:27:14 +0000 (13:27 +0900)]
Merge pull request #14278 from ssahani/tc
network tc: qdisc parent add support to set ingress
Yu Watanabe [Wed, 11 Dec 2019 04:26:51 +0000 (13:26 +0900)]
Merge pull request #14297 from poettering/id128-size
cleaning up id128 formatting buffer sizing
AJ Bagwell [Tue, 10 Dec 2019 16:27:31 +0000 (16:27 +0000)]
ipv4ll: do not reset conflict counter on restart
Don't reset the conflict counter when trying a new pseudo random
address, so that after trying 10 addresses the londer timeout is used in
accordance with the RFC
Fixes #14299.
Yu Watanabe [Tue, 10 Dec 2019 14:46:38 +0000 (23:46 +0900)]
test-network: add a test case for fq-codel
Susant Sahani [Sat, 7 Dec 2019 19:48:18 +0000 (20:48 +0100)]
network tc: Add support to conkfigure CoDel - Controlled-Delay Active Queue Management algorithm
```
$ tc qdisc show dev dummy99
qdisc fq_codel 8005: dev dummy99 root refcnt 2 limit 1000p flows 1024 quantum 1514 target 5.0ms interval 100.0ms memory_limit 32Mb ecn
$ network cat dumm99.network
[Match]
Name=dummy99
[TrafficControlQueueingDiscipline]
Parent=root
FairQueuingControlledDelayPacketLimit=1000
```
Susant Sahani [Sat, 7 Dec 2019 16:46:37 +0000 (17:46 +0100)]
network tc: qdisc parent add support to set ingress
```
$ network tc qdisc
qdisc noqueue 0: dev dummy99 root refcnt 2
qdisc ingress ffff: dev dummy99 parent ffff:fff1 ----------------
$ network cat dumm99.network
[Match]
Name=dummy99
[TrafficControlQueueingDiscipline]
Parent=ingress
```
Yu Watanabe [Tue, 10 Dec 2019 15:02:43 +0000 (00:02 +0900)]
Merge pull request #14280 from yuwata/network-tbf-more
network: tc: add more options for TBF
Yu Watanabe [Tue, 10 Dec 2019 11:17:33 +0000 (20:17 +0900)]
Merge pull request #14295 from poettering/greedy-alloc-round-up
add new GREEDY_ALLOC_ROUND_UP() to make strv_extend() a bit less slow
Lennart Poettering [Tue, 10 Dec 2019 10:52:54 +0000 (11:52 +0100)]
tree-wide: use SD_ID128_STRING_MAX where appropriate
Lennart Poettering [Tue, 10 Dec 2019 10:33:28 +0000 (11:33 +0100)]
id128: introduce ID128_UUID_STRING_MAX for sizing UUID buffers
Anita Zhang [Mon, 9 Dec 2019 21:33:36 +0000 (13:33 -0800)]
Merge pull request #14284 from yuwata/network-fix-segfault-14283
network: fix segfault in parsing SendOption=
Lennart Poettering [Mon, 9 Dec 2019 17:30:00 +0000 (18:30 +0100)]
strv: when growing strv arrays piecemeal actually allocate memory in exponential steps
Let's improve memory allocation for call such as strv_extend() that just
one item to an strv: these are often called in a loop, where they used
to be very ineffecient, since we'd allocate byte-exact space. With this
change let's improve on that, by allocating exponentially by rounding up
to the next exponent of 2. This way we get GREEDY_REALLOC()-like
behaviour without passing around state.
In fact this should be good enough so that we could replace existing
loops around GREEDY_REALLOC() for strv build-up with plain strv_extend()
and get similar behaviour.