These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / block / loop.h
index 49564ed..fb2237c 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/blk-mq.h>
 #include <linux/spinlock.h>
 #include <linux/mutex.h>
-#include <linux/workqueue.h>
+#include <linux/kthread.h>
 #include <uapi/linux/loop.h>
 
 /* Possible states of device */
@@ -28,7 +28,7 @@ struct loop_func_table;
 
 struct loop_device {
        int             lo_number;
-       int             lo_refcnt;
+       atomic_t        lo_refcnt;
        loff_t          lo_offset;
        loff_t          lo_sizelimit;
        int             lo_flags;
@@ -54,12 +54,11 @@ struct loop_device {
        gfp_t           old_gfp_mask;
 
        spinlock_t              lo_lock;
-       struct workqueue_struct *wq;
-       struct list_head        write_cmd_head;
-       struct work_struct      write_work;
-       bool                    write_started;
        int                     lo_state;
        struct mutex            lo_ctl_mutex;
+       struct kthread_worker   worker;
+       struct task_struct      *worker_task;
+       bool                    use_dio;
 
        struct request_queue    *lo_queue;
        struct blk_mq_tag_set   tag_set;
@@ -67,9 +66,11 @@ struct loop_device {
 };
 
 struct loop_cmd {
-       struct work_struct read_work;
+       struct kthread_work work;
        struct request *rq;
        struct list_head list;
+       bool use_aio;           /* use AIO interface to handle I/O */
+       struct kiocb iocb;
 };
 
 /* Support for loadable transfer modules */