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: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Greg Kroah-Hartman 2009-10-08 11:32:31 -07:00
parent 7d230df37a
commit 999b9da40e
7 changed files with 0 additions and 2939 deletions

View File

@ -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

View File

@ -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/

View File

@ -1,16 +0,0 @@
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/

View File

@ -1 +0,0 @@
obj-$(CONFIG_COWLOOP) += cowloop.o

View File

@ -1,11 +0,0 @@
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>

File diff suppressed because it is too large Load Diff

View File

@ -1,66 +0,0 @@
/*
** 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)