diff mbox

[v7,06/42] Add wrapper for setting blocking status on a QEMUFile

Message ID 1434450415-11339-7-git-send-email-dgilbert@redhat.com
State New
Headers show

Commit Message

Dr. David Alan Gilbert June 16, 2015, 10:26 a.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

Add a wrapper to change the blocking status on a QEMUFile
rather than having to use qemu_set_block(qemu_get_fd(f));
it seems best to avoid exposing the fd since not all QEMUFile's
really have one.  With this wrapper we could move the implementation
down to be different on different transports.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
---
 include/migration/qemu-file.h |  1 +
 migration/qemu-file.c         | 15 +++++++++++++++
 2 files changed, 16 insertions(+)

Comments

Juan Quintela June 17, 2015, 11:59 a.m. UTC | #1
"Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> Add a wrapper to change the blocking status on a QEMUFile
> rather than having to use qemu_set_block(qemu_get_fd(f));
> it seems best to avoid exposing the fd since not all QEMUFile's
> really have one.  With this wrapper we could move the implementation
> down to be different on different transports.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Reviewed-by: Amit Shah <amit.shah@redhat.com>

Reviewed-by: Juan Quintela <quintela@redhat.com>

Can we improve naming?

> ---
>  include/migration/qemu-file.h |  1 +
>  migration/qemu-file.c         | 15 +++++++++++++++
>  2 files changed, 16 insertions(+)
>
> diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
> index 29a9d69..d43c835 100644
> --- a/include/migration/qemu-file.h
> +++ b/include/migration/qemu-file.h
> @@ -193,6 +193,7 @@ int qemu_file_get_error(QEMUFile *f);
>  void qemu_file_set_error(QEMUFile *f, int ret);
>  int qemu_file_shutdown(QEMUFile *f);
>  void qemu_fflush(QEMUFile *f);
> +void qemu_file_change_blocking(QEMUFile *f, bool block);
>  
>  static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
>  {
> diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> index c111a6b..c746129 100644
> --- a/migration/qemu-file.c
> +++ b/migration/qemu-file.c
> @@ -651,3 +651,18 @@ size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
>  
>      return res == len ? res : 0;
>  }
> +
> +/*
> + * Change the blocking state of the QEMUFile.
> + * Note: On some transports the OS only keeps a single blocking state for
> + *       both directions, and thus changing the blocking on the main
> + *       QEMUFile can also affect the return path.
> + */
> +void qemu_file_change_blocking(QEMUFile *f, bool block)

qemu_file_set_blocking?

It don't change the blocking, it just do whatever block says?

> +{
> +    if (block) {
> +        qemu_set_block(qemu_get_fd(f));
> +    } else {
> +        qemu_set_nonblock(qemu_get_fd(f));
> +    }
> +}
Dr. David Alan Gilbert June 17, 2015, 12:34 p.m. UTC | #2
* Juan Quintela (quintela@redhat.com) wrote:
> "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> wrote:
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >
> > Add a wrapper to change the blocking status on a QEMUFile
> > rather than having to use qemu_set_block(qemu_get_fd(f));
> > it seems best to avoid exposing the fd since not all QEMUFile's
> > really have one.  With this wrapper we could move the implementation
> > down to be different on different transports.
> >
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > Reviewed-by: Amit Shah <amit.shah@redhat.com>
> 
> Reviewed-by: Juan Quintela <quintela@redhat.com>
> 
> Can we improve naming?
> 
> > ---
> >  include/migration/qemu-file.h |  1 +
> >  migration/qemu-file.c         | 15 +++++++++++++++
> >  2 files changed, 16 insertions(+)
> >
> > diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
> > index 29a9d69..d43c835 100644
> > --- a/include/migration/qemu-file.h
> > +++ b/include/migration/qemu-file.h
> > @@ -193,6 +193,7 @@ int qemu_file_get_error(QEMUFile *f);
> >  void qemu_file_set_error(QEMUFile *f, int ret);
> >  int qemu_file_shutdown(QEMUFile *f);
> >  void qemu_fflush(QEMUFile *f);
> > +void qemu_file_change_blocking(QEMUFile *f, bool block);
> >  
> >  static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
> >  {
> > diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> > index c111a6b..c746129 100644
> > --- a/migration/qemu-file.c
> > +++ b/migration/qemu-file.c
> > @@ -651,3 +651,18 @@ size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
> >  
> >      return res == len ? res : 0;
> >  }
> > +
> > +/*
> > + * Change the blocking state of the QEMUFile.
> > + * Note: On some transports the OS only keeps a single blocking state for
> > + *       both directions, and thus changing the blocking on the main
> > + *       QEMUFile can also affect the return path.
> > + */
> > +void qemu_file_change_blocking(QEMUFile *f, bool block)
> 
> qemu_file_set_blocking?
> 
> It don't change the blocking, it just do whatever block says?
> 
> > +{
> > +    if (block) {
> > +        qemu_set_block(qemu_get_fd(f));
> > +    } else {
> > +        qemu_set_nonblock(qemu_get_fd(f));
> > +    }
> > +}

I worry about having a:
   qemu_file_set_blocking
and a 
   qemu_set_block

it sounds a bit similar when one always 'sets' (i.e. turns on)
and the other either turns on or off.

Dave
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
Juan Quintela June 17, 2015, 12:57 p.m. UTC | #3
"Dr. David Alan Gilbert" <dgilbert@redhat.com> wrote:
> * Juan Quintela (quintela@redhat.com) wrote:
>> "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> wrote:
>> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>> >
>> > Add a wrapper to change the blocking status on a QEMUFile
>> > rather than having to use qemu_set_block(qemu_get_fd(f));
>> > it seems best to avoid exposing the fd since not all QEMUFile's
>> > really have one.  With this wrapper we could move the implementation
>> > down to be different on different transports.
>> >
>> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
>> > Reviewed-by: Amit Shah <amit.shah@redhat.com>
>> 
>> Reviewed-by: Juan Quintela <quintela@redhat.com>
>> 
>> Can we improve naming?
>> 
>> > ---
>> >  include/migration/qemu-file.h |  1 +
>> >  migration/qemu-file.c         | 15 +++++++++++++++
>> >  2 files changed, 16 insertions(+)
>> >
>> > diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
>> > index 29a9d69..d43c835 100644
>> > --- a/include/migration/qemu-file.h
>> > +++ b/include/migration/qemu-file.h
>> > @@ -193,6 +193,7 @@ int qemu_file_get_error(QEMUFile *f);
>> >  void qemu_file_set_error(QEMUFile *f, int ret);
>> >  int qemu_file_shutdown(QEMUFile *f);
>> >  void qemu_fflush(QEMUFile *f);
>> > +void qemu_file_change_blocking(QEMUFile *f, bool block);
>> >  
>> >  static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
>> >  {
>> > diff --git a/migration/qemu-file.c b/migration/qemu-file.c
>> > index c111a6b..c746129 100644
>> > --- a/migration/qemu-file.c
>> > +++ b/migration/qemu-file.c
>> > @@ -651,3 +651,18 @@ size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
>> >  
>> >      return res == len ? res : 0;
>> >  }
>> > +
>> > +/*
>> > + * Change the blocking state of the QEMUFile.
>> > + * Note: On some transports the OS only keeps a single blocking state for
>> > + *       both directions, and thus changing the blocking on the main
>> > + *       QEMUFile can also affect the return path.
>> > + */
>> > +void qemu_file_change_blocking(QEMUFile *f, bool block)
>> 
>> qemu_file_set_blocking?
>> 
>> It don't change the blocking, it just do whatever block says?
>> 
>> > +{
>> > +    if (block) {
>> > +        qemu_set_block(qemu_get_fd(f));
>> > +    } else {
>> > +        qemu_set_nonblock(qemu_get_fd(f));
>> > +    }
>> > +}
>
> I worry about having a:
>    qemu_file_set_blocking
> and a 
>    qemu_set_block
>
> it sounds a bit similar when one always 'sets' (i.e. turns on)
> and the other either turns on or off.

There is a parameter difference, but I am not writting the code, and
don't care so much.  I would expect a function with change in its name
to change to the other plocking, whatever that is :P

Later, Juan.
diff mbox

Patch

diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
index 29a9d69..d43c835 100644
--- a/include/migration/qemu-file.h
+++ b/include/migration/qemu-file.h
@@ -193,6 +193,7 @@  int qemu_file_get_error(QEMUFile *f);
 void qemu_file_set_error(QEMUFile *f, int ret);
 int qemu_file_shutdown(QEMUFile *f);
 void qemu_fflush(QEMUFile *f);
+void qemu_file_change_blocking(QEMUFile *f, bool block);
 
 static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
 {
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index c111a6b..c746129 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -651,3 +651,18 @@  size_t qemu_get_counted_string(QEMUFile *f, char buf[256])
 
     return res == len ? res : 0;
 }
+
+/*
+ * Change the blocking state of the QEMUFile.
+ * Note: On some transports the OS only keeps a single blocking state for
+ *       both directions, and thus changing the blocking on the main
+ *       QEMUFile can also affect the return path.
+ */
+void qemu_file_change_blocking(QEMUFile *f, bool block)
+{
+    if (block) {
+        qemu_set_block(qemu_get_fd(f));
+    } else {
+        qemu_set_nonblock(qemu_get_fd(f));
+    }
+}