nixpkgs/nixos
Mark Ruvald Pedersen 66fb2f539a nixos/proxmox-image: Disable O_DIRECT to fix assert
Context summary:
'vma create' can't otherwise write to tmpfs such as /dev/shm.
This is important when used from non-nixos machines which may
have /build as tmpfs.

VMA is Proxmox's virtual machine image format that wraps QEMU images,
augmenting these with proxmox-specific configuration file.
proxmox-image.nix uses the VMA tool to create vma image files.
The VMA tool exists as a patchset ontop of QEMU.

VMA writes its output with open() and O_DIRECT flag.
O_DIRECT does not work on Linux tmpfs [1]. Thus:
$ vma create ~/output.vma ...  # works, assuming home isn't tmpfs.
$ vma create /dev/shm/output.vma ...  # fails since /dev/shm is tmpfs
Failure results in assert(*errp == NULL).

O_DIRECT is a cache performance hint.
But it currently blocks our usage of nixos-generate -f proxmox from
Non-NixOS hosts and Docker.

The patch here simply removes O_DIRECT:
vma-writer.c later performs memalign due to O_DIRECT, but this is
safe to do with or without O_DIRECT.
Ideally, this should be fixed in upstream Proxmox: Perhaps by falling
back to open without O_DIRECT.

Another attempt to fix this SIGABRT is [2], which writes the vma file
directory to $out/ folder -- however that may still be tmpfs mounted
which it is in our case.

[1] https://lore.kernel.org/lkml/45A29EC2.8020502@tmr.com/t/
[2] https://github.com/NixOS/nixpkgs/pull/224282
2023-05-08 12:33:41 +02:00
..
doc/manual Merge pull request #225883 from e1mo/dokuwiki-2023-04-04 2023-04-25 14:02:59 +02:00
lib nixos/make-disk-image: fix contents dir paths 2023-04-16 09:54:45 -07:00
maintainers treewide: fix backwards smart apostrophes 2023-02-06 07:24:42 -05:00
modules nixos/proxmox-image: Disable O_DIRECT to fix assert 2023-05-08 12:33:41 +02:00
tests Merge pull request #227526 from FedericoSchonborn/more-budgie 2023-04-26 11:11:24 +08:00
COPYING
default.nix
README
release-combined.nix nixos/release-*: finish dropping the conntrack tests 2023-03-04 09:28:09 +01:00
release-small.nix Merge pull request #209870 from amjoseph-nixpkgs/pr/stdenv/external-gcc-bootstrap 2023-04-03 08:19:03 -07:00
release.nix nixos/manual: clean up default.nix a bit 2023-02-12 11:58:20 +01:00

*** NixOS ***

NixOS is a Linux distribution based on the purely functional package
management system Nix.  More information can be found at
https://nixos.org/nixos and in the manual in doc/manual.