All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Cc: kwolf@redhat.com, anthony@codemonkey.ws, qemu-devel@nongnu.org,
	armbru@redhat.com, stefanha@redhat.com, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH V2 2/3] qemu-iotests: add infrastructure of fd passing via SCM
Date: Thu, 29 Aug 2013 10:54:41 -0400	[thread overview]
Message-ID: <20130829105441.5bd0d202@redhat.com> (raw)
In-Reply-To: <1377571931-9144-3-git-send-email-xiawenc@linux.vnet.ibm.com>

On Tue, 27 Aug 2013 10:52:10 +0800
Wenchao Xia <xiawenc@linux.vnet.ibm.com> wrote:

> This patch make use of the compiled scm helper program to transfer
> fd via unix socket at runtime.

I'm not familiar with the qemu-iotests and I can't tell if this
makes sense.

Kevin, Stefan, Markus, can you help reviewing this?

> 
> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
> ---
>  QMP/qmp.py                    |    6 ++++++
>  tests/qemu-iotests/check      |    1 +
>  tests/qemu-iotests/iotests.py |   26 ++++++++++++++++++++++++++
>  3 files changed, 33 insertions(+), 0 deletions(-)
> 
> diff --git a/QMP/qmp.py b/QMP/qmp.py
> index c551df1..074f09a 100644
> --- a/QMP/qmp.py
> +++ b/QMP/qmp.py
> @@ -188,3 +188,9 @@ class QEMUMonitorProtocol:
>  
>      def settimeout(self, timeout):
>          self.__sock.settimeout(timeout)
> +
> +    def get_sock_fd(self):
> +        return self.__sock.fileno()
> +
> +    def is_scm_available(self):
> +        return self.__sock.family == socket.AF_UNIX
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index 74628ae..2f7f78e 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -164,6 +164,7 @@ QEMU_IO       -- $QEMU_IO
>  IMGFMT        -- $FULL_IMGFMT_DETAILS
>  IMGPROTO      -- $FULL_IMGPROTO_DETAILS
>  PLATFORM      -- $FULL_HOST_DETAILS
> +SOCKET_SCM_HELPER -- $SOCKET_SCM_HELPER
>  
>  EOF
>  #MKFS_OPTIONS  -- $FULL_MKFS_OPTIONS
> diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
> index 33ad0ec..d40b2de 100644
> --- a/tests/qemu-iotests/iotests.py
> +++ b/tests/qemu-iotests/iotests.py
> @@ -38,6 +38,8 @@ imgfmt = os.environ.get('IMGFMT', 'raw')
>  imgproto = os.environ.get('IMGPROTO', 'file')
>  test_dir = os.environ.get('TEST_DIR', '/var/tmp')
>  
> +socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper')
> +
>  def qemu_img(*args):
>      '''Run qemu-img and return the exit code'''
>      devnull = open('/dev/null', 'r+')
> @@ -80,6 +82,12 @@ class VM(object):
>                       '-display', 'none', '-vga', 'none']
>          self._num_drives = 0
>  
> +    #This can be used to add unused monitor
> +    def add_monitor_telnet(self, ip, port):
> +        args = 'tcp:%s:%d,server,nowait,telnet' % (ip, port)
> +        self._args.append('-monitor')
> +        self._args.append(args)
> +
>      def add_drive(self, path, opts=''):
>          '''Add a virtio-blk drive to the VM'''
>          options = ['if=virtio',
> @@ -112,6 +120,24 @@ class VM(object):
>          self._args.append(','.join(options))
>          return self
>  
> +    #Sendmsg must carry out some data to get qemu's notice, so send a blank
> +    #by default.
> +    def send_fd_scm(self, fd, msg=' '):
> +        #In iotest.py, the qmp should always use unix socket.
> +        assert self._qmp.is_scm_available()
> +        fd_bin = socket_scm_helper
> +        if os.path.exists(fd_bin) == False:
> +            print "Scm help program does not present, path %s." % fd_bin
> +            return -1
> +        fd_param = ["%s" % fd_bin,
> +                    "%d" % self._qmp.get_sock_fd(),
> +                    "%d" % fd,
> +                    "%s" % msg]
> +        devnull = open('/dev/null', 'rb')
> +        p = subprocess.Popen(fd_param, stdin=devnull, stdout=sys.stdout,
> +                             stderr=sys.stderr)
> +        return p.wait()
> +
>      def launch(self):
>          '''Launch the VM and establish a QMP connection'''
>          devnull = open('/dev/null', 'rb')

  reply	other threads:[~2013-08-29 14:54 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-27  2:52 [Qemu-devel] [PATCH V2 0/3] qemu-iotests: add test for fd passing via SCM rights Wenchao Xia
2013-08-27  2:52 ` [Qemu-devel] [PATCH V2 1/3] qemu-iotests: add unix socket help program Wenchao Xia
2013-08-28  1:11   ` Eric Blake
2013-08-28  2:11     ` Wenchao Xia
2013-08-29 14:50   ` Luiz Capitulino
2013-08-30  2:42     ` Wenchao Xia
2013-08-30 11:33       ` Luiz Capitulino
2013-09-02  1:59         ` Wenchao Xia
2013-08-27  2:52 ` [Qemu-devel] [PATCH V2 2/3] qemu-iotests: add infrastructure of fd passing via SCM Wenchao Xia
2013-08-29 14:54   ` Luiz Capitulino [this message]
2013-08-27  2:52 ` [Qemu-devel] [PATCH V2 3/3] qemu-iotests: add tests for runtime fd passing via SCM rights Wenchao Xia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130829105441.5bd0d202@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=xiawenc@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.