summaryrefslogtreecommitdiff
path: root/drivers/staging/cowloop/cowloop.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/cowloop/cowloop.h')
-rw-r--r--drivers/staging/cowloop/cowloop.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/drivers/staging/cowloop/cowloop.h b/drivers/staging/cowloop/cowloop.h
new file mode 100644
index 000000000000..bbd4a35ac667
--- /dev/null
+++ b/drivers/staging/cowloop/cowloop.h
@@ -0,0 +1,66 @@
+/*
+** 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)