Re: [PATCH] pktcdvd: added sysfs interface + bio write queue handling fix

Thomas Maier
2006-09-10T19:20:04Z

Hello,

Am 09.09.2006, 23:30 Uhr, schrieb Greg KH <greg@kroah.com>:

> Use /sys/class/pktcdvd/ and use struct device instead of struct
> class_device, so I don't have to convert the code later :)

I moved the pktcdvd control files (device add/remove/map)
into /sys/class/pktcdvd/.
I only use "struct class", no need to use struct class_device,
since this /sys/class/pktcdvd represents not a real device.
The real devices are in /sys/block/pktcdvd[0-7] as created
by a "struct gendisk".

I have a little improvement request for the class code:
since the create_class() function has no attributes parameter,
i have to copy+paste the class_create() code into the module,
assign the class attribute array to the struct class and do a
class_register().
Would be nice if class_create() can be passed the class
attribute array...

The file layout is now as follows:

/sys/block/pktcdvd[0-7]/ # device dir created by gendisk
packet/ # pktcdvd subdir
<files> # pktcdvd per device files
mapped_to # symlink to mapped device in /sys/block

/sys/class/pktcdvd/ # class dir for control files
add # add new device mapping, creates new pktcdvd device
remove # ...
device_map
packet_buffers

/debugfs/pktcdvd[0-7]/ # per device debugfs dir entry
info # lot of human readable device infos, previous
# found in /proc/driver/pktcdvd[0-7]

Suggestions/Alteratives:
* should there be pktcdvd[0-7] subdirs in /sys/class/pktcdvd/ ?
With content stored in /sys/block/../packet/ ? Or a symlink to it?

* the files in /sys/class/pktcdvd can be moved to /sys/module/pktcdvd/ ?!
Seems that some modules have control files in their /sys/module directory.

-Thomas Maier