Skip to content

Change preload list items from qube's names to UUIDs #10001

@ben-grande

Description

@ben-grande

The problem you're addressing (if any)

There is a cleanup function that runs when the disposable template is loaded with the event domain-load, it removes qubes that are invalid. It uses qubes names from the preload-dispvm list for some of those cases when deciding to remove a qube

The problem can occur in the following scenario if every condition is met:

  • preload with name disp0
  • system shuts down (which cleans disposables and stops qubesd)
  • system start (start qubesd)
  • event admin.vm.CreateDisposable+preload-autostart doesn't run
  • fresh unnamed normal disposable is created with the same name disp0

Dispids have a 10000 range and also has some runtime property _recent_dispids to avoid collision, that is not enough and does not consider the preload list.

With the rc1 available, some users already want to disable the qubes-preload-dispvm.service:

The amount of changes to convert from UUID to names might be very big, that I prefer finding a solution that doesn't involve doing this transition.

The solution you'd like

The preload-dispvm feature has a list of qubes names, change it to use UUID instead to avoid name collision.

The value to a user and who that user might be

Users that create a lot of disposables and sometimes have system crashes or disable the autostart service will not have problems with name collision.

Completion criteria checklist

  • Migration works with a qubesd restart.
  • Adapt all tests to use UUID (this may require more logging to help debugging as UUID is not printed on vm.log and desktop notifications uses qube names)

Metadata

Metadata

Assignees

No one assigned

    Labels

    C: coreThis issue pertains to a Qubes core component.P: defaultPriority: default. Default priority for new issues, to be replaced given sufficient information.R: not applicableE.g., help/support requests, questions, discussions, "not a bug," not enough info, not actionable.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions