Blame view

include/target/target_core_backend.h 4.62 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  /* SPDX-License-Identifier: GPL-2.0 */
c4795fb20   Christoph Hellwig   target: header re...
2
3
  #ifndef TARGET_CORE_BACKEND_H
  #define TARGET_CORE_BACKEND_H
8dcf07be2   Bart Van Assche   target: Minimize ...
4
  #include <linux/types.h>
a85d667e5   Bart Van Assche   target: Use {get,...
5
  #include <asm/unaligned.h>
8dcf07be2   Bart Van Assche   target: Minimize ...
6
  #include <target/target_core_base.h>
530c6891b   Mike Christie   target: allow ALU...
7
8
9
10
11
12
  #define TRANSPORT_FLAG_PASSTHROUGH		0x1
  /*
   * ALUA commands, state checks and setup operations are handled by the
   * backend module.
   */
  #define TRANSPORT_FLAG_PASSTHROUGH_ALUA		0x2
4ec5bf0ea   Bryant G. Ly   target/user: PGR ...
13
  #define TRANSPORT_FLAG_PASSTHROUGH_PGR          0x4
c4795fb20   Christoph Hellwig   target: header re...
14

8dcf07be2   Bart Van Assche   target: Minimize ...
15
16
  struct request_queue;
  struct scatterlist;
0a06d4309   Christoph Hellwig   target: simplify ...
17
  struct target_backend_ops {
c4795fb20   Christoph Hellwig   target: header re...
18
  	char name[16];
0fd97ccf4   Christoph Hellwig   target: kill stru...
19
20
  	char inquiry_prod[16];
  	char inquiry_rev[4];
c4795fb20   Christoph Hellwig   target: header re...
21
  	struct module *owner;
69088a049   Bodo Stroesser   scsi: target: Mak...
22
  	u8 transport_flags_default;
356ba2a8b   Bodo Stroesser   scsi: target: tcm...
23
  	u8 transport_flags_changeable;
c4795fb20   Christoph Hellwig   target: header re...
24

c4795fb20   Christoph Hellwig   target: header re...
25
26
27
  	int (*attach_hba)(struct se_hba *, u32);
  	void (*detach_hba)(struct se_hba *);
  	int (*pmode_enable_hba)(struct se_hba *, unsigned long);
0fd97ccf4   Christoph Hellwig   target: kill stru...
28
29
30
  
  	struct se_device *(*alloc_device)(struct se_hba *, const char *);
  	int (*configure_device)(struct se_device *);
926347061   Mike Christie   target: break up ...
31
  	void (*destroy_device)(struct se_device *);
0fd97ccf4   Christoph Hellwig   target: kill stru...
32
33
34
35
36
  	void (*free_device)(struct se_device *device);
  
  	ssize_t (*set_configfs_dev_params)(struct se_device *,
  					   const char *, ssize_t);
  	ssize_t (*show_configfs_dev_params)(struct se_device *, char *);
de103c93a   Christoph Hellwig   target: pass sens...
37
  	sense_reason_t (*parse_cdb)(struct se_cmd *cmd);
2e45a1a9c   Bodo Stroesser   scsi: target: Add...
38
39
  	void (*tmr_notify)(struct se_device *se_dev, enum tcm_tmreq_table,
  			   struct list_head *aborted_cmds);
c4795fb20   Christoph Hellwig   target: header re...
40
41
  	u32 (*get_device_type)(struct se_device *);
  	sector_t (*get_blocks)(struct se_device *);
7f7caf6aa   Andy Grover   target: Pass thro...
42
43
44
45
46
  	sector_t (*get_alignment_offset_lbas)(struct se_device *);
  	/* lbppbe = logical blocks per physical block exponent. see SBC-3 */
  	unsigned int (*get_lbppbe)(struct se_device *);
  	unsigned int (*get_io_min)(struct se_device *);
  	unsigned int (*get_io_opt)(struct se_device *);
5787cacd0   Christoph Hellwig   target: remove st...
47
  	unsigned char *(*get_sense_buffer)(struct se_cmd *);
d0c8b259f   Nicholas Bellinger   target/iblock: Us...
48
  	bool (*get_write_cache)(struct se_device *);
ce65e5b97   Nicholas Bellinger   target: Add DIF r...
49
50
51
  	int (*init_prot)(struct se_device *);
  	int (*format_prot)(struct se_device *);
  	void (*free_prot)(struct se_device *);
73112edca   Nicholas Bellinger   target: Move dev_...
52

0a06d4309   Christoph Hellwig   target: simplify ...
53
  	struct configfs_attribute **tb_dev_attrib_attrs;
8dc31ff92   Mike Christie   target core: add ...
54
  	struct configfs_attribute **tb_dev_action_attrs;
c4795fb20   Christoph Hellwig   target: header re...
55
  };
9e999a6c5   Christoph Hellwig   target: rename sp...
56
  struct sbc_ops {
a82a9538d   Nicholas Bellinger   target: Allow sbc...
57
58
  	sense_reason_t (*execute_rw)(struct se_cmd *cmd, struct scatterlist *,
  				     u32, enum dma_data_direction);
de103c93a   Christoph Hellwig   target: pass sens...
59
60
  	sense_reason_t (*execute_sync_cache)(struct se_cmd *cmd);
  	sense_reason_t (*execute_write_same)(struct se_cmd *cmd);
62e469425   Christoph Hellwig   target: simplify ...
61
62
  	sense_reason_t (*execute_unmap)(struct se_cmd *cmd,
  				sector_t lba, sector_t nolb);
0c2ad7d11   Christoph Hellwig   target: add struc...
63
  };
0a06d4309   Christoph Hellwig   target: simplify ...
64
65
  int	transport_backend_register(const struct target_backend_ops *);
  void	target_backend_unregister(const struct target_backend_ops *);
c4795fb20   Christoph Hellwig   target: header re...
66

6bb35e009   Christoph Hellwig   target: replace -...
67
  void	target_complete_cmd(struct se_cmd *, u8);
2426bd456   Roland Dreier   target: Report co...
68
  void	target_complete_cmd_with_length(struct se_cmd *, u8, int);
c4795fb20   Christoph Hellwig   target: header re...
69

c6d66aba9   Mike Christie   target: add helpe...
70
  void	transport_copy_sense_to_cmd(struct se_cmd *, unsigned char *);
de103c93a   Christoph Hellwig   target: pass sens...
71
72
  sense_reason_t	spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
  sense_reason_t	spc_emulate_report_luns(struct se_cmd *cmd);
0dfa1c5da   Hannes Reinecke   target: Export SP...
73
74
  sense_reason_t	spc_emulate_inquiry_std(struct se_cmd *, unsigned char *);
  sense_reason_t	spc_emulate_evpd_83(struct se_cmd *, unsigned char *);
d6e0175cf   Christoph Hellwig   target: add a par...
75

de103c93a   Christoph Hellwig   target: pass sens...
76
  sense_reason_t	sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops);
6f23ac8a3   Christoph Hellwig   target: provide g...
77
78
  u32	sbc_get_device_rev(struct se_device *dev);
  u32	sbc_get_device_type(struct se_device *dev);
972b29c8f   Roland Dreier   target: Rename sp...
79
  sector_t	sbc_get_write_same_sectors(struct se_cmd *cmd);
66a3d5bc4   Nicholas Bellinger   target/sbc: Add s...
80
  void	sbc_dif_generate(struct se_cmd *);
f75b6fae1   Sagi Grimberg   target: Merge sbc...
81
  sense_reason_t	sbc_dif_verify(struct se_cmd *, sector_t, unsigned int,
41861fa83   Nicholas Bellinger   target/sbc: Add D...
82
  				     unsigned int, struct scatterlist *, int);
f75b6fae1   Sagi Grimberg   target: Merge sbc...
83
84
  void sbc_dif_copy_prot(struct se_cmd *, unsigned int, bool,
  		       struct scatterlist *, int);
c4795fb20   Christoph Hellwig   target: header re...
85
86
87
88
  void	transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *);
  int	transport_set_vpd_assoc(struct t10_vpd *, unsigned char *);
  int	transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *);
  int	transport_set_vpd_ident(struct t10_vpd *, unsigned char *);
5873c4d15   Christoph Hellwig   target: consolida...
89
90
  extern struct configfs_attribute *sbc_attrib_attrs[];
  extern struct configfs_attribute *passthrough_attrib_attrs[];
4703b6252   Bodo Stroesser   scsi: target: tcm...
91
  extern struct configfs_attribute *passthrough_pr_attrib_attrs[];
5873c4d15   Christoph Hellwig   target: consolida...
92

c4795fb20   Christoph Hellwig   target: header re...
93
  /* core helpers also used by command snooping in pscsi */
4949314c7   Andy Grover   target: Allow con...
94
95
  void	*transport_kmap_data_sg(struct se_cmd *);
  void	transport_kunmap_data_sg(struct se_cmd *);
c5ff8d6bc   Nicholas Bellinger   target: Make help...
96
  /* core helpers also used by xcopy during internal command setup */
c5ff8d6bc   Nicholas Bellinger   target: Make help...
97
98
  sense_reason_t	transport_generic_map_mem_to_cmd(struct se_cmd *,
  		struct scatterlist *, u32, struct scatterlist *, u32);
c4795fb20   Christoph Hellwig   target: header re...
99

29a05deeb   Nicholas Bellinger   target: Convert s...
100
  bool	target_lun_is_rdonly(struct se_cmd *);
7bfea53b5   Andy Grover   target: Move pass...
101
102
  sense_reason_t passthrough_parse_cdb(struct se_cmd *cmd,
  	sense_reason_t (*exec_cmd)(struct se_cmd *cmd));
d30cd1238   Nicholas Bellinger   target: Add EXPOR...
103

4e4937e8a   Sagi Grimberg   target: Return de...
104
  bool target_sense_desc_format(struct se_device *dev);
8a9ebe717   Mike Christie   target: Fix WRITE...
105
106
  sector_t target_to_linux_sector(struct se_device *dev, sector_t lb);
  bool target_configure_unmap_from_queue(struct se_dev_attrib *attrib,
ea263c7fa   Mike Christie   target: Fix max_u...
107
  				       struct request_queue *q);
4e4937e8a   Sagi Grimberg   target: Return de...
108

cb0f32e12   Mike Christie   scsi: target: add...
109
110
111
112
  static inline bool target_dev_configured(struct se_device *se_dev)
  {
  	return !!(se_dev->dev_flags & DF_CONFIGURED);
  }
a85d667e5   Bart Van Assche   target: Use {get,...
113

c4795fb20   Christoph Hellwig   target: header re...
114
  #endif /* TARGET_CORE_BACKEND_H */