sysfs interface
---------------
The pktcdvd module (packet writing driver) creates the following files in the
sysfs: (<devid> is in the format major:minor)

What:		/sys/class/pktcdvd/add
What:		/sys/class/pktcdvd/remove
What:		/sys/class/pktcdvd/device_map
Date:		Oct. 2006
KernelVersion:	2.6.20
Contact:	Thomas Maier <balagi@justmail.de>
Description:

		==========	==============================================
		add		(WO) Write a block device id (major:minor) to
				create a new pktcdvd device and map it to the
				block device.

		remove		(WO) Write the pktcdvd device id (major:minor)
				to remove the pktcdvd device.

		device_map	(RO) Shows the device mapping in format:
				pktcdvd[0-7] <pktdevid> <blkdevid>
		==========	==============================================


What:		/sys/class/pktcdvd/pktcdvd[0-7]/dev
What:		/sys/class/pktcdvd/pktcdvd[0-7]/uevent
Date:		Oct. 2006
KernelVersion:	2.6.20
Contact:	Thomas Maier <balagi@justmail.de>
Description:
		dev:	(RO) Device id

		uevent:	(WO) To send a uevent


What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_started
What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/packets_finished
What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_written
What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read
What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/kb_read_gather
What:		/sys/class/pktcdvd/pktcdvd[0-7]/stat/reset
Date:		Oct. 2006
KernelVersion:	2.6.20
Contact:	Thomas Maier <balagi@justmail.de>
Description:
		packets_started:	(RO) Number of started packets.

		packets_finished:	(RO) Number of finished packets.

		kb_written:		(RO) kBytes written.

		kb_read:		(RO) kBytes read.

		kb_read_gather:		(RO) kBytes read to fill write packets.

		reset:			(WO) Write any value to it to reset
					pktcdvd device statistic values, like
					bytes read/written.


What:		/sys/class/pktcdvd/pktcdvd[0-7]/write_queue/size
What:		/sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_off
What:		/sys/class/pktcdvd/pktcdvd[0-7]/write_queue/congestion_on
Date:		Oct. 2006
KernelVersion:	2.6.20
Contact:	Thomas Maier <balagi@justmail.de>
Description:
		==============	================================================
		size		(RO) Contains the size of the bio write queue.

		congestion_off	(RW) If bio write queue size is below this mark,
				accept new bio requests from the block layer.

		congestion_on	(RW) If bio write queue size is higher as this
				mark, do no longer accept bio write requests
				from the block layer and wait till the pktcdvd
				device has processed enough bio's so that bio
				write queue size is below congestion off mark.
				A value of <= 0 disables congestion control.
		==============	================================================


Example:
--------
To use the pktcdvd sysfs interface directly, you can do::

    # create a new pktcdvd device mapped to /dev/hdc
    echo "22:0" >/sys/class/pktcdvd/add
    cat /sys/class/pktcdvd/device_map
    # assuming device pktcdvd0 was created, look at stat's
    cat /sys/class/pktcdvd/pktcdvd0/stat/kb_written
    # print the device id of the mapped block device
    fgrep pktcdvd0 /sys/class/pktcdvd/device_map
    # remove device, using pktcdvd0 device id   253:0
    echo "253:0" >/sys/class/pktcdvd/remove
