It turned out to be BTRFS mis-managing free space, deciding there was none left, and going into read-only mode.