All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shuah Khan <skhan@linuxfoundation.org>
To: Lars Gunnarsson <gunnarsson.lars@gmail.com>
Cc: Valentina Manea <valentina.manea.m@gmail.com>,
	Shuah Khan <shuah@kernel.org>,
	linux-usb@vger.kernel.org, Shuah Khan <skhan@linuxfoundation.org>
Subject: Re: [PATCH v6 0/5] tools/usbip: Patch set summary
Date: Thu, 23 Dec 2021 12:22:41 -0700	[thread overview]
Message-ID: <62c768a8-c947-d8ed-4857-d6db11e4b460@linuxfoundation.org> (raw)
In-Reply-To: <20211216210116.GA5743@dell-precision-T3610>

On 12/16/21 2:01 PM, Lars Gunnarsson wrote:
> On Tue, Dec 14, 2021 at 03:22:57PM -0700, Shuah Khan wrote:
>> On 12/9/21 2:11 PM, Lars Gunnarsson wrote:
>>> On Mon, Dec 06, 2021 at 01:02:35PM -0700, Shuah Khan wrote:
>>>> On 11/30/21 3:22 PM, Lars Gunnarsson wrote:
>>>>> To forward a remote usb device over usbip the following steps is required:
>>>>>
>>>>> 1. Execute "usbip bind" on remote end.
>>>>> 2. Execute "usbip attach" on local end.
>>>>>
>>>>> These steps must be perfomed in above order and after usb device is plugged in.
>>>>> If the usb device is unplugged on the remote end the steps above needs to be
>>>>> performed again to establish the connection. This patch set implements a feature
>>>>> to persistently forward devices on a given bus. When using flag "-p|--persistent"
>>>>> on remot end, the USB device becomes exported when plugged in. When using flag
>>>>> "-p|--persistent" on local end, the USB device becomes imported when available
>>>>> on remote end. Thus it is only required to run the usbip command once on each
>>>>> end, in any order, to persistently forward usb devices on a given bus.
>>>>>
>>>>> This is sent in five separate patches:
>>>>>      tools/usbip: update protocol documentation
>>>>>      tools/usbip: update manual pages
>>>>>      tools/usbip: add usb event monitor into libusbip
>>>>>      tools/usbip: export USB devices on a given bus persistently
>>>>>      tools/usbip: import USB devices on a given bus persistently
>>>>>
>>>>
>>>> When -p is used, the command stays in foreground. This is a very
>>>> different use model compared to current model. In addition, once
>>>> persistent flag is set on a bus, all devices even the ones that
>>>> are inserted in the future get exported. What happens if one of
>>>> the devices shouldn't be exported?
>>>
>>> Yes it's conceptually more like exporting/importing the physical usb port,
>>> rather than exporting/importing a device plugged into the usb port. Using flag
>>> "-p" on both ends will behave like a "virtual" usb hub, a device plugged in on
>>> the server (on a chosen bus) will automatically be available on the client.
>>> Using flag "-p" has no dependency on the other end though. Using "-p" on one end
>>> doesn't enforce usage on the other end. It is only for exporting and importing
>>> devices automatically when they become available.
>>>
>>> There might be better choices than naming flag to "persistent" for easily
>>> communicate this concept. Would "port" be more intuitive?
>>> "usbip attach --port 3-3.1" and "usbip bind --port 3-3.1"
>>>
>>
>> Terminology isn't what I am concerned about. My concern is the idea of
>> automatically making devices available for export at bus level.
>>
>>>>
>>>> There are several conditions to be thought through:
>>>>
>>>> - What happens if if the command that is running on the foreground
>>>>     is killed on either end?
>>>
>>> If "attach" cmd gets killed (client side) it will stop the foreground
>>> monitoring. The device will still remain imported if user exit at imported state.
>>> The user then needs to manually unimport the device with "detach".
>>>
>>> If "bind" cmd gets killed (server side) it will stop the foreground monitoring.
>>> The device will still remain exported if exit at exported state. The user then
>>> needs to manually unexport the device with "unbind".
>>>
>>
>> My concern is the persistence nature of these exports/imports through
>> reboots. I have to give it some though on how this can be implemented
>> addressing my concerns.
> 
> Can you elaborate on your thoughts about "the persistence nature of these exports/imports through reboots"?
> reboot as in exit from foreground and run the command again?
> 

Sorry for the delay in responding.

I have been thinking about this more. I am not convinced that
supporting these use-cases requires usbip changes.

Can we not accomplish the same via scripts/crontab? Monitor if
a bound device is removed and rebind. Do the same on the client
side?

Have you explored if this can be done with existing tools and
a shell script and make use of crontab?

thanks,
-- Shuah

      reply	other threads:[~2021-12-23 19:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-30 22:22 [PATCH v6 0/5] tools/usbip: Patch set summary Lars Gunnarsson
2021-12-03 11:17 ` Greg KH
2021-12-06 20:02 ` Shuah Khan
2021-12-09 21:11   ` Lars Gunnarsson
2021-12-14 22:22     ` Shuah Khan
2021-12-16 21:01       ` Lars Gunnarsson
2021-12-23 19:22         ` Shuah Khan [this message]

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=62c768a8-c947-d8ed-4857-d6db11e4b460@linuxfoundation.org \
    --to=skhan@linuxfoundation.org \
    --cc=gunnarsson.lars@gmail.com \
    --cc=linux-usb@vger.kernel.org \
    --cc=shuah@kernel.org \
    --cc=valentina.manea.m@gmail.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.