Skip to content

Commit

Permalink
target: Send UA when changing LUN inventory
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Hannes Reinecke authored and Nicholas Bellinger committed Jun 23, 2015
1 parent b5aafb1 commit 7c0d0d5
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
23 changes: 19 additions & 4 deletions drivers/target/target_core_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;
}

Expand Down Expand Up @@ -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():
Expand Down
1 change: 1 addition & 0 deletions drivers/target/target_core_ua.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down

0 comments on commit 7c0d0d5

Please sign in to comment.