blob: 929b1ecd544ee0ffb84973b64867a3dabb8a2f45 [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -08002#ifndef TARGET_CORE_FILE_H
3#define TARGET_CORE_FILE_H
4
Bart Van Assche8dcf07b2016-11-14 15:47:14 -08005#include <target/target_core_base.h>
6
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -08007#define FD_VERSION "4.0"
8
9#define FD_MAX_DEV_NAME 256
Nicholas Bellinger0f5e2ec2014-01-18 09:32:56 +000010#define FD_MAX_DEV_PROT_NAME FD_MAX_DEV_NAME + 16
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080011#define FD_DEVICE_QUEUE_DEPTH 32
12#define FD_MAX_DEVICE_QUEUE_DEPTH 128
13#define FD_BLOCKSIZE 512
Nicholas Bellinger95cadac2013-12-12 12:24:11 -080014/*
15 * Limited by the number of iovecs (2048) per vfs_[writev,readv] call
16 */
17#define FD_MAX_BYTES 8388608
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080018
19#define RRF_EMULATE_CDB 0x01
20#define RRF_GOT_LBA 0x02
21
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080022#define FBDF_HAS_PATH 0x01
23#define FBDF_HAS_SIZE 0x02
Nicholas Bellingerb32f4c72012-09-29 17:15:37 -070024#define FDBD_HAS_BUFFERED_IO_WCE 0x04
Andrei Vagin769031c2018-03-21 23:55:02 -070025#define FDBD_HAS_ASYNC_IO 0x08
Nicholas Bellinger0f5e2ec2014-01-18 09:32:56 +000026#define FDBD_FORMAT_UNIT_SIZE 2048
27
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080028struct fd_dev {
Christoph Hellwig0fd97cc2012-10-08 00:03:19 -040029 struct se_device dev;
30
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080031 u32 fbd_flags;
32 unsigned char fd_dev_name[FD_MAX_DEV_NAME];
33 /* Unique Ramdisk Device ID in Ramdisk HBA */
34 u32 fd_dev_id;
35 /* Number of SG tables in sg_table_array */
36 u32 fd_table_count;
37 u32 fd_queue_depth;
38 u32 fd_block_size;
39 unsigned long long fd_dev_size;
40 struct file *fd_file;
Nicholas Bellinger0f5e2ec2014-01-18 09:32:56 +000041 struct file *fd_prot_file;
Nicholas Bellingerc66ac9d2010-12-17 11:11:26 -080042 /* FILEIO HBA device is connected to */
43 struct fd_host *fd_host;
44} ____cacheline_aligned;
45
46struct fd_host {
47 u32 fd_host_dev_id_count;
48 /* Unique FILEIO Host ID */
49 u32 fd_host_id;
50} ____cacheline_aligned;
51
52#endif /* TARGET_CORE_FILE_H */