cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

target_core_internal.h (7073B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef TARGET_CORE_INTERNAL_H
      3#define TARGET_CORE_INTERNAL_H
      4
      5#include <linux/configfs.h>
      6#include <linux/list.h>
      7#include <linux/types.h>
      8#include <target/target_core_base.h>
      9
     10#define TARGET_CORE_NAME_MAX_LEN	64
     11#define TARGET_FABRIC_NAME_SIZE		32
     12
     13struct target_backend {
     14	struct list_head list;
     15
     16	const struct target_backend_ops *ops;
     17
     18	struct config_item_type tb_dev_cit;
     19	struct config_item_type tb_dev_attrib_cit;
     20	struct config_item_type tb_dev_action_cit;
     21	struct config_item_type tb_dev_pr_cit;
     22	struct config_item_type tb_dev_wwn_cit;
     23	struct config_item_type tb_dev_alua_tg_pt_gps_cit;
     24	struct config_item_type tb_dev_stat_cit;
     25};
     26
     27struct target_fabric_configfs {
     28	atomic_t		tf_access_cnt;
     29	struct list_head	tf_list;
     30	struct config_group	tf_group;
     31	struct config_group	tf_disc_group;
     32	const struct target_core_fabric_ops *tf_ops;
     33
     34	struct config_item_type tf_discovery_cit;
     35	struct config_item_type	tf_wwn_cit;
     36	struct config_item_type tf_wwn_fabric_stats_cit;
     37	struct config_item_type tf_wwn_param_cit;
     38	struct config_item_type tf_tpg_cit;
     39	struct config_item_type tf_tpg_base_cit;
     40	struct config_item_type tf_tpg_lun_cit;
     41	struct config_item_type tf_tpg_port_cit;
     42	struct config_item_type tf_tpg_port_stat_cit;
     43	struct config_item_type tf_tpg_np_cit;
     44	struct config_item_type tf_tpg_np_base_cit;
     45	struct config_item_type tf_tpg_attrib_cit;
     46	struct config_item_type tf_tpg_auth_cit;
     47	struct config_item_type tf_tpg_param_cit;
     48	struct config_item_type tf_tpg_nacl_cit;
     49	struct config_item_type tf_tpg_nacl_base_cit;
     50	struct config_item_type tf_tpg_nacl_attrib_cit;
     51	struct config_item_type tf_tpg_nacl_auth_cit;
     52	struct config_item_type tf_tpg_nacl_param_cit;
     53	struct config_item_type tf_tpg_nacl_stat_cit;
     54	struct config_item_type tf_tpg_mappedlun_cit;
     55	struct config_item_type tf_tpg_mappedlun_stat_cit;
     56};
     57
     58/* target_core_alua.c */
     59extern struct t10_alua_lu_gp *default_lu_gp;
     60
     61/* target_core_device.c */
     62int	core_alloc_rtpi(struct se_lun *lun, struct se_device *dev);
     63struct se_dev_entry *core_get_se_deve_from_rtpi(struct se_node_acl *, u16);
     64void	target_pr_kref_release(struct kref *);
     65void	core_free_device_list_for_node(struct se_node_acl *,
     66		struct se_portal_group *);
     67void	core_update_device_list_access(u64, bool, struct se_node_acl *);
     68struct se_dev_entry *target_nacl_find_deve(struct se_node_acl *, u64);
     69int	core_enable_device_list_for_node(struct se_lun *, struct se_lun_acl *,
     70		u64, bool, struct se_node_acl *, struct se_portal_group *);
     71void	core_disable_device_list_for_node(struct se_lun *, struct se_dev_entry *,
     72		struct se_node_acl *, struct se_portal_group *);
     73void	core_clear_lun_from_tpg(struct se_lun *, struct se_portal_group *);
     74int	core_dev_add_lun(struct se_portal_group *, struct se_device *,
     75		struct se_lun *lun);
     76void	core_dev_del_lun(struct se_portal_group *, struct se_lun *);
     77struct se_lun_acl *core_dev_init_initiator_node_lun_acl(struct se_portal_group *,
     78		struct se_node_acl *, u64, int *);
     79int	core_dev_add_initiator_node_lun_acl(struct se_portal_group *,
     80		struct se_lun_acl *, struct se_lun *lun, bool);
     81int	core_dev_del_initiator_node_lun_acl(struct se_lun *,
     82		struct se_lun_acl *);
     83void	core_dev_free_initiator_node_lun_acl(struct se_portal_group *,
     84		struct se_lun_acl *lacl);
     85int	core_dev_setup_virtual_lun0(void);
     86void	core_dev_release_virtual_lun0(void);
     87struct se_device *target_alloc_device(struct se_hba *hba, const char *name);
     88int	target_configure_device(struct se_device *dev);
     89void	target_free_device(struct se_device *);
     90int	target_for_each_device(int (*fn)(struct se_device *dev, void *data),
     91			       void *data);
     92
     93/* target_core_configfs.c */
     94extern struct configfs_item_operations target_core_dev_item_ops;
     95void	target_setup_backend_cits(struct target_backend *);
     96
     97/* target_core_fabric_configfs.c */
     98int	target_fabric_setup_cits(struct target_fabric_configfs *);
     99
    100/* target_core_fabric_lib.c */
    101int	target_get_pr_transport_id_len(struct se_node_acl *nacl,
    102		struct t10_pr_registration *pr_reg, int *format_code);
    103int	target_get_pr_transport_id(struct se_node_acl *nacl,
    104		struct t10_pr_registration *pr_reg, int *format_code,
    105		unsigned char *buf);
    106const char *target_parse_pr_out_transport_id(struct se_portal_group *tpg,
    107		char *buf, u32 *out_tid_len, char **port_nexus_ptr);
    108
    109/* target_core_hba.c */
    110struct se_hba *core_alloc_hba(const char *, u32, u32);
    111int	core_delete_hba(struct se_hba *);
    112
    113/* target_core_tmr.c */
    114void	core_tmr_abort_task(struct se_device *, struct se_tmr_req *,
    115			struct se_session *);
    116int	core_tmr_lun_reset(struct se_device *, struct se_tmr_req *,
    117		struct list_head *, struct se_cmd *);
    118
    119/* target_core_tpg.c */
    120extern struct se_device *g_lun0_dev;
    121
    122struct se_node_acl *__core_tpg_get_initiator_node_acl(struct se_portal_group *tpg,
    123		const char *);
    124void	core_tpg_add_node_to_devs(struct se_node_acl *, struct se_portal_group *,
    125				  struct se_lun *);
    126void	core_tpg_wait_for_nacl_pr_ref(struct se_node_acl *);
    127struct se_lun *core_tpg_alloc_lun(struct se_portal_group *, u64);
    128int	core_tpg_add_lun(struct se_portal_group *, struct se_lun *,
    129		bool, struct se_device *);
    130void core_tpg_remove_lun(struct se_portal_group *, struct se_lun *);
    131struct se_node_acl *core_tpg_add_initiator_node_acl(struct se_portal_group *tpg,
    132		const char *initiatorname);
    133void core_tpg_del_initiator_node_acl(struct se_node_acl *acl);
    134
    135/* target_core_transport.c */
    136extern struct kmem_cache *se_tmr_req_cache;
    137
    138int	init_se_kmem_caches(void);
    139void	release_se_kmem_caches(void);
    140u32	scsi_get_new_index(scsi_index_t);
    141void	transport_subsystem_check_init(void);
    142void	transport_uninit_session(struct se_session *);
    143unsigned char *transport_dump_cmd_direction(struct se_cmd *);
    144void	transport_dump_dev_state(struct se_device *, char *, int *);
    145void	transport_dump_dev_info(struct se_device *, struct se_lun *,
    146		unsigned long long, char *, int *);
    147void	transport_dump_vpd_proto_id(struct t10_vpd *, unsigned char *, int);
    148int	transport_dump_vpd_assoc(struct t10_vpd *, unsigned char *, int);
    149int	transport_dump_vpd_ident_type(struct t10_vpd *, unsigned char *, int);
    150int	transport_dump_vpd_ident(struct t10_vpd *, unsigned char *, int);
    151void	transport_clear_lun_ref(struct se_lun *);
    152sense_reason_t	target_cmd_size_check(struct se_cmd *cmd, unsigned int size);
    153void	target_qf_do_work(struct work_struct *work);
    154void	target_do_delayed_work(struct work_struct *work);
    155bool	target_check_wce(struct se_device *dev);
    156bool	target_check_fua(struct se_device *dev);
    157void	__target_execute_cmd(struct se_cmd *, bool);
    158void	target_queued_submit_work(struct work_struct *work);
    159
    160/* target_core_stat.c */
    161void	target_stat_setup_dev_default_groups(struct se_device *);
    162void	target_stat_setup_port_default_groups(struct se_lun *);
    163void	target_stat_setup_mappedlun_default_groups(struct se_lun_acl *);
    164
    165/* target_core_xcopy.c */
    166extern struct se_portal_group xcopy_pt_tpg;
    167
    168/* target_core_configfs.c */
    169#define DB_ROOT_LEN		4096
    170#define	DB_ROOT_DEFAULT		"/var/target"
    171#define	DB_ROOT_PREFERRED	"/etc/target"
    172
    173extern char db_root[];
    174
    175#endif /* TARGET_CORE_INTERNAL_H */