]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/fuse/fuse_i.h
Merge git://git.infradead.org/mtd-2.6
[mv-sheeva.git] / fs / fuse / fuse_i.h
index f7c74516f3a648297472cb422ad3a91385d761ec..0dbf96621841506f94ed62ae32260fd077ae19d5 100644 (file)
@@ -131,6 +131,7 @@ enum fuse_req_state {
        FUSE_REQ_PENDING,
        FUSE_REQ_READING,
        FUSE_REQ_SENT,
+       FUSE_REQ_WRITING,
        FUSE_REQ_FINISHED
 };
 
@@ -144,9 +145,15 @@ struct fuse_req {
            fuse_conn */
        struct list_head list;
 
+       /** Entry on the interrupts list  */
+       struct list_head intr_entry;
+
        /** refcount */
        atomic_t count;
 
+       /** Unique ID for the interrupt request */
+       u64 intr_unique;
+
        /*
         * The following bitfields are either set once before the
         * request is queued or setting/clearing them is protected by
@@ -159,12 +166,15 @@ struct fuse_req {
        /** Force sending of the request even if interrupted */
        unsigned force:1;
 
-       /** The request was interrupted */
-       unsigned interrupted:1;
+       /** The request was aborted */
+       unsigned aborted:1;
 
        /** Request is sent in the background */
        unsigned background:1;
 
+       /** The request has been interrupted */
+       unsigned interrupted:1;
+
        /** Data is being copied to/from the request */
        unsigned locked:1;
 
@@ -262,6 +272,9 @@ struct fuse_conn {
        /** Number of requests currently in the background */
        unsigned num_background;
 
+       /** Pending interrupts */
+       struct list_head interrupts;
+
        /** Flag indicating if connection is blocked.  This will be
            the case before the INIT reply is received, and if there
            are too many outstading backgrounds requests */
@@ -320,6 +333,9 @@ struct fuse_conn {
        /** Is create not implemented by fs? */
        unsigned no_create : 1;
 
+       /** Is interrupt not implemented by fs? */
+       unsigned no_interrupt : 1;
+
        /** The number of requests waiting for completion */
        atomic_t num_waiting;
 
@@ -343,6 +359,9 @@ struct fuse_conn {
 
        /** O_ASYNC requests */
        struct fasync_struct *fasync;
+
+       /** Key for lock owner ID scrambling */
+       u32 scramble_key[4];
 };
 
 static inline struct fuse_conn *get_fuse_conn_super(struct super_block *sb)