Opened 13 years ago
Last modified 6 years ago
#448 new enhancement
Forced vs. non-forced administrative device removal
Reported by: | Jiri Svoboda | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | helenos/unspecified | Version: | mainline |
Keywords: | Cc: | ||
Blocker for: | Depends on: | ||
See also: | #383 |
Description
Similar to an unmount operation, administrative device removal (devctl offline) can be forced or non-forced. Non-forced removal will fail if there are any clients connected to an exposed function [of some child of a nexus device]. Forced removal must succeed even if there are active clients.
Extend DDF to distinguish between forced an non-forced removal (e.g. by adding a simple flag to the relevant calls).
Ideally all drivers should support both. Forced removal is slightly trickier, because it must succeed at any time, even if the driver is actively processing some transactions.
Change History (3)
comment:1 by , 7 years ago
comment:3 by , 6 years ago
I think this is a useful feature of the framework that is yet to be implemented. The framework changes are not that difficult. We need to add a force flag to:
- uspace/app/devctl/devctl.c fun_offline() - must parse it from command line
- devman_fun_offline() - passes flag to devman
- uspace/srv/devman/client_conn.c devman_fun_offline passes flag to driver_fun_offline
- uspace/srv/devman/driver.c driver_fun_offline passes flag to driver
- uspace/lib/drv/generic/driver.c driver_fun_offline passes flag to driver_ops.fun_offline
- uspace/lib/drv/include/ddf/driver.h driver_ops.fun_offline needs an extra argument
What needs to be done in this regards? Some drivers probably still don't support either, but some do as well as DDF does.