From 81ceb082ce7b9bfb5fbe024b56a2ffa827ec19d2 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 11 Feb 2022 15:26:46 +0100 Subject: Split xloop_main into separate files for pre-5.15 and 5.15+ --- src/kernel/xloop_main.h | 112 +++--------------------------------------------- 1 file changed, 5 insertions(+), 107 deletions(-) (limited to 'src/kernel/xloop_main.h') 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 -#include -#include -#include -#include -#include "uapi_xloop.h" -#ifdef CONFIG_DEBUG_FS -#include -#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 +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0) +#include "xloop_main_4.18.h" +#else +#include "xloop_main_5.15.h" #endif -- cgit v1.2.3-55-g7522