Fork us on GitHub Follow us on Google+ Follow us on Facebook Follow us on Twitter

Opened 7 years ago

Last modified 3 months 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 Changed 11 months ago by Jakub Jermář

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 Changed 3 months ago by Jakub Jermář

Can this be closed?

comment:3 Changed 3 months ago by Jiri Svoboda

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.