summaryrefslogtreecommitdiffstats
path: root/src/kernel/xloop_main.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/xloop_main.h')
-rw-r--r--src/kernel/xloop_main.h112
1 files changed, 5 insertions, 107 deletions
diff --git a/src/kernel/xloop_main.h b/src/kernel/xloop_main.h
index 4126460..c1cc919 100644
--- a/src/kernel/xloop_main.h
+++ b/src/kernel/xloop_main.h
@@ -1,109 +1,7 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * loop_main.h
- *
- * Written by Theodore Ts'o, 3/29/93.
- *
- * Copyright 1993 by Theodore Ts'o. Redistribution of this file is
- * permitted under the GNU General Public License.
- */
-#ifndef _LINUX_XLOOP_H
-#define _LINUX_XLOOP_H
-
-#include <linux/bio.h>
-#include <linux/blkdev.h>
-#include <linux/blk-mq.h>
-#include <linux/spinlock.h>
-#include <linux/mutex.h>
-#include "uapi_xloop.h"
-#ifdef CONFIG_DEBUG_FS
-#include <linux/debugfs.h>
-#endif
-
-#include "xloop_file_fmt.h"
-
-/* Possible states of device */
-enum {
- Xlo_unbound,
- Xlo_bound,
- Xlo_rundown,
- Xlo_deleting,
-};
-
-struct xloop_func_table;
-
-struct xloop_device {
- int xlo_number;
- atomic_t xlo_refcnt;
- loff_t xlo_offset;
- loff_t xlo_sizelimit;
- int xlo_flags;
- int (*transfer)(struct xloop_device *xlo, int cmd, struct page *raw_page, unsigned raw_off, struct page *xloop_page, unsigned xloop_off, int size, sector_t real_block);
- char xlo_file_name[XLO_NAME_SIZE];
- char xlo_crypt_name[XLO_NAME_SIZE];
- char xlo_encrypt_key[XLO_KEY_SIZE];
- int xlo_encrypt_key_size;
- struct xloop_func_table *xlo_encryption;
- __u32 xlo_init[2];
- kuid_t xlo_key_owner; /* Who set the key */
- int (*ioctl)(struct xloop_device *xlo, int cmd, unsigned long arg);
-
- struct xloop_file_fmt *xlo_fmt;
-
- struct file *xlo_backing_file;
- struct block_device *xlo_device;
- void *key_data;
-
- gfp_t old_gfp_mask;
-
- spinlock_t xlo_lock;
- int xlo_state;
- spinlock_t xlo_work_lock;
- struct workqueue_struct *workqueue;
- struct work_struct rootcg_work;
- struct list_head rootcg_cmd_list;
- struct list_head idle_worker_list;
- struct rb_root worker_tree;
- struct timer_list timer;
- bool use_dio;
- bool sysfs_inited;
-
- struct request_queue *xlo_queue;
- struct blk_mq_tag_set tag_set;
- struct gendisk *xlo_disk;
- struct mutex xlo_mutex;
- bool idr_visible;
-
-#ifdef CONFIG_DEBUG_FS
- struct dentry *xlo_dbgfs_dir;
-#endif
-};
-
-struct xloop_cmd {
- struct list_head list_entry;
- bool use_aio; /* use AIO interface to handle I/O */
- atomic_t ref; /* only for aio */
- long ret;
- struct kiocb iocb;
- struct bio_vec *bvec;
- struct cgroup_subsys_state *blkcg_css;
- struct cgroup_subsys_state *memcg_css;
-};
-
-/* Support for loadable transfer modules */
-struct xloop_func_table {
- int number; /* filter type */
- int (*transfer)(struct xloop_device *xlo, int cmd, struct page *raw_page, unsigned raw_off, struct page *xloop_page, unsigned xloop_off, int size, sector_t real_block);
- int (*init)(struct xloop_device *xlo, const struct xloop_info64 *info);
- /* release is called from xloop_unregister_transfer or clr_fd */
- int (*release)(struct xloop_device *xlo);
- int (*ioctl)(struct xloop_device *xlo, int cmd, unsigned long arg);
- struct module *owner;
-};
-
-extern inline struct device *xloop_device_to_dev(struct xloop_device *xlo);
-
-int xloop_register_transfer(struct xloop_func_table *funcs);
-int xloop_unregister_transfer(int number);
+#include <linux/version.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0)
+#include "xloop_main_4.18.h"
+#else
+#include "xloop_main_5.15.h"
#endif