diff mbox series

migration: Truncate state file in xen-save-devices-state

Message ID 20200921094830.114028-1-dovmurik@linux.vnet.ibm.com
State New
Headers show
Series migration: Truncate state file in xen-save-devices-state | expand

Commit Message

Dov Murik Sept. 21, 2020, 9:48 a.m. UTC
When running the xen-save-devices-state QMP command, if the filename
already exists it will be truncated before dumping the devices' state
into it.

Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>
---

Note that I found the above issue while trying to debug
xen-load-devices-state which simply fails (prints "Configuration section
missing" to stderr) directly after xen-save-devices-state (in the same
VM).  I wonder if I should file a bug report as-is or investigate some
more.  Advice welcome.

-Dov

---
 migration/savevm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Dr. David Alan Gilbert Sept. 21, 2020, 11:17 a.m. UTC | #1
* Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:
> When running the xen-save-devices-state QMP command, if the filename

> already exists it will be truncated before dumping the devices' state

> into it.

> 

> Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> ---


OK, that looks fine to me, so:

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


> 

> Note that I found the above issue while trying to debug

> xen-load-devices-state which simply fails (prints "Configuration section

> missing" to stderr) directly after xen-save-devices-state (in the same

> VM).  I wonder if I should file a bug report as-is or investigate some

> more.  Advice welcome.


I don't try the xen-* commands normally; I've cc'ing in Stefano and
Anthony.

Dave

> 

> -Dov

> 

> ---

>  migration/savevm.c | 3 ++-

>  1 file changed, 2 insertions(+), 1 deletion(-)

> 

> diff --git a/migration/savevm.c b/migration/savevm.c

> index 304d98ff78..e1b26672cc 100644

> --- a/migration/savevm.c

> +++ b/migration/savevm.c

> @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

>      vm_stop(RUN_STATE_SAVE_VM);

>      global_state_store_running();

>  

> -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> +                                    0660, errp);

>      if (!ioc) {

>          goto the_end;

>      }

> -- 

> 2.20.1

> 

-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Dov Murik Sept. 21, 2020, 12:28 p.m. UTC | #2
On 21/09/2020 14:17, Dr. David Alan Gilbert wrote:
> * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

>> When running the xen-save-devices-state QMP command, if the filename

>> already exists it will be truncated before dumping the devices' state

>> into it.

>>

>> Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

>> ---

> 

> OK, that looks fine to me, so:

> 

> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> 

>>

>> Note that I found the above issue while trying to debug

>> xen-load-devices-state which simply fails (prints "Configuration section

>> missing" to stderr) directly after xen-save-devices-state (in the same

>> VM).  I wonder if I should file a bug report as-is or investigate some

>> more.  Advice welcome.

> 

> I don't try the xen-* commands normally; I've cc'ing in Stefano and

> Anthony.


Thanks Dave.  Just to be clear, I'm running this without Xen at all; but
these commands seem to work OK for dumping/restoring guest's devices
state (without RAM) -- if I modify the code to circumvent the mentioned
problem.

Dov

> 

> Dave

> 

>>

>> -Dov

>>

>> ---

>>   migration/savevm.c | 3 ++-

>>   1 file changed, 2 insertions(+), 1 deletion(-)

>>

>> diff --git a/migration/savevm.c b/migration/savevm.c

>> index 304d98ff78..e1b26672cc 100644

>> --- a/migration/savevm.c

>> +++ b/migration/savevm.c

>> @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

>>       vm_stop(RUN_STATE_SAVE_VM);

>>       global_state_store_running();

>>   

>> -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

>> +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

>> +                                    0660, errp);

>>       if (!ioc) {

>>           goto the_end;

>>       }

>> -- 

>> 2.20.1

>>
Dr. David Alan Gilbert Sept. 21, 2020, 5:56 p.m. UTC | #3
* Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:
> 

> 

> On 21/09/2020 14:17, Dr. David Alan Gilbert wrote:

> > * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > > When running the xen-save-devices-state QMP command, if the filename

> > > already exists it will be truncated before dumping the devices' state

> > > into it.

> > > 

> > > Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> > > ---

> > 

> > OK, that looks fine to me, so:

> > 

> > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> > 

> > > 

> > > Note that I found the above issue while trying to debug

> > > xen-load-devices-state which simply fails (prints "Configuration section

> > > missing" to stderr) directly after xen-save-devices-state (in the same

> > > VM).  I wonder if I should file a bug report as-is or investigate some

> > > more.  Advice welcome.

> > 

> > I don't try the xen-* commands normally; I've cc'ing in Stefano and

> > Anthony.

> 

> Thanks Dave.  Just to be clear, I'm running this without Xen at all; but

> these commands seem to work OK for dumping/restoring guest's devices

> state (without RAM) -- if I modify the code to circumvent the mentioned

> problem.


Yeh, although you can't rely on them not doing something Xen in the
future.  There are a few other similar ways of doing what you want; eg.
if your RAM is 'shared' then you can set the x-ignore-shared migration
capability.

Dave

> Dov

> 

> > 

> > Dave

> > 

> > > 

> > > -Dov

> > > 

> > > ---

> > >   migration/savevm.c | 3 ++-

> > >   1 file changed, 2 insertions(+), 1 deletion(-)

> > > 

> > > diff --git a/migration/savevm.c b/migration/savevm.c

> > > index 304d98ff78..e1b26672cc 100644

> > > --- a/migration/savevm.c

> > > +++ b/migration/savevm.c

> > > @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

> > >       vm_stop(RUN_STATE_SAVE_VM);

> > >       global_state_store_running();

> > > -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> > > +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> > > +                                    0660, errp);

> > >       if (!ioc) {

> > >           goto the_end;

> > >       }

> > > -- 

> > > 2.20.1

> > > 

> 

-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Stefano Stabellini Sept. 21, 2020, 11:46 p.m. UTC | #4
Adding Paul


On Mon, 21 Sep 2020, Dr. David Alan Gilbert wrote:
> * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > 

> > 

> > On 21/09/2020 14:17, Dr. David Alan Gilbert wrote:

> > > * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > > > When running the xen-save-devices-state QMP command, if the filename

> > > > already exists it will be truncated before dumping the devices' state

> > > > into it.

> > > > 

> > > > Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> > > > ---

> > > 

> > > OK, that looks fine to me, so:

> > > 

> > > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> > > 

> > > > 

> > > > Note that I found the above issue while trying to debug

> > > > xen-load-devices-state which simply fails (prints "Configuration section

> > > > missing" to stderr) directly after xen-save-devices-state (in the same

> > > > VM).  I wonder if I should file a bug report as-is or investigate some

> > > > more.  Advice welcome.

> > > 

> > > I don't try the xen-* commands normally; I've cc'ing in Stefano and

> > > Anthony.

> > 

> > Thanks Dave.  Just to be clear, I'm running this without Xen at all; but

> > these commands seem to work OK for dumping/restoring guest's devices

> > state (without RAM) -- if I modify the code to circumvent the mentioned

> > problem.

> 

> Yeh, although you can't rely on them not doing something Xen in the

> future.  There are a few other similar ways of doing what you want; eg.

> if your RAM is 'shared' then you can set the x-ignore-shared migration

> capability.

> 

> Dave

> 

> > Dov

> > 

> > > 

> > > Dave

> > > 

> > > > 

> > > > -Dov

> > > > 

> > > > ---

> > > >   migration/savevm.c | 3 ++-

> > > >   1 file changed, 2 insertions(+), 1 deletion(-)

> > > > 

> > > > diff --git a/migration/savevm.c b/migration/savevm.c

> > > > index 304d98ff78..e1b26672cc 100644

> > > > --- a/migration/savevm.c

> > > > +++ b/migration/savevm.c

> > > > @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

> > > >       vm_stop(RUN_STATE_SAVE_VM);

> > > >       global_state_store_running();

> > > > -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> > > > +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> > > > +                                    0660, errp);

> > > >       if (!ioc) {

> > > >           goto the_end;

> > > >       }

> > > > -- 

> > > > 2.20.1

> > > > 

> > 

> -- 

> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

>
Dr. David Alan Gilbert Sept. 23, 2020, 6:59 p.m. UTC | #5
* Dr. David Alan Gilbert (dgilbert@redhat.com) wrote:
> * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > When running the xen-save-devices-state QMP command, if the filename

> > already exists it will be truncated before dumping the devices' state

> > into it.

> > 

> > Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> > ---

> 

> OK, that looks fine to me, so:

> 

> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>


Queued

> > 

> > Note that I found the above issue while trying to debug

> > xen-load-devices-state which simply fails (prints "Configuration section

> > missing" to stderr) directly after xen-save-devices-state (in the same

> > VM).  I wonder if I should file a bug report as-is or investigate some

> > more.  Advice welcome.

> 

> I don't try the xen-* commands normally; I've cc'ing in Stefano and

> Anthony.

> 

> Dave

> 

> > 

> > -Dov

> > 

> > ---

> >  migration/savevm.c | 3 ++-

> >  1 file changed, 2 insertions(+), 1 deletion(-)

> > 

> > diff --git a/migration/savevm.c b/migration/savevm.c

> > index 304d98ff78..e1b26672cc 100644

> > --- a/migration/savevm.c

> > +++ b/migration/savevm.c

> > @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

> >      vm_stop(RUN_STATE_SAVE_VM);

> >      global_state_store_running();

> >  

> > -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> > +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> > +                                    0660, errp);

> >      if (!ioc) {

> >          goto the_end;

> >      }

> > -- 

> > 2.20.1

> > 

> -- 

> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

> 

> 

-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Xingtao Yao (Fujitsu)" via Sept. 28, 2020, 4:46 p.m. UTC | #6
On Mon, Sep 21, 2020 at 12:17:23PM +0100, Dr. David Alan Gilbert wrote:
> * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > When running the xen-save-devices-state QMP command, if the filename

> > already exists it will be truncated before dumping the devices' state

> > into it.

> > 

> > Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> > ---

> >  migration/savevm.c | 3 ++-

> >  1 file changed, 2 insertions(+), 1 deletion(-)

> > 

> > diff --git a/migration/savevm.c b/migration/savevm.c

> > index 304d98ff78..e1b26672cc 100644

> > --- a/migration/savevm.c

> > +++ b/migration/savevm.c

> > @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

> >      vm_stop(RUN_STATE_SAVE_VM);

> >      global_state_store_running();

> >  

> > -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> > +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> > +                                    0660, errp);

> >      if (!ioc) {

> >          goto the_end;

> >      }


Hi Marek,

Do you know if the above patch is going to work in a linux stubdomain?
Can we truncate the "save file" which seems to be stubdomain's console 1?

Cheers,

-- 
Anthony PERARD
Marek Marczykowski-Górecki Sept. 28, 2020, 10:47 p.m. UTC | #7
On Mon, Sep 28, 2020 at 05:46:18PM +0100, Anthony PERARD wrote:
> On Mon, Sep 21, 2020 at 12:17:23PM +0100, Dr. David Alan Gilbert wrote:

> > * Dov Murik (dovmurik@linux.vnet.ibm.com) wrote:

> > > When running the xen-save-devices-state QMP command, if the filename

> > > already exists it will be truncated before dumping the devices' state

> > > into it.

> > > 

> > > Signed-off-by: Dov Murik <dovmurik@linux.vnet.ibm.com>

> > > ---

> > >  migration/savevm.c | 3 ++-

> > >  1 file changed, 2 insertions(+), 1 deletion(-)

> > > 

> > > diff --git a/migration/savevm.c b/migration/savevm.c

> > > index 304d98ff78..e1b26672cc 100644

> > > --- a/migration/savevm.c

> > > +++ b/migration/savevm.c

> > > @@ -2803,7 +2803,8 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,

> > >      vm_stop(RUN_STATE_SAVE_VM);

> > >      global_state_store_running();

> > >  

> > > -    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);

> > > +    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,

> > > +                                    0660, errp);

> > >      if (!ioc) {

> > >          goto the_end;

> > >      }

> 

> Hi Marek,

> 

> Do you know if the above patch is going to work in a linux stubdomain?

> Can we truncate the "save file" which seems to be stubdomain's console 1?


No, truncate won't work on the stubdomain's console. I mean, the
operation won't fail, but the actual file connected to the console on
the other end won't get truncated. But I think in case of stubdomain,
toolstack should connect the console to an empty file, so it shouldn't
be a problem.

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
diff mbox series

Patch

diff --git a/migration/savevm.c b/migration/savevm.c
index 304d98ff78..e1b26672cc 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2803,7 +2803,8 @@  void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
     vm_stop(RUN_STATE_SAVE_VM);
     global_state_store_running();
 
-    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT, 0660, errp);
+    ioc = qio_channel_file_new_path(filename, O_WRONLY | O_CREAT | O_TRUNC,
+                                    0660, errp);
     if (!ioc) {
         goto the_end;
     }