Re: [PATCH 2/4] firewire: cdev: use an idr rather than a linked listfor resources

From: Stefan Richter
Date: Thu Dec 18 2008 - 17:44:51 EST


Stefan Richter wrote on 2008-12-14:
> From: Jay Fenlason <fenlason@xxxxxxxxxx>
>
> The current code uses a linked list and a counter for storing
> resources and the corresponding handle numbers. By changing to an idr
> we can be safe from counter wrap-around giving two resources the same
> handle.
>
> Furthermore, the deallocation ioctls now check whether the resource to
> be freed is of the intended type.
>
> Signed-off-by: Jay Fenlason <fenlason@xxxxxxxxxx>
>
> Some rework by Stefan R:
> - The idr API documentation says we get an ID within 0...0x7fffffff.
> Hence we can rest assured that idr handles fit into cdev handles.
> - Fix some races. Add a client->in_shutdown flag for this purpose.
> - Add allocation retry to add_client_resource().
> - It is possible to use idr_for_each() in fw_device_op_release().
> - Small style changes.
>
> Signed-off-by: Stefan Richter <stefanr@xxxxxxxxxxxxxxxxx>

Back to the drawing board. This patch breaks FCP for dvgrab, kino,
gscanbus.

dvgrab: only works with -guid ...
kino: shows live preview but can't list nor control camcorder
gscanbus: segfaults if I click on the camera icon to bring up the info
window with AV/C controls.
--
Stefan Richter
-=====-==--- ==-- =--=-
http://arcgraph.de/sr/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/