Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
target_core_backend.h
Go to the documentation of this file.
1 #ifndef TARGET_CORE_BACKEND_H
2 #define TARGET_CORE_BACKEND_H
3 
4 #define TRANSPORT_PLUGIN_PHBA_PDEV 1
5 #define TRANSPORT_PLUGIN_VHBA_PDEV 2
6 #define TRANSPORT_PLUGIN_VHBA_VDEV 3
7 
10 
11  char name[16];
12  struct module *owner;
13 
15 
16  int (*attach_hba)(struct se_hba *, u32);
17  void (*detach_hba)(struct se_hba *);
18  int (*pmode_enable_hba)(struct se_hba *, unsigned long);
19  void *(*allocate_virtdevice)(struct se_hba *, const char *);
20  struct se_device *(*create_virtdevice)(struct se_hba *,
21  struct se_subsystem_dev *, void *);
22  void (*free_device)(void *);
24  struct scatterlist *,
25  unsigned char *);
26 
27  int (*parse_cdb)(struct se_cmd *cmd);
29  struct se_subsystem_dev *);
31  struct se_subsystem_dev *, const char *, ssize_t);
33  struct se_subsystem_dev *, char *);
37  unsigned char *(*get_sense_buffer)(struct se_cmd *);
38 };
39 
40 struct spc_ops {
41  int (*execute_rw)(struct se_cmd *cmd);
44  int (*execute_unmap)(struct se_cmd *cmd);
45 };
46 
49 
51  struct se_subsystem_api *, struct se_subsystem_dev *, u32,
52  void *, struct se_dev_limits *, const char *, const char *);
53 
54 void target_complete_cmd(struct se_cmd *, u8);
55 
56 int sbc_parse_cdb(struct se_cmd *cmd, struct spc_ops *ops);
57 int spc_parse_cdb(struct se_cmd *cmd, unsigned int *size);
59 
60 void transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *);
61 int transport_set_vpd_assoc(struct t10_vpd *, unsigned char *);
62 int transport_set_vpd_ident_type(struct t10_vpd *, unsigned char *);
63 int transport_set_vpd_ident(struct t10_vpd *, unsigned char *);
64 
65 /* core helpers also used by command snooping in pscsi */
66 void *transport_kmap_data_sg(struct se_cmd *);
67 void transport_kunmap_data_sg(struct se_cmd *);
68 
69 void array_free(void *array, int n);
70 
71 #endif /* TARGET_CORE_BACKEND_H */