diff options
author | Andy Grover <agrover@redhat.com> | 2013-05-16 13:40:54 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2013-06-14 03:04:25 -0400 |
commit | 33ce6a87f2aba790429ac228288edc0e410143a2 (patch) | |
tree | 5ce5e96b2b3c478f38469ea8cb7ea19ed46a6012 /drivers/target/target_core_pr.c | |
parent | 317ddd256b9c24b0d78fa8018f80f1e495481a10 (diff) |
target: Add register_type and preempt_type enums to clarify code
core_scsi3_enulate_pro_register took an 'ignore_key' parameter that
really distinguished between REGISTER and REGISTER_AND_IGNORE_EXISTING_KEY
registration types, which was a little confusing. Same situation for
PREEMPT and PREEMPT_AND_ABORT. Use enums to add a little more
descriptiveness to the code.
Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_pr.c')
-rw-r--r-- | drivers/target/target_core_pr.c | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index 3240f2cc81ef..a081145cd1c7 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c | |||
@@ -65,6 +65,17 @@ int core_pr_dump_initiator_port( | |||
65 | return 1; | 65 | return 1; |
66 | } | 66 | } |
67 | 67 | ||
68 | enum register_type { | ||
69 | REGISTER, | ||
70 | REGISTER_AND_IGNORE_EXISTING_KEY, | ||
71 | REGISTER_AND_MOVE, | ||
72 | }; | ||
73 | |||
74 | enum preempt_type { | ||
75 | PREEMPT, | ||
76 | PREEMPT_AND_ABORT, | ||
77 | }; | ||
78 | |||
68 | static void __core_scsi3_complete_pro_release(struct se_device *, struct se_node_acl *, | 79 | static void __core_scsi3_complete_pro_release(struct se_device *, struct se_node_acl *, |
69 | struct t10_pr_registration *, int); | 80 | struct t10_pr_registration *, int); |
70 | 81 | ||
@@ -869,7 +880,7 @@ static void core_scsi3_aptpl_reserve( | |||
869 | } | 880 | } |
870 | 881 | ||
871 | static void __core_scsi3_add_registration(struct se_device *, struct se_node_acl *, | 882 | static void __core_scsi3_add_registration(struct se_device *, struct se_node_acl *, |
872 | struct t10_pr_registration *, int, int); | 883 | struct t10_pr_registration *, enum register_type, int); |
873 | 884 | ||
874 | static int __core_scsi3_check_aptpl_registration( | 885 | static int __core_scsi3_check_aptpl_registration( |
875 | struct se_device *dev, | 886 | struct se_device *dev, |
@@ -962,7 +973,7 @@ static void __core_scsi3_dump_registration( | |||
962 | struct se_device *dev, | 973 | struct se_device *dev, |
963 | struct se_node_acl *nacl, | 974 | struct se_node_acl *nacl, |
964 | struct t10_pr_registration *pr_reg, | 975 | struct t10_pr_registration *pr_reg, |
965 | int register_type) | 976 | enum register_type register_type) |
966 | { | 977 | { |
967 | struct se_portal_group *se_tpg = nacl->se_tpg; | 978 | struct se_portal_group *se_tpg = nacl->se_tpg; |
968 | char i_buf[PR_REG_ISID_ID_LEN]; | 979 | char i_buf[PR_REG_ISID_ID_LEN]; |
@@ -973,8 +984,8 @@ static void __core_scsi3_dump_registration( | |||
973 | PR_REG_ISID_ID_LEN); | 984 | PR_REG_ISID_ID_LEN); |
974 | 985 | ||
975 | pr_debug("SPC-3 PR [%s] Service Action: REGISTER%s Initiator" | 986 | pr_debug("SPC-3 PR [%s] Service Action: REGISTER%s Initiator" |
976 | " Node: %s%s\n", tfo->get_fabric_name(), (register_type == 2) ? | 987 | " Node: %s%s\n", tfo->get_fabric_name(), (register_type == REGISTER_AND_MOVE) ? |
977 | "_AND_MOVE" : (register_type == 1) ? | 988 | "_AND_MOVE" : (register_type == REGISTER_AND_IGNORE_EXISTING_KEY) ? |
978 | "_AND_IGNORE_EXISTING_KEY" : "", nacl->initiatorname, | 989 | "_AND_IGNORE_EXISTING_KEY" : "", nacl->initiatorname, |
979 | (prf_isid) ? i_buf : ""); | 990 | (prf_isid) ? i_buf : ""); |
980 | pr_debug("SPC-3 PR [%s] registration on Target Port: %s,0x%04x\n", | 991 | pr_debug("SPC-3 PR [%s] registration on Target Port: %s,0x%04x\n", |
@@ -998,7 +1009,7 @@ static void __core_scsi3_add_registration( | |||
998 | struct se_device *dev, | 1009 | struct se_device *dev, |
999 | struct se_node_acl *nacl, | 1010 | struct se_node_acl *nacl, |
1000 | struct t10_pr_registration *pr_reg, | 1011 | struct t10_pr_registration *pr_reg, |
1001 | int register_type, | 1012 | enum register_type register_type, |
1002 | int register_move) | 1013 | int register_move) |
1003 | { | 1014 | { |
1004 | struct target_core_fabric_ops *tfo = nacl->se_tpg->se_tpg_tfo; | 1015 | struct target_core_fabric_ops *tfo = nacl->se_tpg->se_tpg_tfo; |
@@ -1064,7 +1075,7 @@ static int core_scsi3_alloc_registration( | |||
1064 | u64 sa_res_key, | 1075 | u64 sa_res_key, |
1065 | int all_tg_pt, | 1076 | int all_tg_pt, |
1066 | int aptpl, | 1077 | int aptpl, |
1067 | int register_type, | 1078 | enum register_type register_type, |
1068 | int register_move) | 1079 | int register_move) |
1069 | { | 1080 | { |
1070 | struct t10_pr_registration *pr_reg; | 1081 | struct t10_pr_registration *pr_reg; |
@@ -2030,7 +2041,7 @@ core_scsi3_update_and_write_aptpl(struct se_device *dev, unsigned char *in_buf, | |||
2030 | 2041 | ||
2031 | static sense_reason_t | 2042 | static sense_reason_t |
2032 | core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, | 2043 | core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, |
2033 | int aptpl, int all_tg_pt, int spec_i_pt, int ignore_key) | 2044 | int aptpl, int all_tg_pt, int spec_i_pt, enum register_type register_type) |
2034 | { | 2045 | { |
2035 | struct se_session *se_sess = cmd->se_sess; | 2046 | struct se_session *se_sess = cmd->se_sess; |
2036 | struct se_device *dev = cmd->se_dev; | 2047 | struct se_device *dev = cmd->se_dev; |
@@ -2083,7 +2094,7 @@ core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, | |||
2083 | if (core_scsi3_alloc_registration(cmd->se_dev, | 2094 | if (core_scsi3_alloc_registration(cmd->se_dev, |
2084 | se_sess->se_node_acl, se_deve, isid_ptr, | 2095 | se_sess->se_node_acl, se_deve, isid_ptr, |
2085 | sa_res_key, all_tg_pt, aptpl, | 2096 | sa_res_key, all_tg_pt, aptpl, |
2086 | ignore_key, 0)) { | 2097 | register_type, 0)) { |
2087 | pr_err("Unable to allocate" | 2098 | pr_err("Unable to allocate" |
2088 | " struct t10_pr_registration\n"); | 2099 | " struct t10_pr_registration\n"); |
2089 | return TCM_INVALID_PARAMETER_LIST; | 2100 | return TCM_INVALID_PARAMETER_LIST; |
@@ -2136,7 +2147,7 @@ core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, | |||
2136 | pr_reg = pr_reg_e; | 2147 | pr_reg = pr_reg_e; |
2137 | type = pr_reg->pr_res_type; | 2148 | type = pr_reg->pr_res_type; |
2138 | 2149 | ||
2139 | if (!ignore_key) { | 2150 | if (register_type == REGISTER) { |
2140 | if (res_key != pr_reg->pr_res_key) { | 2151 | if (res_key != pr_reg->pr_res_key) { |
2141 | pr_err("SPC-3 PR REGISTER: Received" | 2152 | pr_err("SPC-3 PR REGISTER: Received" |
2142 | " res_key: 0x%016Lx does not match" | 2153 | " res_key: 0x%016Lx does not match" |
@@ -2280,7 +2291,7 @@ core_scsi3_emulate_pro_register(struct se_cmd *cmd, u64 res_key, u64 sa_res_key, | |||
2280 | pr_debug("SPC-3 PR [%s] REGISTER%s: Changed Reservation" | 2291 | pr_debug("SPC-3 PR [%s] REGISTER%s: Changed Reservation" |
2281 | " Key for %s to: 0x%016Lx PRgeneration:" | 2292 | " Key for %s to: 0x%016Lx PRgeneration:" |
2282 | " 0x%08x\n", cmd->se_tfo->get_fabric_name(), | 2293 | " 0x%08x\n", cmd->se_tfo->get_fabric_name(), |
2283 | (ignore_key) ? "_AND_IGNORE_EXISTING_KEY" : "", | 2294 | (register_type == REGISTER_AND_IGNORE_EXISTING_KEY) ? "_AND_IGNORE_EXISTING_KEY" : "", |
2284 | pr_reg->pr_reg_nacl->initiatorname, | 2295 | pr_reg->pr_reg_nacl->initiatorname, |
2285 | pr_reg->pr_res_key, pr_reg->pr_res_generation); | 2296 | pr_reg->pr_res_key, pr_reg->pr_res_generation); |
2286 | 2297 | ||
@@ -2810,7 +2821,7 @@ static void __core_scsi3_complete_pro_preempt( | |||
2810 | struct list_head *preempt_and_abort_list, | 2821 | struct list_head *preempt_and_abort_list, |
2811 | int type, | 2822 | int type, |
2812 | int scope, | 2823 | int scope, |
2813 | int abort) | 2824 | enum preempt_type preempt_type) |
2814 | { | 2825 | { |
2815 | struct se_node_acl *nacl = pr_reg->pr_reg_nacl; | 2826 | struct se_node_acl *nacl = pr_reg->pr_reg_nacl; |
2816 | struct target_core_fabric_ops *tfo = nacl->se_tpg->se_tpg_tfo; | 2827 | struct target_core_fabric_ops *tfo = nacl->se_tpg->se_tpg_tfo; |
@@ -2834,11 +2845,11 @@ static void __core_scsi3_complete_pro_preempt( | |||
2834 | 2845 | ||
2835 | pr_debug("SPC-3 PR [%s] Service Action: PREEMPT%s created new" | 2846 | pr_debug("SPC-3 PR [%s] Service Action: PREEMPT%s created new" |
2836 | " reservation holder TYPE: %s ALL_TG_PT: %d\n", | 2847 | " reservation holder TYPE: %s ALL_TG_PT: %d\n", |
2837 | tfo->get_fabric_name(), (abort) ? "_AND_ABORT" : "", | 2848 | tfo->get_fabric_name(), (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : "", |
2838 | core_scsi3_pr_dump_type(type), | 2849 | core_scsi3_pr_dump_type(type), |
2839 | (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); | 2850 | (pr_reg->pr_reg_all_tg_pt) ? 1 : 0); |
2840 | pr_debug("SPC-3 PR [%s] PREEMPT%s from Node: %s%s\n", | 2851 | pr_debug("SPC-3 PR [%s] PREEMPT%s from Node: %s%s\n", |
2841 | tfo->get_fabric_name(), (abort) ? "_AND_ABORT" : "", | 2852 | tfo->get_fabric_name(), (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : "", |
2842 | nacl->initiatorname, (prf_isid) ? &i_buf[0] : ""); | 2853 | nacl->initiatorname, (prf_isid) ? &i_buf[0] : ""); |
2843 | /* | 2854 | /* |
2844 | * For PREEMPT_AND_ABORT, add the preempting reservation's | 2855 | * For PREEMPT_AND_ABORT, add the preempting reservation's |
@@ -2876,7 +2887,7 @@ static void core_scsi3_release_preempt_and_abort( | |||
2876 | 2887 | ||
2877 | static sense_reason_t | 2888 | static sense_reason_t |
2878 | core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | 2889 | core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, |
2879 | u64 sa_res_key, int abort) | 2890 | u64 sa_res_key, enum preempt_type preempt_type) |
2880 | { | 2891 | { |
2881 | struct se_device *dev = cmd->se_dev; | 2892 | struct se_device *dev = cmd->se_dev; |
2882 | struct se_node_acl *pr_reg_nacl; | 2893 | struct se_node_acl *pr_reg_nacl; |
@@ -2896,7 +2907,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
2896 | if (!pr_reg_n) { | 2907 | if (!pr_reg_n) { |
2897 | pr_err("SPC-3 PR: Unable to locate" | 2908 | pr_err("SPC-3 PR: Unable to locate" |
2898 | " PR_REGISTERED *pr_reg for PREEMPT%s\n", | 2909 | " PR_REGISTERED *pr_reg for PREEMPT%s\n", |
2899 | (abort) ? "_AND_ABORT" : ""); | 2910 | (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : ""); |
2900 | return TCM_RESERVATION_CONFLICT; | 2911 | return TCM_RESERVATION_CONFLICT; |
2901 | } | 2912 | } |
2902 | if (pr_reg_n->pr_res_key != res_key) { | 2913 | if (pr_reg_n->pr_res_key != res_key) { |
@@ -2965,7 +2976,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
2965 | pr_reg_nacl = pr_reg->pr_reg_nacl; | 2976 | pr_reg_nacl = pr_reg->pr_reg_nacl; |
2966 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; | 2977 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; |
2967 | __core_scsi3_free_registration(dev, pr_reg, | 2978 | __core_scsi3_free_registration(dev, pr_reg, |
2968 | (abort) ? &preempt_and_abort_list : | 2979 | (preempt_type == PREEMPT_AND_ABORT) ? &preempt_and_abort_list : |
2969 | NULL, calling_it_nexus); | 2980 | NULL, calling_it_nexus); |
2970 | released_regs++; | 2981 | released_regs++; |
2971 | } else { | 2982 | } else { |
@@ -2993,7 +3004,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
2993 | pr_reg_nacl = pr_reg->pr_reg_nacl; | 3004 | pr_reg_nacl = pr_reg->pr_reg_nacl; |
2994 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; | 3005 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; |
2995 | __core_scsi3_free_registration(dev, pr_reg, | 3006 | __core_scsi3_free_registration(dev, pr_reg, |
2996 | (abort) ? &preempt_and_abort_list : | 3007 | (preempt_type == PREEMPT_AND_ABORT) ? &preempt_and_abort_list : |
2997 | NULL, 0); | 3008 | NULL, 0); |
2998 | released_regs++; | 3009 | released_regs++; |
2999 | } | 3010 | } |
@@ -3022,10 +3033,10 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3022 | */ | 3033 | */ |
3023 | if (pr_res_holder && all_reg && !(sa_res_key)) { | 3034 | if (pr_res_holder && all_reg && !(sa_res_key)) { |
3024 | __core_scsi3_complete_pro_preempt(dev, pr_reg_n, | 3035 | __core_scsi3_complete_pro_preempt(dev, pr_reg_n, |
3025 | (abort) ? &preempt_and_abort_list : NULL, | 3036 | (preempt_type == PREEMPT_AND_ABORT) ? &preempt_and_abort_list : NULL, |
3026 | type, scope, abort); | 3037 | type, scope, preempt_type); |
3027 | 3038 | ||
3028 | if (abort) | 3039 | if (preempt_type == PREEMPT_AND_ABORT) |
3029 | core_scsi3_release_preempt_and_abort( | 3040 | core_scsi3_release_preempt_and_abort( |
3030 | &preempt_and_abort_list, pr_reg_n); | 3041 | &preempt_and_abort_list, pr_reg_n); |
3031 | } | 3042 | } |
@@ -3036,7 +3047,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3036 | &pr_reg_n->pr_aptpl_buf[0], | 3047 | &pr_reg_n->pr_aptpl_buf[0], |
3037 | pr_tmpl->pr_aptpl_buf_len)) { | 3048 | pr_tmpl->pr_aptpl_buf_len)) { |
3038 | pr_debug("SPC-3 PR: Updated APTPL" | 3049 | pr_debug("SPC-3 PR: Updated APTPL" |
3039 | " metadata for PREEMPT%s\n", (abort) ? | 3050 | " metadata for PREEMPT%s\n", (preempt_type == PREEMPT_AND_ABORT) ? |
3040 | "_AND_ABORT" : ""); | 3051 | "_AND_ABORT" : ""); |
3041 | } | 3052 | } |
3042 | } | 3053 | } |
@@ -3103,7 +3114,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3103 | pr_reg_nacl = pr_reg->pr_reg_nacl; | 3114 | pr_reg_nacl = pr_reg->pr_reg_nacl; |
3104 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; | 3115 | pr_res_mapped_lun = pr_reg->pr_res_mapped_lun; |
3105 | __core_scsi3_free_registration(dev, pr_reg, | 3116 | __core_scsi3_free_registration(dev, pr_reg, |
3106 | (abort) ? &preempt_and_abort_list : NULL, | 3117 | (preempt_type == PREEMPT_AND_ABORT) ? &preempt_and_abort_list : NULL, |
3107 | calling_it_nexus); | 3118 | calling_it_nexus); |
3108 | /* | 3119 | /* |
3109 | * e) Establish a unit attention condition for the initiator | 3120 | * e) Establish a unit attention condition for the initiator |
@@ -3120,8 +3131,8 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3120 | * I_T nexus using the contents of the SCOPE and TYPE fields; | 3131 | * I_T nexus using the contents of the SCOPE and TYPE fields; |
3121 | */ | 3132 | */ |
3122 | __core_scsi3_complete_pro_preempt(dev, pr_reg_n, | 3133 | __core_scsi3_complete_pro_preempt(dev, pr_reg_n, |
3123 | (abort) ? &preempt_and_abort_list : NULL, | 3134 | (preempt_type == PREEMPT_AND_ABORT) ? &preempt_and_abort_list : NULL, |
3124 | type, scope, abort); | 3135 | type, scope, preempt_type); |
3125 | /* | 3136 | /* |
3126 | * d) Process tasks as defined in 5.7.1; | 3137 | * d) Process tasks as defined in 5.7.1; |
3127 | * e) See above.. | 3138 | * e) See above.. |
@@ -3161,7 +3172,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3161 | * been removed from the primary pr_reg list), except the | 3172 | * been removed from the primary pr_reg list), except the |
3162 | * new persistent reservation holder, the calling Initiator Port. | 3173 | * new persistent reservation holder, the calling Initiator Port. |
3163 | */ | 3174 | */ |
3164 | if (abort) { | 3175 | if (preempt_type == PREEMPT_AND_ABORT) { |
3165 | core_tmr_lun_reset(dev, NULL, &preempt_and_abort_list, cmd); | 3176 | core_tmr_lun_reset(dev, NULL, &preempt_and_abort_list, cmd); |
3166 | core_scsi3_release_preempt_and_abort(&preempt_and_abort_list, | 3177 | core_scsi3_release_preempt_and_abort(&preempt_and_abort_list, |
3167 | pr_reg_n); | 3178 | pr_reg_n); |
@@ -3172,7 +3183,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3172 | &pr_reg_n->pr_aptpl_buf[0], | 3183 | &pr_reg_n->pr_aptpl_buf[0], |
3173 | pr_tmpl->pr_aptpl_buf_len)) { | 3184 | pr_tmpl->pr_aptpl_buf_len)) { |
3174 | pr_debug("SPC-3 PR: Updated APTPL metadata for PREEMPT" | 3185 | pr_debug("SPC-3 PR: Updated APTPL metadata for PREEMPT" |
3175 | "%s\n", abort ? "_AND_ABORT" : ""); | 3186 | "%s\n", (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : ""); |
3176 | } | 3187 | } |
3177 | } | 3188 | } |
3178 | 3189 | ||
@@ -3183,7 +3194,7 @@ core_scsi3_pro_preempt(struct se_cmd *cmd, int type, int scope, u64 res_key, | |||
3183 | 3194 | ||
3184 | static sense_reason_t | 3195 | static sense_reason_t |
3185 | core_scsi3_emulate_pro_preempt(struct se_cmd *cmd, int type, int scope, | 3196 | core_scsi3_emulate_pro_preempt(struct se_cmd *cmd, int type, int scope, |
3186 | u64 res_key, u64 sa_res_key, int abort) | 3197 | u64 res_key, u64 sa_res_key, enum preempt_type preempt_type) |
3187 | { | 3198 | { |
3188 | switch (type) { | 3199 | switch (type) { |
3189 | case PR_TYPE_WRITE_EXCLUSIVE: | 3200 | case PR_TYPE_WRITE_EXCLUSIVE: |
@@ -3193,10 +3204,10 @@ core_scsi3_emulate_pro_preempt(struct se_cmd *cmd, int type, int scope, | |||
3193 | case PR_TYPE_WRITE_EXCLUSIVE_ALLREG: | 3204 | case PR_TYPE_WRITE_EXCLUSIVE_ALLREG: |
3194 | case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG: | 3205 | case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG: |
3195 | return core_scsi3_pro_preempt(cmd, type, scope, res_key, | 3206 | return core_scsi3_pro_preempt(cmd, type, scope, res_key, |
3196 | sa_res_key, abort); | 3207 | sa_res_key, preempt_type); |
3197 | default: | 3208 | default: |
3198 | pr_err("SPC-3 PR: Unknown Service Action PREEMPT%s" | 3209 | pr_err("SPC-3 PR: Unknown Service Action PREEMPT%s" |
3199 | " Type: 0x%02x\n", (abort) ? "_AND_ABORT" : "", type); | 3210 | " Type: 0x%02x\n", (preempt_type == PREEMPT_AND_ABORT) ? "_AND_ABORT" : "", type); |
3200 | return TCM_INVALID_CDB_FIELD; | 3211 | return TCM_INVALID_CDB_FIELD; |
3201 | } | 3212 | } |
3202 | } | 3213 | } |
@@ -3752,7 +3763,7 @@ target_scsi3_emulate_pr_out(struct se_cmd *cmd) | |||
3752 | switch (sa) { | 3763 | switch (sa) { |
3753 | case PRO_REGISTER: | 3764 | case PRO_REGISTER: |
3754 | ret = core_scsi3_emulate_pro_register(cmd, | 3765 | ret = core_scsi3_emulate_pro_register(cmd, |
3755 | res_key, sa_res_key, aptpl, all_tg_pt, spec_i_pt, 0); | 3766 | res_key, sa_res_key, aptpl, all_tg_pt, spec_i_pt, REGISTER); |
3756 | break; | 3767 | break; |
3757 | case PRO_RESERVE: | 3768 | case PRO_RESERVE: |
3758 | ret = core_scsi3_emulate_pro_reserve(cmd, type, scope, res_key); | 3769 | ret = core_scsi3_emulate_pro_reserve(cmd, type, scope, res_key); |
@@ -3765,15 +3776,15 @@ target_scsi3_emulate_pr_out(struct se_cmd *cmd) | |||
3765 | break; | 3776 | break; |
3766 | case PRO_PREEMPT: | 3777 | case PRO_PREEMPT: |
3767 | ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, | 3778 | ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, |
3768 | res_key, sa_res_key, 0); | 3779 | res_key, sa_res_key, PREEMPT); |
3769 | break; | 3780 | break; |
3770 | case PRO_PREEMPT_AND_ABORT: | 3781 | case PRO_PREEMPT_AND_ABORT: |
3771 | ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, | 3782 | ret = core_scsi3_emulate_pro_preempt(cmd, type, scope, |
3772 | res_key, sa_res_key, 1); | 3783 | res_key, sa_res_key, PREEMPT_AND_ABORT); |
3773 | break; | 3784 | break; |
3774 | case PRO_REGISTER_AND_IGNORE_EXISTING_KEY: | 3785 | case PRO_REGISTER_AND_IGNORE_EXISTING_KEY: |
3775 | ret = core_scsi3_emulate_pro_register(cmd, | 3786 | ret = core_scsi3_emulate_pro_register(cmd, |
3776 | 0, sa_res_key, aptpl, all_tg_pt, spec_i_pt, 1); | 3787 | 0, sa_res_key, aptpl, all_tg_pt, spec_i_pt, REGISTER_AND_IGNORE_EXISTING_KEY); |
3777 | break; | 3788 | break; |
3778 | case PRO_REGISTER_AND_MOVE: | 3789 | case PRO_REGISTER_AND_MOVE: |
3779 | ret = core_scsi3_emulate_pro_register_and_move(cmd, res_key, | 3790 | ret = core_scsi3_emulate_pro_register_and_move(cmd, res_key, |