Commit 999b9da4 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

Staging: remove cowloop driver

The author has found a number of problems with the current version
of this driver in the current kernel, and is reworking it to get
things working again.  Because of that, it would be better to remove
the driver now and add it back in a future kernel release.

Cc: H.J. Thomassen <hjt@ATComputing.nl>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 7d230df3
......@@ -127,7 +127,5 @@ source "drivers/staging/sep/Kconfig"
source "drivers/staging/iio/Kconfig"
source "drivers/staging/cowloop/Kconfig"
endif # !STAGING_EXCLUDE_BUILD
endif # STAGING
......@@ -45,4 +45,3 @@ obj-$(CONFIG_VME_BUS) += vme/
obj-$(CONFIG_RAR_REGISTER) += rar/
obj-$(CONFIG_DX_SEP) += sep/
obj-$(CONFIG_IIO) += iio/
obj-$(CONFIG_COWLOOP) += cowloop/
config COWLOOP
tristate "copy-on-write pseudo Block Driver"
depends on BLOCK
default n
---help---
Cowloop is a "copy-on-write" pseudo block driver. It can be
stacked on top of a "real" block driver, and catches all write
operations on their way from the file systems layer above to
the real driver below, effectively shielding the lower driver
from those write accesses. The requests are then diverted to
an ordinary file, located somewhere else (configurable). Later
read requests are checked to see whether they can be serviced
by the "real" block driver below, or must be pulled in from
the diverted location. More information and userspace tools to
use the driver are on the project's website
http://www.ATComputing.nl/cowloop/
obj-$(CONFIG_COWLOOP) += cowloop.o
TODO:
- checkpatch.pl cleanups
- run sparse to ensure clean
- fix up 32/64bit ioctl issues
- move proc file usage to debugfs
- audit ioctls
- add documentation
- get linux-fsdevel to review it
Please send patches to "H.J. Thomassen" <hjt@ATComputing.nl> and
Greg Kroah-Hartman <gregkh@suse.de>
This diff is collapsed.
/*
** DO NOT MODIFY THESE VALUES (would make old cowfiles unusable)
*/
#define MAPUNIT 1024 /* blocksize for bit in bitmap */
#define MUSHIFT 10 /* bitshift for bit in bitmap */
#define MUMASK 0x3ff /* bitmask for bit in bitmap */
#define COWMAGIC 0x574f437f /* byte-swapped '7f C O W' */
#define COWDIRTY 0x01
#define COWPACKED 0x02
#define COWVERSION 1
struct cowhead
{
int magic; /* identifies a cowfile */
short version; /* version of cowhead */
short flags; /* flags indicating status */
unsigned long mapunit; /* blocksize per bit in bitmap */
unsigned long mapsize; /* total size of bitmap (bytes) */
unsigned long doffset; /* start-offset datablocks in cow */
unsigned long rdoblocks; /* size of related read-only file */
unsigned long rdofingerprint; /* fingerprint of read-only file */
unsigned long cowused; /* number of datablocks used in cow */
};
#define COWDEVDIR "/dev/cow/"
#define COWDEVICE COWDEVDIR "%ld"
#define COWCONTROL COWDEVDIR "ctl"
#define MAXCOWS 1024
#define COWCTL (MAXCOWS-1) /* minor number of /dev/cow/ctl */
#define COWPROCDIR "/proc/cow/"
#define COWPROCFILE COWPROCDIR "%d"
/*
** ioctl related stuff
*/
#define ANYDEV ((unsigned long)-1)
struct cowpair
{
unsigned char *rdofile; /* pathname of the rdofile */
unsigned char *cowfile; /* pathname of the cowfile */
unsigned short rdoflen; /* length of rdofile pathname */
unsigned short cowflen; /* length of cowfile pathname */
unsigned long device; /* requested/returned device number */
};
struct cowwatch
{
int flags; /* request flags */
unsigned long device; /* requested device number */
unsigned long threshold; /* continue if free Kb < threshold */
unsigned long totalkb; /* ret: total filesystem size (Kb) */
unsigned long availkb; /* ret: free filesystem size (Kb) */
};
#define WATCHWAIT 0x01 /* block until threshold reached */
#define COWSYNC _IO ('C', 1)
#define COWMKPAIR _IOW ('C', 2, struct cowpair)
#define COWRMPAIR _IOW ('C', 3, unsigned long)
#define COWWATCH _IOW ('C', 4, struct cowwatch)
#define COWCLOSE _IOW ('C', 5, unsigned long)
#define COWRDOPEN _IOW ('C', 6, unsigned long)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment