target: Send UA when changing LUN inventory
When changind the LUN inventory via core_enable_device_list_for_node() or core_disable_device_list_for_node() a REPORTED LUNS DATA HAS CHANGED UA should be send. (Convert to target_luns_data_has_changed helper usage - hch) Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
		
							parent
							
								
									b5aafb16eb
								
							
						
					
					
						commit
						7c0d0d51d2
					
				| @ -293,10 +293,22 @@ void target_pr_kref_release(struct kref *kref) | ||||
| 	complete(&deve->pr_comp); | ||||
| } | ||||
| 
 | ||||
| /*      core_enable_device_list_for_node():
 | ||||
|  * | ||||
|  * | ||||
|  */ | ||||
| static void | ||||
| target_luns_data_has_changed(struct se_node_acl *nacl, struct se_dev_entry *new, | ||||
| 			     bool skip_new) | ||||
| { | ||||
| 	struct se_dev_entry *tmp; | ||||
| 
 | ||||
| 	rcu_read_lock(); | ||||
| 	hlist_for_each_entry_rcu(tmp, &nacl->lun_entry_hlist, link) { | ||||
| 		if (skip_new && tmp == new) | ||||
| 			continue; | ||||
| 		core_scsi3_ua_allocate(tmp, 0x3F, | ||||
| 				       ASCQ_3FH_REPORTED_LUNS_DATA_HAS_CHANGED); | ||||
| 	} | ||||
| 	rcu_read_unlock(); | ||||
| } | ||||
| 
 | ||||
| int core_enable_device_list_for_node( | ||||
| 	struct se_lun *lun, | ||||
| 	struct se_lun_acl *lun_acl, | ||||
| @ -360,6 +372,7 @@ int core_enable_device_list_for_node( | ||||
| 		kref_put(&orig->pr_kref, target_pr_kref_release); | ||||
| 		wait_for_completion(&orig->pr_comp); | ||||
| 
 | ||||
| 		target_luns_data_has_changed(nacl, new, true); | ||||
| 		kfree_rcu(orig, rcu_head); | ||||
| 		return 0; | ||||
| 	} | ||||
| @ -373,6 +386,7 @@ int core_enable_device_list_for_node( | ||||
| 	list_add_tail(&new->lun_link, &lun->lun_deve_list); | ||||
| 	spin_unlock(&lun->lun_deve_lock); | ||||
| 
 | ||||
| 	target_luns_data_has_changed(nacl, new, true); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| @ -428,6 +442,7 @@ void core_disable_device_list_for_node( | ||||
| 	kfree_rcu(orig, rcu_head); | ||||
| 
 | ||||
| 	core_scsi3_free_pr_reg_from_nacl(dev, nacl); | ||||
| 	target_luns_data_has_changed(nacl, NULL, false); | ||||
| } | ||||
| 
 | ||||
| /*      core_clear_lun_from_tpg():
 | ||||
|  | ||||
| @ -26,6 +26,7 @@ | ||||
| #define ASCQ_2CH_PREVIOUS_RESERVATION_CONFLICT_STATUS		0x09 | ||||
| 
 | ||||
| #define ASCQ_3FH_INQUIRY_DATA_HAS_CHANGED			0x03 | ||||
| #define ASCQ_3FH_REPORTED_LUNS_DATA_HAS_CHANGED			0x0E | ||||
| 
 | ||||
| extern struct kmem_cache *se_ua_cache; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user