On Tue, Mar 25, 2025 at 04:33:03PM +0100, Martin Kletzander wrote: > On Tue, Mar 25, 2025 at 08:41:41AM -0600, Jim Fehlig wrote: > > On 3/25/25 06:49, Martin Kletzander wrote: > > > On Tue, Mar 25, 2025 at 10:15:12AM +0000, Daniel P. Berrangé wrote: > > > > On Tue, Mar 25, 2025 at 10:49:49AM +0100, Martin Kletzander wrote: > > > > > On Wed, Mar 19, 2025 at 05:43:20PM -0600, Jim Fehlig via Devel wrote: > > > > > > On 3/19/25 05:54, Daniel P. Berrangé wrote: > > > > > > > On Wed, Mar 05, 2025 at 03:48:10PM -0700, Jim Fehlig via Devel > > > > > > > wrote: > > > > > > > > When invoking virDomainSaveParams with a relative path, the > > > > > > > > image is > > > > > > > > saved to the daemon's CWD. Similarly, when providing > > > > > virDomainRestoreParams > > > > > > > > with a relative path, it attempts to restore from the daemon's > > > > > > > > CWD. In > > > > > most > > > > > > > > configurations, the daemon's CWD is set to '/'. Ensure a > > > > > > > > relative path is > > > > > > > > converted to absolute before invoking the driver > > > > > > > > domain{Save,Restore} > > > > > Params > > > > > > > > functions. > > > > > > > > > > > > > > Are you aware of any common usage of these APIs with a relative > > > > > > > path ? > > > > > > > > > > > > No. I added this patch to the series after receiving feedback from > > > > > > testers > > > > > that > > > > > > included "Providing a relative path to the location of the saved VM > > > > > > does not > > > > > > work". E.g. something like > > > > > > > > > > > > # virsh restore --bypass-cache test/test-vm.sav > > > > > > error: Failed to restore domain from test/test-vm.sav > > > > > > error: Failed to open file 'test/test-vm.sav': No such file or > > > > > > directory" > > > > > > > > > > > > > Although we've not documented it, my general view is that all > > > > > > > paths given > > > > > > > to libvirt are expected to be absolute, everywhere - whether API > > > > > > > parameters > > > > > > > like these, or config file parmeters, or XML elements/attributes. > > > > > > > > > > > > Agreed. Relative paths from (remote) clients are ambiguous on the > > > > > > server. I'm > > > > > > fine dropping this patch from the series. > > > > > > > > > > > > > In the perfect world we would canonicalize all relative paths on > > > > > > > the > > > > > > > client side, but doing that is such an enourmous & complex job it > > > > > > > is > > > > > > > not likely to be practical. We'd be better off just documenting > > > > > > > use > > > > > > > of relative paths as "out of scope" and / or "undefined behaviour" > > > > > > > > > > > > I'll take a stab at improving the documentation. > > > > > > > > > > > > > > > > So this actually breaks an existing usage, albeit from a simple user > > > > > (e.g. myself). And because later patches switch from > > > > > virDomain{Save,Restore}Flags to virDomain{Save,Restore}Params, this > > > > > might be seen as a regression. If we do not want to canonicalize the > > > > > paths, then we should error out on relative ones. Without that the > > > > > current behaviour is not only what's described above (and how I > > > > > noticed > > > > > it), but also the following two commands: > > > > > > > > > > virsh save domain asdf.img > > > > > virsh save --image-format raw asdf.img > > > > > > > > > > will behave differently. The first one saves the image in CWD of > > > > > virsh, > > > > > the second one will save the same image in CWD of virtqemud (or > > > > > respective daemon), without any error or indication of that happening. > > > > > Consequently, `virsh restore` will restore from a different file based > > > > > on whether there are extra flags/parameters or not. > > > > > > > > Urgh, right, I missed that we already have canonicalization in > > > > the virDomainSave method. > > > > I forgot about that as well when deciding to drop this patch from the > > series. > > > > > > > > > > > > > > > > Either we need to disallow relative paths or canonicalize them on the > > > > > client, and ideally before the release. > > > > > > > > Yeah, reluctantly, we need to preserve that behaviour in the newer > > > > virDomainSaveParams, to give consistent behaviour. > > > > > > > > > > Yes, that behaviour is a relic of the past that we now need to live > > > with. But that's the reason I'd give my > > > > > > Reviewed-by: Martin Kletzander <mklet...@redhat.com> > > > > Thanks. Is there agreement I should push this before the release? > > > > From my side I'm for it; @Daniel?
Yes, go for it. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|