Opened 12 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 Jakub Jermář, 7 years ago

What needs to be done in this regards? Some drivers probably still don't support either, but some do as well as DDF does.

comment:2 by Jakub Jermář, 6 years ago

Can this be closed?

comment:3 by Jiri Svoboda, 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
Note: See TracTickets for help on using tickets.