mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-11 12:46:49 +00:00
fix(gstfsd): find the guest OS by inspection, answer once, and stop a change at its deadline
gstfsd mounted every partition it listed: a root on LVM was never found, a disk with two OS roots got the change twice and two concatenated replies, and no root, an error or a request longer than 1024 bytes ended the connection without a reply. It now lets libguestfs inspect the guest, mounts its one OS the way the guest does (a broken filesystem off the changed path is left out), and sends exactly one reply, keeping the first error. The root entry is found on any line of /etc/shadow and must be unique; a key needs no shadow file. A request is at most 64 KiB. Each change runs in a worker process with a directly started appliance; both are killed when the request is not done 100 s after gstfsd accepted it (GSTFSD_DEADLINE may only lower that), before the panel's 120 s timeout releases the VM, or when the panel's connection ends, and the reply waits until they are gone, so nothing touches the disk once the panel has given up. A worker that dies says why. The panel connects over IPv4 or IPv6, sends the whole request and reads the reply until gstfsd closes.
This commit is contained in:
parent
bb6ad06697
commit
5ee13f305d
5 changed files with 610 additions and 92 deletions
|
|
@ -523,6 +523,7 @@ A rollback leaves the clone on a detached HEAD at the restored commit; the updat
|
|||
- "VM Clone Auto Migrate" is removed; a clone stays on its source host.
|
||||
- A template VM is changed only by superusers and staff owners with change permission; other owners can still view, open the console and clone it.
|
||||
- The log rotates (10 MB × 5) in `data/webvirtcloud.log`.
|
||||
- gstfsd finds the guest's operating system the way libguestfs inspects it, so a root on LVM works, and it always answers (an error when it finds no or several operating systems). Update `/usr/local/bin/gstfsd` on every compute (see [Adding a Compute Node](#adding-a-compute-node), step 3).
|
||||
- Docker no longer publishes port 6080; the console goes through nginx on the panel's port (`WS_PUBLIC_PORT`, default 80).
|
||||
|
||||
## Usage
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue