scsi: added spdk_scsi_dev_has_pending_tasks()
Added new function in preparation to implementing device hotremove. Change-Id: I5b85f76f543b882acf3b0fe40c9e92125594b257 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/366725 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
870ce250f1
commit
57f9221fab
@ -168,6 +168,7 @@ const char *spdk_scsi_dev_get_name(const struct spdk_scsi_dev *dev);
|
||||
int spdk_scsi_dev_get_id(const struct spdk_scsi_dev *dev);
|
||||
int spdk_scsi_dev_get_max_lun(const struct spdk_scsi_dev *dev);
|
||||
struct spdk_scsi_lun *spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id);
|
||||
bool spdk_scsi_dev_has_pending_tasks(const struct spdk_scsi_dev *dev);
|
||||
void spdk_scsi_dev_destruct(struct spdk_scsi_dev *dev);
|
||||
void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev, struct spdk_scsi_task *task,
|
||||
enum spdk_scsi_task_func func);
|
||||
|
@ -337,3 +337,17 @@ spdk_scsi_dev_get_lun(struct spdk_scsi_dev *dev, int lun_id)
|
||||
|
||||
return dev->lun[lun_id];
|
||||
}
|
||||
|
||||
bool
|
||||
spdk_scsi_dev_has_pending_tasks(const struct spdk_scsi_dev *dev)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < dev->maxlun; ++i) {
|
||||
if (dev->lun[i] && spdk_scsi_lun_has_pending_tasks(dev->lun[i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ spdk_scsi_lun_hotplug(void *arg)
|
||||
{
|
||||
struct spdk_scsi_lun *lun = (struct spdk_scsi_lun *)arg;
|
||||
|
||||
if (TAILQ_EMPTY(&lun->pending_tasks) && TAILQ_EMPTY(&lun->tasks)) {
|
||||
if (!spdk_scsi_lun_has_pending_tasks(lun)) {
|
||||
spdk_scsi_lun_free_io_channel(lun);
|
||||
spdk_scsi_lun_delete(lun->name);
|
||||
}
|
||||
@ -416,3 +416,9 @@ spdk_scsi_lun_get_dev(const struct spdk_scsi_lun *lun)
|
||||
{
|
||||
return lun->dev;
|
||||
}
|
||||
|
||||
bool
|
||||
spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun)
|
||||
{
|
||||
return !TAILQ_EMPTY(&lun->pending_tasks) || !TAILQ_EMPTY(&lun->tasks);
|
||||
}
|
||||
|
@ -146,6 +146,7 @@ int spdk_scsi_lun_unclaim(struct spdk_scsi_lun *lun);
|
||||
int spdk_scsi_lun_delete(const char *lun_name);
|
||||
int spdk_scsi_lun_allocate_io_channel(struct spdk_scsi_lun *lun);
|
||||
void spdk_scsi_lun_free_io_channel(struct spdk_scsi_lun *lun);
|
||||
bool spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun);
|
||||
|
||||
int spdk_scsi_lun_db_add(struct spdk_scsi_lun *lun);
|
||||
int spdk_scsi_lun_db_delete(struct spdk_scsi_lun *lun);
|
||||
|
@ -177,6 +177,11 @@ spdk_scsi_lun_free_io_channel(struct spdk_scsi_lun *lun)
|
||||
{
|
||||
}
|
||||
|
||||
bool
|
||||
spdk_scsi_lun_has_pending_tasks(const struct spdk_scsi_lun *lun)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static void
|
||||
dev_destruct_null_dev(void)
|
||||
|
Loading…
Reference in New Issue
Block a user