Mark all functions that scripts/namespace.pl noticed static, and perform a simple garbage collection as second pass. Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: lio-core/drivers/target/target_core_alua.c =================================================================== --- lio-core.orig/drivers/target/target_core_alua.c 2010-11-17 11:01:16.124015508 +0100 +++ lio-core/drivers/target/target_core_alua.c 2010-11-17 22:25:25.592004262 +0100 @@ -41,6 +41,11 @@ #include "target_core_hba.h" #include "target_core_ua.h" +static int core_alua_check_transition(int state, int *primary); +static int core_alua_set_tg_pt_secondary_state( + struct t10_alua_tg_pt_gp_member *tg_pt_gp_mem, + struct se_port *port, int explict, int offline); + /* * REPORT_TARGET_PORT_GROUPS * @@ -434,7 +439,7 @@ static inline int core_alua_state_transi * in transport_cmd_sequencer(). This function is assigned to * struct t10_alua *->state_check() in core_setup_alua() */ -int core_alua_state_check_nop( +static int core_alua_state_check_nop( struct se_cmd *cmd, unsigned char *cdb, u8 *alua_ascq) @@ -454,7 +459,7 @@ int core_alua_state_check_nop( * return 0: Used to signal success * reutrn -1: Used to signal failure, and TGCS_INVALID_CDB_FIELD */ -int core_alua_state_check( +static int core_alua_state_check( struct se_cmd *cmd, unsigned char *cdb, u8 *alua_ascq) @@ -526,7 +531,7 @@ int core_alua_state_check( /* * Check implict and explict ALUA state change request. */ -int core_alua_check_transition(int state, int *primary) +static int core_alua_check_transition(int state, int *primary) { switch (state) { case ALUA_ACCESS_STATE_ACTIVE_OPTMIZED: @@ -554,7 +559,7 @@ int core_alua_check_transition(int state return 0; } -char *core_alua_dump_state(int state) +static char *core_alua_dump_state(int state) { switch (state) { case ALUA_ACCESS_STATE_ACTIVE_OPTMIZED: @@ -620,7 +625,7 @@ EXPORT_SYMBOL(core_alua_check_nonop_dela * Called with tg_pt_gp->tg_pt_gp_md_mutex or tg_pt_gp_mem->sep_tg_pt_md_mutex * */ -int core_alua_write_tpg_metadata( +static int core_alua_write_tpg_metadata( const char *path, unsigned char *md_buf, u32 md_buf_len) @@ -660,7 +665,7 @@ int core_alua_write_tpg_metadata( /* * Called with tg_pt_gp->tg_pt_gp_md_mutex held */ -int core_alua_update_tpg_primary_metadata( +static int core_alua_update_tpg_primary_metadata( struct t10_alua_tg_pt_gp *tg_pt_gp, int primary_state, unsigned char *md_buf) @@ -686,7 +691,7 @@ int core_alua_update_tpg_primary_metadat return core_alua_write_tpg_metadata(path, md_buf, len); } -int core_alua_do_transition_tg_pt( +static int core_alua_do_transition_tg_pt( struct t10_alua_tg_pt_gp *tg_pt_gp, struct se_port *l_port, struct se_node_acl *nacl, @@ -923,7 +928,7 @@ int core_alua_do_port_transition( /* * Called with tg_pt_gp_mem->sep_tg_pt_md_mutex held */ -int core_alua_update_tpg_secondary_metadata( +static int core_alua_update_tpg_secondary_metadata( struct t10_alua_tg_pt_gp_member *tg_pt_gp_mem, struct se_port *port, unsigned char *md_buf, @@ -955,7 +960,7 @@ int core_alua_update_tpg_secondary_metad return core_alua_write_tpg_metadata(path, md_buf, len); } -int core_alua_set_tg_pt_secondary_state( +static int core_alua_set_tg_pt_secondary_state( struct t10_alua_tg_pt_gp_member *tg_pt_gp_mem, struct se_port *port, int explict, @@ -1023,7 +1028,8 @@ int core_alua_set_tg_pt_secondary_state( return 0; } -struct t10_alua_lu_gp *core_alua_allocate_lu_gp(const char *name, int def_group) +struct t10_alua_lu_gp * +core_alua_allocate_lu_gp(const char *name, int def_group) { struct t10_alua_lu_gp *lu_gp; @@ -1093,8 +1099,8 @@ again: return 0; } -struct t10_alua_lu_gp_member *core_alua_allocate_lu_gp_mem( - struct se_device *dev) +static struct t10_alua_lu_gp_member * +core_alua_allocate_lu_gp_mem(struct se_device *dev) { struct t10_alua_lu_gp_member *lu_gp_mem; @@ -1480,7 +1486,7 @@ void core_alua_free_tg_pt_gp_mem(struct kmem_cache_free(t10_alua_tg_pt_gp_mem_cache, tg_pt_gp_mem); } -struct t10_alua_tg_pt_gp *core_alua_get_tg_pt_gp_by_name( +static struct t10_alua_tg_pt_gp *core_alua_get_tg_pt_gp_by_name( struct se_subsystem_dev *su_dev, const char *name) { @@ -1504,7 +1510,7 @@ struct t10_alua_tg_pt_gp *core_alua_get_ return NULL; } -void core_alua_put_tg_pt_gp_from_name( +static void core_alua_put_tg_pt_gp_from_name( struct t10_alua_tg_pt_gp *tg_pt_gp) { struct se_subsystem_dev *su_dev = tg_pt_gp->tg_pt_gp_su_dev; @@ -1533,7 +1539,7 @@ void __core_alua_attach_tg_pt_gp_mem( /* * Called with struct t10_alua_tg_pt_gp_member->tg_pt_gp_mem_lock held */ -void __core_alua_drop_tg_pt_gp_mem( +static void __core_alua_drop_tg_pt_gp_mem( struct t10_alua_tg_pt_gp_member *tg_pt_gp_mem, struct t10_alua_tg_pt_gp *tg_pt_gp) { Index: lio-core/drivers/target/target_core_alua.h =================================================================== --- lio-core.orig/drivers/target/target_core_alua.h 2010-11-17 11:01:16.142255206 +0100 +++ lio-core/drivers/target/target_core_alua.h 2010-11-17 22:25:25.592004262 +0100 @@ -70,22 +70,13 @@ extern struct kmem_cache *t10_alua_tg_pt extern int core_emulate_report_target_port_groups(struct se_cmd *); extern int core_emulate_set_target_port_groups(struct se_cmd *); -extern int core_alua_check_transition(int, int *); extern int core_alua_check_nonop_delay(struct se_cmd *); -extern int core_alua_do_transition_tg_pt(struct t10_alua_tg_pt_gp *, - struct se_port *, struct se_node_acl *, - unsigned char *, int, int); extern int core_alua_do_port_transition(struct t10_alua_tg_pt_gp *, struct se_device *, struct se_port *, struct se_node_acl *, int, int); -extern int core_alua_set_tg_pt_secondary_state( - struct t10_alua_tg_pt_gp_member *, struct se_port *, int, int); -extern char *core_alua_dump_state(int); extern char *core_alua_dump_status(int); extern struct t10_alua_lu_gp *core_alua_allocate_lu_gp(const char *, int); extern int core_alua_set_lu_gp_id(struct t10_alua_lu_gp *, u16); -extern struct t10_alua_lu_gp_member *core_alua_allocate_lu_gp_mem( - struct se_device *); extern void core_alua_free_lu_gp(struct t10_alua_lu_gp *); extern void core_alua_free_lu_gp_mem(struct se_device *); extern struct t10_alua_lu_gp *core_alua_get_lu_gp_by_name(const char *); @@ -102,13 +93,8 @@ extern struct t10_alua_tg_pt_gp_member * struct se_port *); extern void core_alua_free_tg_pt_gp(struct t10_alua_tg_pt_gp *); extern void core_alua_free_tg_pt_gp_mem(struct se_port *); -extern struct t10_alua_tg_pt_gp *core_alua_get_tg_pt_gp_by_name( - struct se_subsystem_dev *, const char *); -extern void core_alua_put_tg_pt_gp_from_name(struct t10_alua_tg_pt_gp *); extern void __core_alua_attach_tg_pt_gp_mem(struct t10_alua_tg_pt_gp_member *, struct t10_alua_tg_pt_gp *); -extern void __core_alua_drop_tg_pt_gp_mem(struct t10_alua_tg_pt_gp_member *, - struct t10_alua_tg_pt_gp *); extern ssize_t core_alua_show_tg_pt_gp_info(struct se_port *, char *); extern ssize_t core_alua_store_tg_pt_gp_info(struct se_port *, const char *, size_t); Index: lio-core/drivers/target/target_core_file.c =================================================================== --- lio-core.orig/drivers/target/target_core_file.c 2010-11-17 22:24:18.000000000 +0100 +++ lio-core/drivers/target/target_core_file.c 2010-11-17 22:25:25.597003564 +0100 @@ -432,12 +432,12 @@ static void fd_emulate_sync_cache(struct * Tell TCM Core that we are capable of WriteCache emulation for * an underlying struct se_device. */ -int fd_emulated_write_cache(struct se_device *dev) +static int fd_emulated_write_cache(struct se_device *dev) { return 1; } -int fd_emulated_dpo(struct se_device *dev) +static int fd_emulated_dpo(struct se_device *dev) { return 0; } @@ -445,12 +445,12 @@ int fd_emulated_dpo(struct se_device *de * Tell TCM Core that we will be emulating Forced Unit Access (FUA) for WRITEs * for TYPE_DISK. */ -int fd_emulated_fua_write(struct se_device *dev) +static int fd_emulated_fua_write(struct se_device *dev) { return 1; } -int fd_emulated_fua_read(struct se_device *dev) +static int fd_emulated_fua_read(struct se_device *dev) { return 0; } Index: lio-core/drivers/target/target_core_iblock.c =================================================================== --- lio-core.orig/drivers/target/target_core_iblock.c 2010-11-17 22:24:18.000000000 +0100 +++ lio-core/drivers/target/target_core_iblock.c 2010-11-17 22:25:25.602004122 +0100 @@ -379,12 +379,12 @@ static void iblock_emulate_sync_cache(st * Tell TCM Core that we are capable of WriteCache emulation for * an underlying struct se_device. */ -int iblock_emulated_write_cache(struct se_device *dev) +static int iblock_emulated_write_cache(struct se_device *dev) { return 1; } -int iblock_emulated_dpo(struct se_device *dev) +static int iblock_emulated_dpo(struct se_device *dev) { return 0; } @@ -393,12 +393,12 @@ int iblock_emulated_dpo(struct se_device * Tell TCM Core that we will be emulating Forced Unit Access (FUA) for WRITEs * for TYPE_DISK. */ -int iblock_emulated_fua_write(struct se_device *dev) +static int iblock_emulated_fua_write(struct se_device *dev) { return 1; } -int iblock_emulated_fua_read(struct se_device *dev) +static int iblock_emulated_fua_read(struct se_device *dev) { return 0; } Index: lio-core/drivers/target/target_core_mib.c =================================================================== --- lio-core.orig/drivers/target/target_core_mib.c 2010-11-17 11:01:16.189267149 +0100 +++ lio-core/drivers/target/target_core_mib.c 2010-11-17 22:25:25.606004052 +0100 @@ -48,7 +48,7 @@ #include "target_core_mib.h" /* SCSI mib table index */ -struct scsi_index_table scsi_index_table; +static struct scsi_index_table scsi_index_table; #ifndef INITIAL_JIFFIES #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ)) Index: lio-core/drivers/target/target_core_pr.c =================================================================== --- lio-core.orig/drivers/target/target_core_pr.c 2010-11-17 11:01:16.207265403 +0100 +++ lio-core/drivers/target/target_core_pr.c 2010-11-17 22:25:25.612004332 +0100 @@ -72,7 +72,7 @@ int core_pr_dump_initiator_port( static void __core_scsi3_complete_pro_release(struct se_device *, struct se_node_acl *, struct t10_pr_registration *, int); -int core_scsi2_reservation_seq_non_holder( +static int core_scsi2_reservation_seq_non_holder( struct se_cmd *cmd, unsigned char *cdb, u32 pr_reg_type) Index: lio-core/drivers/target/target_core_tmr.c =================================================================== --- lio-core.orig/drivers/target/target_core_tmr.c 2010-11-17 11:01:16.223256114 +0100 +++ lio-core/drivers/target/target_core_tmr.c 2010-11-17 22:25:25.620004052 +0100 @@ -69,23 +69,14 @@ struct se_tmr_req *core_tmr_alloc_req( } EXPORT_SYMBOL(core_tmr_alloc_req); -/* - * Called with struct se_device->se_tmr_lock held. - */ -void __core_tmr_release_req( - struct se_tmr_req *tmr) -{ - list_del(&tmr->tmr_list); - kmem_cache_free(se_tmr_req_cache, tmr); -} - void core_tmr_release_req( struct se_tmr_req *tmr) { struct se_device *dev = tmr->tmr_dev; spin_lock(&dev->se_tmr_lock); - __core_tmr_release_req(tmr); + list_del(&tmr->tmr_list); + kmem_cache_free(se_tmr_req_cache, tmr); spin_unlock(&dev->se_tmr_lock); } Index: lio-core/drivers/target/target_core_configfs.c =================================================================== --- lio-core.orig/drivers/target/target_core_configfs.c 2010-11-17 11:01:16.239255695 +0100 +++ lio-core/drivers/target/target_core_configfs.c 2010-11-17 22:25:25.626003564 +0100 @@ -52,8 +52,8 @@ #include "target_core_pr.h" #include "target_core_rd.h" -struct list_head g_tf_list; -struct mutex g_tf_lock; +static struct list_head g_tf_list; +static struct mutex g_tf_lock; struct target_core_configfs_attribute { struct configfs_attribute attr; @@ -61,7 +61,7 @@ struct target_core_configfs_attribute { ssize_t (*store)(void *, const char *, size_t); }; -struct se_hba *target_core_get_hba_from_item( +static struct se_hba *target_core_get_hba_from_item( struct config_item *item) { struct se_hba *hba = container_of(to_config_group(item), @@ -368,25 +368,6 @@ void target_fabric_configfs_free( EXPORT_SYMBOL(target_fabric_configfs_free); /* - * Note that config_group_find_item() calls config_item_get() and grabs the - * reference to the returned struct config_item * - * It will be released with config_put_item() in - * target_fabric_configfs_deregister() - */ -struct config_item *target_fabric_configfs_find_by_name( - struct configfs_subsystem *target_su, - const char *name) -{ - struct config_item *fabric; - - mutex_lock(&target_su->su_mutex); - fabric = config_group_find_item(&target_su->su_group, name); - mutex_unlock(&target_su->su_mutex); - - return fabric; -} - -/* * Perform a sanity check of the passed tf->tf_ops before completing * TCM fabric module registration. */ @@ -3228,7 +3209,7 @@ static struct config_item_type target_co /* Stop functions for struct config_item_type target_core_hba_cit */ -int target_core_init_configfs(void) +static int target_core_init_configfs(void) { struct config_group *target_cg, *hba_cg = NULL, *alua_cg = NULL; struct config_group *lu_gp_cg = NULL; @@ -3372,7 +3353,7 @@ out_global: return -1; } -void target_core_exit_configfs(void) +static void target_core_exit_configfs(void) { struct configfs_subsystem *subsys; struct config_group *hba_cg, *alua_cg, *lu_gp_cg; Index: lio-core/drivers/target/target_core_device.c =================================================================== --- lio-core.orig/drivers/target/target_core_device.c 2010-11-17 11:01:16.255255625 +0100 +++ lio-core/drivers/target/target_core_device.c 2010-11-17 22:25:25.631003633 +0100 @@ -51,8 +51,12 @@ #include "target_core_pr.h" #include "target_core_ua.h" -extern int __transport_get_lun_for_cmd( +static void se_dev_start(struct se_device *dev); +static void se_dev_stop(struct se_device *dev); + +int transport_get_lun_for_cmd( struct se_cmd *se_cmd, + unsigned char *cdb, u32 unpacked_lun) { struct se_dev_entry *deve; @@ -171,8 +175,9 @@ out: return 0; } +EXPORT_SYMBOL(transport_get_lun_for_cmd); -extern int transport_get_lun_for_tmr( +int transport_get_lun_for_tmr( struct se_cmd *se_cmd, u32 unpacked_lun) { @@ -484,7 +489,7 @@ void core_clear_lun_from_tpg(struct se_l return; } -struct se_port *core_alloc_port(struct se_device *dev) +static struct se_port *core_alloc_port(struct se_device *dev) { struct se_port *port, *port_tmp; @@ -536,7 +541,7 @@ again: return port; } -void core_export_port( +static void core_export_port( struct se_device *dev, struct se_portal_group *tpg, struct se_port *port, @@ -578,7 +583,7 @@ void core_export_port( /* * Called with struct se_device->se_port_lock spinlock held. */ -void core_release_port(struct se_device *dev, struct se_port *port) +static void core_release_port(struct se_device *dev, struct se_port *port) { /* * Wait for any port reference for PR ALL_TG_PT=1 operation @@ -769,15 +774,6 @@ void se_release_vpd_for_dev(struct se_de return; } -int transport_get_lun_for_cmd( - struct se_cmd *se_cmd, - unsigned char *cdb, - u32 unpacked_lun) -{ - return __transport_get_lun_for_cmd(se_cmd, unpacked_lun); -} -EXPORT_SYMBOL(transport_get_lun_for_cmd); - /* * Called with struct se_hba->device_lock held. */ @@ -828,7 +824,7 @@ int se_free_virtual_device(struct se_dev return 0; } -void se_dev_start(struct se_device *dev) +static void se_dev_start(struct se_device *dev) { struct se_hba *hba = dev->se_hba; @@ -848,7 +844,7 @@ void se_dev_start(struct se_device *dev) spin_unlock(&hba->device_lock); } -void se_dev_stop(struct se_device *dev) +static void se_dev_stop(struct se_device *dev) { struct se_hba *hba = dev->se_hba; Index: lio-core/include/target/target_core_configfs.h =================================================================== --- lio-core.orig/include/target/target_core_configfs.h 2010-11-17 11:01:16.311006149 +0100 +++ lio-core/include/target/target_core_configfs.h 2010-11-17 22:25:25.634003145 +0100 @@ -7,14 +7,11 @@ extern struct se_global *se_global; -extern struct se_hba *target_core_get_hba_from_item(struct config_item *); extern struct target_fabric_configfs *target_fabric_configfs_init( struct module *, const char *); extern void target_fabric_configfs_free(struct target_fabric_configfs *); extern int target_fabric_configfs_register(struct target_fabric_configfs *); extern void target_fabric_configfs_deregister(struct target_fabric_configfs *); -extern int target_core_init_configfs(void); -extern void target_core_exit_configfs(void); struct target_fabric_configfs_template { struct config_item_type tfc_discovery_cit; Index: lio-core/include/target/target_core_device.h =================================================================== --- lio-core.orig/include/target/target_core_device.h 2010-11-17 11:01:16.330256882 +0100 +++ lio-core/include/target/target_core_device.h 2010-11-17 22:25:25.638004052 +0100 @@ -15,10 +15,6 @@ extern int core_update_device_list_for_n u32, struct se_node_acl *, struct se_portal_group *, int); extern void core_clear_lun_from_tpg(struct se_lun *, struct se_portal_group *); -extern struct se_port *core_alloc_port(struct se_device *); -extern void core_export_port(struct se_device *, struct se_portal_group *, - struct se_port *, struct se_lun *); -extern void core_release_port(struct se_device *, struct se_port *); extern int core_dev_export(struct se_device *, struct se_portal_group *, struct se_lun *); extern void core_dev_unexport(struct se_device *, struct se_portal_group *, @@ -28,8 +24,6 @@ extern void se_release_device_for_hba(st extern void se_release_vpd_for_dev(struct se_device *); extern void se_clear_dev_ports(struct se_device *); extern int se_free_virtual_device(struct se_device *, struct se_hba *); -extern void se_dev_start(struct se_device *); -extern void se_dev_stop(struct se_device *); extern int se_dev_check_online(struct se_device *); extern int se_dev_check_shutdown(struct se_device *); extern void se_dev_set_default_attribs(struct se_device *, struct se_dev_limits *); Index: lio-core/drivers/target/target_core_tpg.c =================================================================== --- lio-core.orig/drivers/target/target_core_tpg.c 2010-11-17 11:01:16.275005591 +0100 +++ lio-core/drivers/target/target_core_tpg.c 2010-11-17 22:25:25.643003145 +0100 @@ -771,7 +771,7 @@ int core_tpg_post_addlun( return 0; } -void core_tpg_shutdown_lun( +static void core_tpg_shutdown_lun( struct se_portal_group *tpg, struct se_lun *lun) { Index: lio-core/drivers/target/target_core_transport.c =================================================================== --- lio-core.orig/drivers/target/target_core_transport.c 2010-11-17 22:25:24.576003983 +0100 +++ lio-core/drivers/target/target_core_transport.c 2010-11-17 22:25:25.646003145 +0100 @@ -188,9 +188,9 @@ struct se_global *se_global; EXPORT_SYMBOL(se_global); -struct kmem_cache *se_cmd_cache; +static struct kmem_cache *se_cmd_cache; +static struct kmem_cache *se_sess_cache; struct kmem_cache *se_tmr_req_cache; -struct kmem_cache *se_sess_cache; struct kmem_cache *se_hba_cache; struct kmem_cache *se_ua_cache; struct kmem_cache *se_mem_cache; @@ -207,6 +207,32 @@ static int transport_generic_write_pendi static int transport_processing_thread(void *); static int transport_new_cmd_obj(struct se_cmd *cmd, struct se_transform_info *ti, int post_execute); +static int __transport_execute_tasks(struct se_device *dev); +static void transport_complete_task_attr(struct se_cmd *cmd); +static void transport_direct_request_timeout(struct se_cmd *cmd); +static void transport_free_dev_tasks(struct se_cmd *cmd); +static u32 transport_generic_get_cdb_count( + struct se_cmd *cmd, struct se_transform_info *ti, + unsigned long long starting_lba, u32 sectors, + enum dma_data_direction data_direction, + struct list_head *mem_list); +static int transport_generic_get_mem(struct se_cmd *cmd, u32 length, + u32 dma_size); +static int transport_generic_remove(struct se_cmd *cmd, + int release_to_pool, int session_reinstatement); +static int transport_get_sectors(struct se_cmd *cmd); +static struct list_head *transport_init_se_mem_list(void); +static int transport_map_sg_to_mem(struct se_cmd *cmd, + struct list_head *se_mem_list, void *in_mem, + u32 *se_mem_cnt); +static void transport_memcpy_se_mem_read_contig(struct se_cmd *cmd, + unsigned char *dst, struct list_head *se_mem_list); +static void transport_new_cmd_failure(struct se_cmd *se_cmd); +static void transport_release_fe_cmd(struct se_cmd *cmd); +static void transport_remove_cmd_from_queue(struct se_cmd *cmd, + struct se_queue_obj *qobj); +static int transport_set_sense_codes(struct se_cmd *cmd, u8 asc, u8 ascq); +static void transport_stop_all_task_timers(struct se_cmd *cmd); int transport_emulate_control_cdb(struct se_task *task); @@ -242,7 +268,7 @@ static u16 transport_passthrough_get_fab return 0; } -struct target_core_fabric_ops passthrough_fabric_ops = { +static struct target_core_fabric_ops passthrough_fabric_ops = { .release_cmd_direct = transport_passthrough_release_cmd_direct, .get_fabric_name = transport_passthrough_get_fabric_name, .get_task_tag = transport_passthrough_get_task_tag, @@ -717,57 +743,10 @@ static void transport_all_task_dev_remov } } -/* - * Called with T_TASK(cmd)->t_state_lock held. - */ -void transport_task_dev_remove_state(struct se_task *task, struct se_device *dev) -{ - struct se_cmd *cmd = task->task_se_cmd; - unsigned long flags; - - /* - * We cannot remove the task from the state list while said task is - * still active and probably timed out. - */ - if (atomic_read(&task->task_active)) { -#if 0 - printk(KERN_ERR "Skipping Removal of state for ITT: 0x%08x" - " dev: %p task[%p]\n" - CMD_TFO(task->task_se_cmd)->tfo_get_task_tag( - task->task_se_cmd), dev, task); -#endif - return; - } - - if (atomic_read(&task->task_state_active)) { - spin_lock_irqsave(&dev->execute_task_lock, flags); - list_del(&task->t_state_list); - DEBUG_TSTATE("Removed ITT: 0x%08x dev: %p task[%p]\n", - CMD_TFO(task->task_se_cmd)->tfo_get_task_tag( - task->task_se_cmd), dev, task); - spin_unlock_irqrestore(&dev->execute_task_lock, flags); - - atomic_set(&task->task_state_active, 0); - atomic_dec(&T_TASK(cmd)->t_task_cdbs_ex_left); - } -} - static void transport_passthrough_check_stop(struct se_cmd *cmd) { - if (!(cmd->se_cmd_flags & SCF_CMD_PASSTHROUGH)) - return; - - if (!cmd->transport_passthrough_done) { - if (cmd->callback) { - cmd->callback(cmd, cmd->callback_arg, - transport_passthrough_complete(cmd)); - } else - complete(&T_TASK(cmd)->t_transport_passthrough_comp); - - return; - } - - cmd->transport_passthrough_done(cmd); + if (cmd->se_cmd_flags & SCF_CMD_PASSTHROUGH) + complete(&T_TASK(cmd)->t_transport_passthrough_comp); } /* transport_cmd_check_stop(): @@ -927,7 +906,7 @@ void transport_cmd_finish_abort_tmr(stru transport_generic_remove(cmd, 0, 0); } -int transport_add_cmd_to_queue( +static int transport_add_cmd_to_queue( struct se_cmd *cmd, int t_state) { @@ -967,7 +946,8 @@ int transport_add_cmd_to_queue( /* * Called with struct se_queue_obj->cmd_queue_lock held. */ -struct se_queue_req *__transport_get_qr_from_queue(struct se_queue_obj *qobj) +static struct se_queue_req * +__transport_get_qr_from_queue(struct se_queue_obj *qobj) { struct se_cmd *cmd; struct se_queue_req *qr = NULL; @@ -988,7 +968,8 @@ struct se_queue_req *__transport_get_qr_ return qr; } -struct se_queue_req *transport_get_qr_from_queue(struct se_queue_obj *qobj) +static struct se_queue_req * +transport_get_qr_from_queue(struct se_queue_obj *qobj) { struct se_cmd *cmd; struct se_queue_req *qr; @@ -1014,7 +995,8 @@ struct se_queue_req *transport_get_qr_fr return qr; } -void transport_remove_cmd_from_queue(struct se_cmd *cmd, struct se_queue_obj *qobj) +static void transport_remove_cmd_from_queue(struct se_cmd *cmd, + struct se_queue_obj *qobj) { struct se_cmd *q_cmd; struct se_queue_req *qr = NULL, *qr_p = NULL; @@ -1045,24 +1027,6 @@ void transport_remove_cmd_from_queue(str } } -void transport_complete_cmd(struct se_cmd *cmd, int success) -{ - int t_state; - unsigned long flags; - - spin_lock_irqsave(&T_TASK(cmd)->t_state_lock, flags); - if (!success) { - cmd->transport_error_status = PYX_TRANSPORT_LU_COMM_FAILURE; - t_state = TRANSPORT_COMPLETE_FAILURE; - } else { - t_state = TRANSPORT_COMPLETE_OK; - } - atomic_set(&T_TASK(cmd)->t_transport_complete, 1); - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); - - transport_add_cmd_to_queue(cmd, t_state); -} - /* * Completion function used by TCM subsystem plugins (such as FILEIO) * for queueing up response from struct se_subsystem_api->do_task() @@ -1302,11 +1266,7 @@ static void transport_add_tasks_to_state spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); } -/* transport_add_tasks_from_cmd(): - * - * - */ -void transport_add_tasks_from_cmd(struct se_cmd *cmd) +static void transport_add_tasks_from_cmd(struct se_cmd *cmd) { struct se_device *dev = SE_DEV(cmd); struct se_task *task, *task_prev = NULL; @@ -1620,7 +1580,8 @@ void transport_dump_vpd_proto_id( printk(KERN_INFO "%s", buf); } -void transport_set_vpd_proto_id(struct t10_vpd *vpd, unsigned char *page_83) +static void +transport_set_vpd_proto_id(struct t10_vpd *vpd, unsigned char *page_83) { /* * Check if the Protocol Identifier Valid (PIV) bit is set.. @@ -1725,7 +1686,8 @@ int transport_dump_vpd_ident_type( return ret; } -int transport_set_vpd_ident_type(struct t10_vpd *vpd, unsigned char *page_83) +static int +transport_set_vpd_ident_type(struct t10_vpd *vpd, unsigned char *page_83) { /* * The VPD identifier type.. @@ -1774,7 +1736,8 @@ int transport_dump_vpd_ident( return ret; } -int transport_set_vpd_ident(struct t10_vpd *vpd, unsigned char *page_83) +static int +transport_set_vpd_ident(struct t10_vpd *vpd, unsigned char *page_83) { int j = 0, i = 4; /* offset to start of the identifer */ @@ -2266,13 +2229,8 @@ void transport_device_setup_cmd(struct s } EXPORT_SYMBOL(transport_device_setup_cmd); -struct se_cmd *__transport_alloc_se_cmd( - struct target_core_fabric_ops *tfo, - struct se_session *se_sess, - void *fabric_cmd_ptr, - u32 data_length, - int data_direction, - int task_attr) +static struct se_cmd * +transport_alloc_passthrough_cmd(u32 data_length, int data_direction) { struct se_cmd *cmd; unsigned char *sense_buffer; @@ -2284,10 +2242,9 @@ struct se_cmd *__transport_alloc_se_cmd( return ERR_PTR(-ENOMEM); } - sense_buffer = kzalloc( - TRANSPORT_SENSE_BUFFER + tfo->get_fabric_sense_len(), - gfp_type); - if (!(sense_buffer)) { + sense_buffer = kzalloc(TRANSPORT_SENSE_BUFFER + + passthrough_fabric_ops.get_fabric_sense_len(), gfp_type); + if (!sense_buffer) { printk(KERN_ERR "Unable to allocate memory for" " cmd->sense_buffer\n"); kmem_cache_free(se_cmd_cache, cmd); @@ -2296,13 +2253,14 @@ struct se_cmd *__transport_alloc_se_cmd( /* * Initialize the new struct se_cmd descriptor */ - transport_init_se_cmd(cmd, tfo, se_sess, data_length, data_direction, - task_attr, sense_buffer); + transport_init_se_cmd(cmd, &passthrough_fabric_ops, NULL, + data_length, data_direction, + TASK_ATTR_SIMPLE, sense_buffer); /* * Setup the se_fabric_cmd_ptr assignment which will signal * TCM allocation of struct se_cmd in the release and free codepaths */ - cmd->se_fabric_cmd_ptr = fabric_cmd_ptr; + cmd->se_fabric_cmd_ptr = (void *)1; return cmd; } @@ -2345,7 +2303,7 @@ void transport_init_se_cmd( } EXPORT_SYMBOL(transport_init_se_cmd); -int transport_check_alloc_task_attr(struct se_cmd *cmd) +static int transport_check_alloc_task_attr(struct se_cmd *cmd) { /* * Check if SAM Task Attribute emulation is enabled for this @@ -2371,19 +2329,6 @@ int transport_check_alloc_task_attr(stru return 0; } -struct se_cmd *transport_alloc_se_cmd( - struct target_core_fabric_ops *tfo_api, - struct se_session *se_sess, - void *fabric_cmd_ptr, - u32 data_length, - int data_direction, - int task_attr) -{ - return __transport_alloc_se_cmd(tfo_api, se_sess, fabric_cmd_ptr, - data_length, data_direction, task_attr); -} -EXPORT_SYMBOL(transport_alloc_se_cmd); - void transport_free_se_cmd( struct se_cmd *se_cmd) { @@ -2651,11 +2596,7 @@ int transport_generic_handle_tmr( } EXPORT_SYMBOL(transport_generic_handle_tmr); -/* transport_stop_tasks_for_cmd(): - * - * - */ -int transport_stop_tasks_for_cmd(struct se_cmd *cmd) +static int transport_stop_tasks_for_cmd(struct se_cmd *cmd) { struct se_task *task, *task_tmp; unsigned long flags; @@ -2731,11 +2672,10 @@ static void transport_failure_reset_queu spin_unlock_irqrestore(&SE_HBA(dev)->hba_queue_lock, flags); } -/* transport_generic_request_failure(): - * - * Handle SAM-esque emulation for generic transport request failures. +/* + * Handle SAM-esque emulation for generic transport request failures. */ -void transport_generic_request_failure( +static void transport_generic_request_failure( struct se_cmd *cmd, struct se_device *dev, int complete, @@ -2865,7 +2805,7 @@ check_stop: transport_passthrough_check_stop(cmd); } -void transport_direct_request_timeout(struct se_cmd *cmd) +static void transport_direct_request_timeout(struct se_cmd *cmd) { unsigned long flags; @@ -2884,7 +2824,7 @@ void transport_direct_request_timeout(st spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); } -void transport_generic_request_timeout(struct se_cmd *cmd) +static void transport_generic_request_timeout(struct se_cmd *cmd) { unsigned long flags; @@ -2953,11 +2893,7 @@ static inline unsigned long long transpo return ((unsigned long long)__v2) | (unsigned long long)__v1 << 32; } -/* transport_set_supported_SAM_opcode(): - * - * - */ -void transport_set_supported_SAM_opcode(struct se_cmd *se_cmd) +static void transport_set_supported_SAM_opcode(struct se_cmd *se_cmd) { unsigned long flags; @@ -2969,7 +2905,7 @@ void transport_set_supported_SAM_opcode( /* * Called from interrupt context. */ -void transport_task_timeout_handler(unsigned long data) +static void transport_task_timeout_handler(unsigned long data) { struct se_task *task = (struct se_task *)data; struct se_cmd *cmd = TASK_CMD(task); @@ -3028,7 +2964,7 @@ void transport_task_timeout_handler(unsi /* * Called with T_TASK(cmd)->t_state_lock held. */ -void transport_start_task_timer(struct se_task *task) +static void transport_start_task_timer(struct se_task *task) { struct se_device *dev = task->se_obj_ptr; int timeout; @@ -3075,31 +3011,7 @@ void __transport_stop_task_timer(struct task->task_flags &= ~TF_STOP; } -void transport_stop_task_timer(struct se_task *task) -{ - struct se_cmd *cmd = TASK_CMD(task); - unsigned long flags; -#if 0 - printk(KERN_INFO "Stopping task timer for cmd: %p task: %p\n", - cmd, task); -#endif - spin_lock_irqsave(&T_TASK(cmd)->t_state_lock, flags); - if (!(task->task_flags & TF_RUNNING)) { - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); - return; - } - task->task_flags |= TF_STOP; - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); - - del_timer_sync(&task->task_timer); - - spin_lock_irqsave(&T_TASK(cmd)->t_state_lock, flags); - task->task_flags &= ~TF_RUNNING; - task->task_flags &= ~TF_STOP; - spin_unlock_irqrestore(&T_TASK(cmd)->t_state_lock, flags); -} - -void transport_stop_all_task_timers(struct se_cmd *cmd) +static void transport_stop_all_task_timers(struct se_cmd *cmd) { struct se_task *task = NULL, *task_tmp; unsigned long flags; @@ -3209,7 +3121,7 @@ static inline int transport_execute_task * Called from fabric module context in transport_generic_new_cmd() and * transport_generic_process_write() */ -int transport_execute_tasks(struct se_cmd *cmd) +static int transport_execute_tasks(struct se_cmd *cmd) { int add_tasks; @@ -3256,7 +3168,7 @@ execute_tasks: * * Called from transport_processing_thread() */ -int __transport_execute_tasks(struct se_device *dev) +static int __transport_execute_tasks(struct se_device *dev) { int error; struct se_cmd *cmd = NULL; @@ -3359,11 +3271,7 @@ check_depth: return 0; } -/* transport_new_cmd_failure(): - * - * - */ -void transport_new_cmd_failure(struct se_cmd *se_cmd) +static void transport_new_cmd_failure(struct se_cmd *se_cmd) { unsigned long flags; /* @@ -3611,7 +3519,7 @@ out: /* * Used to obtain Sense Data from underlying Linux/SCSI struct scsi_cmnd */ -int transport_get_sense_data(struct se_cmd *cmd) +static int transport_get_sense_data(struct se_cmd *cmd) { unsigned char *buffer = cmd->sense_buffer, *sense_buffer = NULL; struct se_device *dev; @@ -4283,14 +4191,6 @@ static int transport_generic_cmd_sequenc return ret; } -static inline struct se_cmd *transport_alloc_passthrough_cmd( - u32 data_length, - int data_direction) -{ - return __transport_alloc_se_cmd(&passthrough_fabric_ops, NULL, - (void *)1, data_length, data_direction, TASK_ATTR_SIMPLE); -} - static inline void transport_release_tasks(struct se_cmd *); struct se_cmd *transport_allocate_passthrough( @@ -4421,7 +4321,7 @@ void transport_passthrough_release( } EXPORT_SYMBOL(transport_passthrough_release); -int transport_passthrough_complete( +static int transport_passthrough_complete( struct se_cmd *cmd) { if (se_dev_check_shutdown(cmd->se_orig_obj_ptr) != 0) @@ -4503,7 +4403,7 @@ static void transport_memcpy_read_contig } } -void transport_memcpy_se_mem_read_contig( +static void transport_memcpy_se_mem_read_contig( struct se_cmd *cmd, unsigned char *dst, struct list_head *se_mem_list) @@ -4529,25 +4429,10 @@ void transport_memcpy_se_mem_read_contig } } - -/* transport_generic_passthrough(): - * - * - */ -int transport_generic_passthrough_async( - struct se_cmd *cmd, - void (*callback)(struct se_cmd *cmd, - void *callback_arg, int complete_status), - void *callback_arg) +int transport_generic_passthrough(struct se_cmd *cmd) { int write = (cmd->data_direction == DMA_TO_DEVICE); int no_alloc = (cmd->se_cmd_flags & SCF_CMD_PASSTHROUGH_NOALLOC); - int pt_done = (cmd->transport_passthrough_done != NULL); - - if (callback) { - cmd->callback = callback; - cmd->callback_arg = callback_arg; - } if (transport_generic_handle_cdb(cmd) < 0) return -1; @@ -4560,18 +4445,10 @@ int transport_generic_passthrough_async( transport_generic_process_write(cmd); } - if (callback || pt_done) - return 0; - wait_for_completion(&T_TASK(cmd)->t_transport_passthrough_comp); return transport_passthrough_complete(cmd); } - -int transport_generic_passthrough(struct se_cmd *cmd) -{ - return transport_generic_passthrough_async(cmd, NULL, NULL); -} EXPORT_SYMBOL(transport_generic_passthrough); /* @@ -4579,7 +4456,7 @@ EXPORT_SYMBOL(transport_generic_passthro * transport_generic_request_failure() to determine which dormant/delayed * and ordered cmds need to have their tasks added to the execution queue. */ -void transport_complete_task_attr(struct se_cmd *cmd) +static void transport_complete_task_attr(struct se_cmd *cmd) { struct se_device *dev = SE_DEV(cmd); struct se_cmd *cmd_p, *cmd_tmp; @@ -4644,11 +4521,7 @@ void transport_complete_task_attr(struct wake_up_interruptible(&dev->dev_queue_obj->thread_wq); } -/* transport_generic_complete_ok(): - * - * - */ -void transport_generic_complete_ok(struct se_cmd *cmd) +static void transport_generic_complete_ok(struct se_cmd *cmd) { int reason = 0; /* @@ -4742,7 +4615,7 @@ void transport_generic_complete_ok(struc transport_cmd_check_stop_to_fabric(cmd); } -void transport_free_dev_tasks(struct se_cmd *cmd) +static void transport_free_dev_tasks(struct se_cmd *cmd) { struct se_task *task, *task_tmp; unsigned long flags; @@ -4875,7 +4748,7 @@ static inline void transport_release_se_ } } -void transport_release_fe_cmd(struct se_cmd *cmd) +static void transport_release_fe_cmd(struct se_cmd *cmd) { unsigned long flags; @@ -4901,11 +4774,7 @@ free_pages: transport_release_se_cmd(cmd); } -/* transport_generic_remove(): - * - * - */ -int transport_generic_remove( +static int transport_generic_remove( struct se_cmd *cmd, int release_to_pool, int session_reinstatement) @@ -5063,7 +4932,7 @@ static inline long long transport_dev_en return dev->dev_sectors_total + 1; } -int transport_get_sectors(struct se_cmd *cmd) +static int transport_get_sectors(struct se_cmd *cmd) { struct se_device *dev = SE_DEV(cmd); @@ -5159,12 +5028,7 @@ static int transport_new_cmd_obj( return 0; } -unsigned char *transport_get_vaddr(struct se_mem *se_mem) -{ - return page_address(se_mem->se_page) + se_mem->se_off; -} - -struct list_head *transport_init_se_mem_list(void) +static struct list_head *transport_init_se_mem_list(void) { struct list_head *se_mem_list; @@ -5178,21 +5042,8 @@ struct list_head *transport_init_se_mem_ return se_mem_list; } -void transport_free_se_mem_list(struct list_head *se_mem_list) -{ - struct se_mem *se_mem, *se_mem_tmp; - - if (!se_mem_list) - return; - - list_for_each_entry_safe(se_mem, se_mem_tmp, se_mem_list, se_list) { - list_del(&se_mem->se_list); - kmem_cache_free(se_mem_cache, se_mem); - } - kfree(se_mem_list); -} - -int transport_generic_get_mem(struct se_cmd *cmd, u32 length, u32 dma_size) +static int +transport_generic_get_mem(struct se_cmd *cmd, u32 length, u32 dma_size) { unsigned char *buf; struct se_mem *se_mem; @@ -5432,7 +5283,7 @@ static inline int transport_set_tasks_se max_sectors_set); } -int transport_map_sg_to_mem( +static int transport_map_sg_to_mem( struct se_cmd *cmd, struct list_head *se_mem_list, void *in_mem, @@ -5748,7 +5599,7 @@ static int transport_do_se_mem_map( task_offset_in); } -u32 transport_generic_get_cdb_count( +static u32 transport_generic_get_cdb_count( struct se_cmd *cmd, struct se_transform_info *ti, unsigned long long starting_lba, @@ -5944,7 +5795,7 @@ transport_map_control_cmd_to_task(struct * by transport_generic_cmd_sequencer() from the iSCSI Target RX process. * Any non zero return here is treated as an "out of resource' op here. */ -int transport_generic_new_cmd(struct se_cmd *cmd) +static int transport_generic_new_cmd(struct se_cmd *cmd) { struct se_portal_group *se_tpg; struct se_transform_info ti; @@ -6501,7 +6352,7 @@ remove: transport_generic_free_cmd(cmd, 0, 0, session_reinstatement); } -int transport_get_sense_codes( +static int transport_get_sense_codes( struct se_cmd *cmd, u8 *asc, u8 *ascq) @@ -6512,7 +6363,7 @@ int transport_get_sense_codes( return 0; } -int transport_set_sense_codes( +static int transport_set_sense_codes( struct se_cmd *cmd, u8 asc, u8 ascq) @@ -6804,7 +6655,8 @@ int transport_generic_do_tmr(struct se_c * Called with spin_lock_irq(&dev->execute_task_lock); held * */ -struct se_task *transport_get_task_from_state_list(struct se_device *dev) +static struct se_task * +transport_get_task_from_state_list(struct se_device *dev) { struct se_task *task; Index: lio-core/include/target/target_core_base.h =================================================================== --- lio-core.orig/include/target/target_core_base.h 2010-11-17 22:25:24.577004053 +0100 +++ lio-core/include/target/target_core_base.h 2010-11-17 22:25:25.653003843 +0100 @@ -576,13 +576,9 @@ struct se_cmd { int (*transport_emulate_cdb)(struct se_cmd *); u32 (*transport_get_lba)(unsigned char *); unsigned long long (*transport_get_long_lba)(unsigned char *); - void (*transport_passthrough_done)(struct se_cmd *); void (*transport_split_cdb)(unsigned long long, u32 *, unsigned char *); void (*transport_wait_for_tasks)(struct se_cmd *, int, int); void (*transport_complete_callback)(struct se_cmd *); - void (*callback)(struct se_cmd *cmd, void *callback_arg, - int complete_status); - void *callback_arg; } ____cacheline_aligned; #define T_TASK(cmd) ((struct se_transport_task *)(cmd->t_task)) Index: lio-core/include/target/target_core_tpg.h =================================================================== --- lio-core.orig/include/target/target_core_tpg.h 2010-11-17 11:01:16.362265822 +0100 +++ lio-core/include/target/target_core_tpg.h 2010-11-17 22:25:25.659003913 +0100 @@ -31,8 +31,6 @@ extern int core_tpg_deregister(struct se extern struct se_lun *core_tpg_pre_addlun(struct se_portal_group *, u32); extern int core_tpg_post_addlun(struct se_portal_group *, struct se_lun *, u32, void *); -extern void core_tpg_shutdown_lun(struct se_portal_group *, - struct se_lun *); extern struct se_lun *core_tpg_pre_dellun(struct se_portal_group *, u32, int *); extern int core_tpg_post_dellun(struct se_portal_group *, struct se_lun *); Index: lio-core/include/target/target_core_transport.h =================================================================== --- lio-core.orig/include/target/target_core_transport.h 2010-11-17 22:24:18.000000000 +0100 +++ lio-core/include/target/target_core_transport.h 2010-11-17 22:25:25.664003284 +0100 @@ -142,23 +142,13 @@ extern void transport_register_session(s extern void transport_free_session(struct se_session *); extern void transport_deregister_session_configfs(struct se_session *); extern void transport_deregister_session(struct se_session *); -extern void transport_task_dev_remove_state(struct se_task *, - struct se_device *); extern void transport_cmd_finish_abort(struct se_cmd *, int); extern void transport_cmd_finish_abort_tmr(struct se_cmd *); -extern int transport_add_cmd_to_queue(struct se_cmd *, int); -extern struct se_queue_req *__transport_get_qr_from_queue( - struct se_queue_obj *); -extern void transport_remove_cmd_from_queue(struct se_cmd *, - struct se_queue_obj *); extern void transport_complete_sync_cache(struct se_cmd *, int); -extern void transport_complete_cmd(struct se_cmd *, int); extern void transport_complete_task(struct se_task *, int); extern void transport_add_task_to_execute_queue(struct se_task *, struct se_task *, struct se_device *); -extern void transport_add_tasks_from_cmd(struct se_cmd *); -extern struct se_queue_req *transport_get_qr_from_queue(struct se_queue_obj *); unsigned char *transport_dump_cmd_direction(struct se_cmd *); extern void transport_dump_dev_state(struct se_device *, char *, int *); extern void transport_dump_dev_info(struct se_device *, struct se_lun *, @@ -179,10 +169,6 @@ extern struct se_device *transport_add_d const char *, const char *); extern int transport_generic_allocate_iovecs(struct se_cmd *); extern void transport_device_setup_cmd(struct se_cmd *); -extern int transport_check_alloc_task_attr(struct se_cmd *); -extern struct se_cmd *transport_alloc_se_cmd(struct target_core_fabric_ops *, - struct se_session *, void *, - u32, int, int); extern void transport_init_se_cmd(struct se_cmd *, struct target_core_fabric_ops *, struct se_session *, u32, int, int, @@ -193,66 +179,26 @@ extern int transport_generic_handle_cdb( extern int transport_generic_handle_cdb_map(struct se_cmd *); extern int transport_generic_handle_data(struct se_cmd *); extern int transport_generic_handle_tmr(struct se_cmd *); -extern int transport_stop_tasks_for_cmd(struct se_cmd *); -extern void transport_generic_request_failure(struct se_cmd *, struct se_device *, - int, int); -extern void transport_direct_request_timeout(struct se_cmd *); -extern void transport_generic_request_timeout(struct se_cmd *); -extern int __transport_execute_tasks(struct se_device *); -extern void transport_new_cmd_failure(struct se_cmd *); -extern void transport_set_supported_SAM_opcode(struct se_cmd *); -extern void transport_start_task_timer(struct se_task *); extern void __transport_stop_task_timer(struct se_task *, unsigned long *); -extern void transport_stop_task_timer(struct se_task *); -extern void transport_stop_all_task_timers(struct se_cmd *); -extern int transport_execute_tasks(struct se_cmd *); extern unsigned char transport_asciihex_to_binaryhex(unsigned char val[2]); -extern int transport_get_sense_data(struct se_cmd *); extern struct se_cmd *transport_allocate_passthrough(unsigned char *, int, u32, void *, u32, u32, void *); extern void transport_passthrough_release(struct se_cmd *); -extern int transport_passthrough_complete(struct se_cmd *); -extern void transport_memcpy_se_mem_read_contig(struct se_cmd *, - unsigned char *, struct list_head *); -extern int transport_generic_passthrough_async(struct se_cmd *cmd, - void(*callback)(struct se_cmd *cmd, - void *callback_arg, int complete_status), - void *callback_arg); extern int transport_generic_passthrough(struct se_cmd *); -extern void transport_complete_task_attr(struct se_cmd *); -extern void transport_generic_complete_ok(struct se_cmd *); -extern void transport_free_dev_tasks(struct se_cmd *); -extern void transport_release_fe_cmd(struct se_cmd *); -extern int transport_generic_remove(struct se_cmd *, int, int); extern int transport_generic_map_mem_to_cmd(struct se_cmd *cmd, struct scatterlist *, u32, struct scatterlist *, u32); extern int transport_clear_lun_from_sessions(struct se_lun *); extern int transport_check_aborted_status(struct se_cmd *, int); -extern int transport_get_sense_codes(struct se_cmd *, u8 *, u8 *); -extern int transport_set_sense_codes(struct se_cmd *, u8, u8); extern int transport_send_check_condition_and_sense(struct se_cmd *, u8, int); extern void transport_send_task_abort(struct se_cmd *); extern void transport_release_cmd_to_pool(struct se_cmd *); extern void transport_generic_free_cmd(struct se_cmd *, int, int, int); extern void transport_generic_wait_for_cmds(struct se_cmd *, int); -extern int transport_get_sectors(struct se_cmd *); -extern unsigned char *transport_get_vaddr(struct se_mem *); -extern struct list_head *transport_init_se_mem_list(void); -extern void transport_free_se_mem_list(struct list_head *); -extern int transport_generic_get_mem(struct se_cmd *, u32, u32); extern u32 transport_calc_sg_num(struct se_task *, struct se_mem *, u32); -extern int transport_map_sg_to_mem(struct se_cmd *, struct list_head *, - void *, u32 *); extern int transport_map_mem_to_sg(struct se_task *, struct list_head *, void *, struct se_mem *, struct se_mem **, u32 *, u32 *); extern void transport_do_task_sg_chain(struct se_cmd *); -extern u32 transport_generic_get_cdb_count(struct se_cmd *, - struct se_transform_info *, - unsigned long long, u32, - enum dma_data_direction, - struct list_head *); -extern int transport_generic_new_cmd(struct se_cmd *); extern void transport_generic_process_write(struct se_cmd *); extern int transport_generic_do_tmr(struct se_cmd *); /* From target_core_alua.c */ -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html