DPDK patches and discussions
 help / color / mirror / Atom feed
From: Neil Horman <nhorman@tuxdriver.com>
To: "Dey, Souvik" <sodey@sonusnet.com>
Cc: "Mussar, Gary" <gmussar@ciena.com>,
	Stephen Hemminger <stephen@networkplumber.org>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
Date: Tue, 30 Aug 2016 08:56:33 -0400	[thread overview]
Message-ID: <20160830125633.GA30977@hmsreliant.think-freely.org> (raw)
In-Reply-To: <BN6PR03MB27402670D815D01FE58D3E38DAE10@BN6PR03MB2740.namprd03.prod.outlook.com>

On Mon, Aug 29, 2016 at 11:16:35PM +0000, Dey, Souvik wrote:
> Hi,
> 
> I already followed the 100% python way and submitted the v3 of this patch. http://dpdk.org/dev/patchwork/patch/15378/
> How will your patch be different in solving the issue. There will always be multiple ways to solving things right.
> 
As stephen says, using popen is a bit of a hack here.  You could easily use one
of several python-sysfs libraries to simplify the sysfs enumeration and
discovery process
Neil

> 
> V3 of my submitted patch:
> 
> diff --git a/tools/dpdk-devbind.py b/tools/dpdk-devbind.py
> index b69ca2a..c0b46ee 100755
> --- a/tools/dpdk-devbind.py
> +++ b/tools/dpdk-devbind.py
> @@ -36,6 +36,7 @@  import sys
>  import os
>  import getopt
>  import subprocess
> +
>  from os.path import exists, abspath, dirname, basename
>  
>  # The PCI base class for NETWORK devices
> @@ -222,8 +223,19 @@  def get_pci_device_details(dev_id):
>          device[name] = value
>      # check for a unix interface name
>      sys_path = "/sys/bus/pci/devices/%s/net/" % dev_id
> +    # the path for virtio devices are different, so get the correct path
> +    virtio = "/sys/bus/pci/devices/%s/" % dev_id
> +    ls = subprocess.Popen(['ls', virtio], stdout=subprocess.PIPE)
> +    grep = subprocess.Popen('grep virt'.split(), stdin=ls.stdout,
> +                            stdout=subprocess.PIPE)
> +    ls.stdout.close()
> +    virtio = grep.communicate()[0].rstrip()
> +    ls.wait()
> +    virtio_sys_path = "/sys/bus/pci/devices/%s/%s/net/" % (dev_id, virtio)
>      if exists(sys_path):
>          device["Interface"] = ",".join(os.listdir(sys_path))
> +    elif exists(virtio_sys_path):
> +        device["Interface"] = ",".join(os.listdir(virtio_sys_path))
>      else:
>          device["Interface"] = ""
>      # check if a port is used for ssh connection
> 
> 
> -----Original Message-----
> From: Mussar, Gary [mailto:gmussar@ciena.com] 
> Sent: Monday, August 29, 2016 11:10 AM
> To: Dey, Souvik <sodey@sonusnet.com>; Stephen Hemminger <stephen@networkplumber.org>
> Cc: nhorman@tuxdriver.com; dev@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
> 
> We did this slightly differently. This is 100% python and is a bit more general. We search for the first "net" directory under the specific device directory.
> 
> -------------------------------------------
> --- tools/dpdk-devbind.py       2016-08-29 11:02:35.594202888 -0400
> +++ ../dpdk/tools/dpdk-devbind.py 2016-08-29 11:00:34.897677233 -0400
> @@ -221,11 +221,11 @@
>          name = name.strip(":") + "_str"
>          device[name] = value
>      # check for a unix interface name
> -    sys_path = "/sys/bus/pci/devices/%s/net/" % dev_id
> -    if exists(sys_path):
> -        device["Interface"] = ",".join(os.listdir(sys_path))
> -    else:
> -        device["Interface"] = ""
> +    device["Interface"] = ""
> +    for base, dirs, files in os.walk("/sys/bus/pci/devices/%s/" % dev_id):
> +        if "net" in dirs:
> +            device["Interface"] = ",".join(os.listdir(os.path.join(base,"net")))
> +            break
>      # check if a port is used for ssh connection
>      device["Ssh_if"] = False
>      device["Active"] = ""
> -------------------------------------------
> 
> Gary
> 
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Dey, Souvik
> Sent: Friday, August 26, 2016 8:21 PM
> To: Stephen Hemminger
> Cc: nhorman@tuxdriver.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
> 
> Hi ,
> 	I have already updated it and have re submitted the patch v3. Can you please check that http://dpdk.org/dev/patchwork/patch/15378/
> --
> Regards,
> Souvik
> 
> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen@networkplumber.org] 
> Sent: Friday, August 26, 2016 11:55 AM
> To: Dey, Souvik <sodey@sonusnet.com>
> Cc: nhorman@tuxdriver.com; dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue.
> 
> On Wed, 24 Aug 2016 22:25:46 -0400
> souvikdey33 <sodey@sonusnet.com> wrote:
> 
> > +    #The path for virtio devices are different. Get the correct path.
> > +	virtio = "/sys/bus/pci/devices/%s/" % dev_id
> > +    cmd = " ls %s | grep 'virt' " %virtio
> > +    virtio = commands.getoutput(cmd)
> > +    virtio_sys_path = "/sys/bus/pci/devices/%s/%s/net/" % 
> > +(dev_id,virtio)
> >      if exists(sys_path):
> >          device["Interface"] = ",".join(os.listdir(sys_path))
> 
> There should be a way to do this in python without going out to shell.
> This would be safer and more secure.
> 
> The code already uses os.listdir() (which is the python library version of ls) in later section. Why not use that here to check for virtio bus.
> 

  parent reply	other threads:[~2016-08-30 12:56 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-25  2:25 souvikdey33
2016-08-25  9:51 ` Mcnamara, John
2016-08-25 10:19   ` Thomas Monjalon
2016-08-25 10:27     ` Mcnamara, John
2016-08-26  0:37 ` Stephen Hemminger
2016-08-26  3:59 ` [dpdk-dev] [PATCH v2] tools: fix issue with virtio interfaces souvikdey33
2016-08-26  5:50 ` souvikdey33
2016-08-26 11:35 ` [dpdk-dev] [PATCH v3] " souvikdey33
2016-10-04  9:59   ` Thomas Monjalon
2016-08-26 15:55 ` [dpdk-dev] [PATCH v1] dpdk-devbind.py: Virtio interface issue Stephen Hemminger
2016-08-27  0:20   ` Dey, Souvik
2016-08-29 15:09     ` Mussar, Gary
2016-08-29 23:16       ` Dey, Souvik
2016-08-29 23:33         ` Stephen Hemminger
2016-08-30 12:56         ` Neil Horman [this message]
2016-08-30 13:12         ` Mussar, Gary
2016-09-01 10:59       ` Mcnamara, John
2016-09-01 22:08         ` Dey, Souvik
2016-09-02 12:57         ` Mussar, Gary

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=20160830125633.GA30977@hmsreliant.think-freely.org \
    --to=nhorman@tuxdriver.com \
    --cc=dev@dpdk.org \
    --cc=gmussar@ciena.com \
    --cc=sodey@sonusnet.com \
    --cc=stephen@networkplumber.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).