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

Zongmin Zhou posted 1 patch 1 day, 10 hours ago
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(-)
[PATCH v4] usbip: tools: add hint when no exported devices are found
Posted by Zongmin Zhou 1 day, 10 hours ago
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.");
+
 	return 0;
 }
 
diff --git a/tools/usb/usbip/libsrc/usbip_host_driver.c b/tools/usb/usbip/libsrc/usbip_host_driver.c
index 573e73ec36bd..bd8a6b84de0e 100644
--- a/tools/usb/usbip/libsrc/usbip_host_driver.c
+++ b/tools/usb/usbip/libsrc/usbip_host_driver.c
@@ -32,9 +32,10 @@ static int usbip_host_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_HOST_DRV_NAME ".ko!");
+	if (ret || hdriver->ndevs == 0)
+		info("please load " USBIP_CORE_MOD_NAME ".ko and "
+		     USBIP_HOST_DRV_NAME ".ko");
+
 	return ret;
 }
 
-- 
2.43.0