72 lines · 1.5 KB · C
RawDownload
/* * loop.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_LOOP_H#define _LINUX_LOOP_H #include <linux/bio.h>#include <linux/blkdev.h>#include <linux/blk-mq.h>#include <linux/spinlock.h>#include <linux/mutex.h>#include <uapi/linux/loop.h> /* Possible states of device */enum {	Lo_unbound,	Lo_bound,	Lo_rundown,	Lo_deleting,}; struct loop_func_table; struct loop_device {	int		lo_number;	atomic_t	lo_refcnt;	loff_t		lo_offset;	loff_t		lo_sizelimit;	int		lo_flags;	char		lo_file_name[LO_NAME_SIZE]; 	struct file *	lo_backing_file;	struct block_device *lo_device; 	gfp_t		old_gfp_mask; 	spinlock_t		lo_lock;	int			lo_state;	spinlock_t              lo_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	*lo_queue;	struct blk_mq_tag_set	tag_set;	struct gendisk		*lo_disk;	struct mutex		lo_mutex;	bool			idr_visible;}; struct loop_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;}; #endif