Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net/smc: abnormal termination without orderly flag

For abnormal termination issue an LLC DELETE_LINK without the
orderly flag.

Signed-off-by: Ursula Braun <ubraun@linux.ibm.com>
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Ursula Braun and committed by
David S. Miller
2c1d3e50 15e1b99a

+4 -6
+4 -6
net/smc/smc_core.c
··· 161 161 * of the DELETE LINK sequence from server; or as server to 162 162 * initiate the delete processing. See smc_llc_rx_delete_link(). 163 163 */ 164 - static int smc_link_send_delete(struct smc_link *lnk) 164 + static int smc_link_send_delete(struct smc_link *lnk, bool orderly) 165 165 { 166 166 if (lnk->state == SMC_LNK_ACTIVE && 167 - !smc_llc_send_delete_link(lnk, SMC_LLC_REQ, true)) { 167 + !smc_llc_send_delete_link(lnk, SMC_LLC_REQ, orderly)) { 168 168 smc_llc_link_deleting(lnk); 169 169 return 0; 170 170 } ··· 201 201 if (!lgr->is_smcd && !lgr->terminating) { 202 202 /* try to send del link msg, on error free lgr immediately */ 203 203 if (lnk->state == SMC_LNK_ACTIVE && 204 - !smc_link_send_delete(lnk)) { 204 + !smc_link_send_delete(lnk, true)) { 205 205 /* reschedule in case we never receive a response */ 206 206 smc_lgr_schedule_free_work(lgr); 207 207 spin_unlock_bh(lgr_lock); ··· 1233 1233 if (!lgr->is_smcd) { 1234 1234 struct smc_link *lnk = &lgr->lnk[SMC_SINGLE_LINK]; 1235 1235 1236 - if (lnk->state == SMC_LNK_ACTIVE) 1237 - smc_llc_send_delete_link(lnk, SMC_LLC_REQ, 1238 - false); 1236 + smc_link_send_delete(&lgr->lnk[SMC_SINGLE_LINK], false); 1239 1237 smc_llc_link_inactive(lnk); 1240 1238 } 1241 1239 cancel_delayed_work_sync(&lgr->free_work);