Re: [PATCH v4] usbip: tools: add hint when no exported devices are found

Shuah Khan
2026-04-06T21:12:56Z

On 4/2/26 02:32, Zongmin Zhou wrote:
> From: Zongmin Zhou <zhouzongmin@kylinos.cn>
>
> When refresh_exported_devices() finds no devices, it's helpful to
> inform users about potential causes. This could be due to:
>
> 1. The usbip driver module is not loaded.
> 2. No devices have been exported yet.
>
> Add an informational message to guide users when ndevs == 0.
>
> Also update the condition in usbip_host_driver_open() and
> usbip_device_driver_open() to check both ret and ndevs == 0,
> and change err() to info().
>
> Message visibility by scenario:
> - usbipd (console mode): Show on console/serial, this allows instant
> visibility for debugging.
> - usbipd -D (daemon mode): Message logged to syslog, can keep logs for
> later traceability in production. Also can use "journalctl -f" to
> trace on console.
>
> Suggested-by: Shuah Khan <skhan@linuxfoundation.org>
> Signed-off-by: Zongmin Zhou <zhouzongmin@kylinos.cn>
> ---
> Changes in v4:
> - Printing behavior adjusted as suggested.
> Changes in v3:
> - Just add an informational message when no devices are found.
> Changes in v2:
> - Use system calls directly instead of checking sysfs dir.
>
> tools/usb/usbip/libsrc/usbip_device_driver.c | 6 +++---
> tools/usb/usbip/libsrc/usbip_host_common.c | 3 +++
> tools/usb/usbip/libsrc/usbip_host_driver.c | 7 ++++---
> 3 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/tools/usb/usbip/libsrc/usbip_device_driver.c b/tools/usb/usbip/libsrc/usbip_device_driver.c
> index 927a151fa9aa..1dfbb76ab26c 100644
> --- a/tools/usb/usbip/libsrc/usbip_device_driver.c
> +++ b/tools/usb/usbip/libsrc/usbip_device_driver.c
> @@ -137,9 +137,9 @@ static int usbip_device_driver_open(struct usbip_host_driver *hdriver)
> INIT_LIST_HEAD(&hdriver->edev_list);
>
> ret = usbip_generic_driver_open(hdriver);
> - if (ret)
> - err("please load " USBIP_CORE_MOD_NAME ".ko and "
> - USBIP_DEVICE_DRV_NAME ".ko!");
> + if (ret || hdriver->ndevs == 0)
> + info("please load " USBIP_CORE_MOD_NAME ".ko and "
> + USBIP_DEVICE_DRV_NAME ".ko");
>
> return ret;
> }
> diff --git a/tools/usb/usbip/libsrc/usbip_host_common.c b/tools/usb/usbip/libsrc/usbip_host_common.c
> index ca78aa368476..01599cb2fa7b 100644
> --- a/tools/usb/usbip/libsrc/usbip_host_common.c
> +++ b/tools/usb/usbip/libsrc/usbip_host_common.c
> @@ -149,6 +149,9 @@ static int refresh_exported_devices(struct usbip_host_driver *hdriver)
> }
> }
>
> + if (hdriver->ndevs == 0)
> + info("Please load appropriate modules or export devices.");

Is this message needed here in refresh_exported_devices()?
usbip_host_driver_open() and usbip_device_driver_open(), the
only two callers of refresh_exported_devices() print info
message with this change?

thanks,
-- Shuah