From: Christoph Hellwig <hch@infradead.org>
To: nab@linux-iscsi.org
Cc: linux-scsi@vger.kernel.org
Subject: [PATCH 2/9] target: remove activate_device/deactivate_device methods
Date: Mon, 08 Nov 2010 10:56:03 -0500 [thread overview]
Message-ID: <20101108155647.147682800@canuck.infradead.org> (raw)
In-Reply-To: 20101108155601.872926000@canuck.infradead.org
[-- Attachment #1: lio-cleanup-activate-deactivate --]
[-- Type: text/plain, Size: 16159 bytes --]
These are no-ops in all backends. Also remove the waitqueues around
kthread start/stop for each device as kthread_run/stop are synchronous.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: lio-core-2.6/drivers/target/target_core_file.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_file.c 2010-11-06 20:18:44.613011213 +0100
+++ lio-core-2.6/drivers/target/target_core_file.c 2010-11-06 20:19:08.470663550 +0100
@@ -266,38 +266,6 @@ fail:
return NULL;
}
-/* fd_activate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static int fd_activate_device(struct se_device *dev)
-{
- struct fd_dev *fd_dev = dev->dev_ptr;
- struct fd_host *fd_host = fd_dev->fd_host;
-
- printk(KERN_INFO "CORE_FILE[%u] - Activating Device with TCQ: %d at"
- " FILEIO Device ID: %d\n", fd_host->fd_host_id,
- fd_dev->fd_queue_depth, fd_dev->fd_dev_id);
-
- return 0;
-}
-
-/* fd_deactivate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static void fd_deactivate_device(struct se_device *dev)
-{
- struct fd_dev *fd_dev = dev->dev_ptr;
- struct fd_host *fd_host = fd_dev->fd_host;
-
- printk(KERN_INFO "CORE_FILE[%u] - Deactivating Device with TCQ: %d at"
- " FILEIO Device ID: %d\n", fd_host->fd_host_id,
- fd_dev->fd_queue_depth, fd_dev->fd_dev_id);
-
- return;
-}
-
/* fd_free_device(): (Part of se_subsystem_api_t template)
*
*
@@ -997,8 +965,6 @@ static struct se_subsystem_api fileio_te
.cdb_write_SG = fd_CDB_write_SG,
.allocate_virtdevice = fd_allocate_virtdevice,
.create_virtdevice = fd_create_virtdevice,
- .activate_device = fd_activate_device,
- .deactivate_device = fd_deactivate_device,
.free_device = fd_free_device,
.dpo_emulated = fd_emulated_dpo,
.fua_write_emulated = fd_emulated_fua_write,
Index: lio-core-2.6/drivers/target/target_core_iblock.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_iblock.c 2010-11-06 20:17:55.062262645 +0100
+++ lio-core-2.6/drivers/target/target_core_iblock.c 2010-11-06 20:18:39.142005277 +0100
@@ -247,36 +247,6 @@ failed:
return NULL;
}
-/* iblock_activate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static int iblock_activate_device(struct se_device *dev)
-{
- struct iblock_dev *ib_dev = dev->dev_ptr;
- struct iblock_hba *ib_hba = ib_dev->ibd_host;
-
- printk(KERN_INFO "CORE_iBLOCK[%u] - Activating Device with TCQ: %d at"
- " Major: %d Minor %d\n", ib_hba->iblock_host_id,
- ib_dev->ibd_depth, ib_dev->ibd_major, ib_dev->ibd_minor);
-
- return 0;
-}
-
-/* iblock_deactivate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static void iblock_deactivate_device(struct se_device *dev)
-{
- struct iblock_dev *ib_dev = dev->dev_ptr;
- struct iblock_hba *ib_hba = ib_dev->ibd_host;
-
- printk(KERN_INFO "CORE_iBLOCK[%u] - Deactivating Device with TCQ: %d"
- " at Major: %d Minor %d\n", ib_hba->iblock_host_id,
- ib_dev->ibd_depth, ib_dev->ibd_major, ib_dev->ibd_minor);
-}
-
static void iblock_free_device(void *p)
{
struct iblock_dev *ib_dev = p;
@@ -963,8 +933,6 @@ static struct se_subsystem_api iblock_te
.detach_hba = iblock_detach_hba,
.allocate_virtdevice = iblock_allocate_virtdevice,
.create_virtdevice = iblock_create_virtdevice,
- .activate_device = iblock_activate_device,
- .deactivate_device = iblock_deactivate_device,
.free_device = iblock_free_device,
.dpo_emulated = iblock_emulated_dpo,
.fua_write_emulated = iblock_emulated_fua_write,
Index: lio-core-2.6/drivers/target/target_core_pscsi.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_pscsi.c 2010-11-06 20:18:54.140024065 +0100
+++ lio-core-2.6/drivers/target/target_core_pscsi.c 2010-11-06 20:19:03.139048436 +0100
@@ -565,42 +565,6 @@ static struct se_device *pscsi_create_vi
return NULL;
}
-/* pscsi_activate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static int pscsi_activate_device(struct se_device *dev)
-{
- struct pscsi_dev_virt *pdv = dev->dev_ptr;
- struct pscsi_hba_virt *phv = pdv->pdv_se_hba->hba_ptr;
- struct scsi_device *sd = pdv->pdv_sd;
- struct Scsi_Host *sh = sd->host;
-
- printk(KERN_INFO "CORE_PSCSI[%d] - Activating Device with TCQ: %d at"
- " SCSI Location (Host/Channel/Target/LUN) %d/%d/%d/%d\n",
- phv->phv_host_id, sd->queue_depth, sh->host_no, sd->channel,
- sd->id, sd->lun);
-
- return 0;
-}
-
-/* pscsi_deactivate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static void pscsi_deactivate_device(struct se_device *dev)
-{
- struct pscsi_dev_virt *pdv = dev->dev_ptr;
- struct pscsi_hba_virt *phv = pdv->pdv_se_hba->hba_ptr;
- struct scsi_device *sd = pdv->pdv_sd;
- struct Scsi_Host *sh = sd->host;
-
- printk(KERN_INFO "CORE_PSCSI[%d] - Deactivating Device with TCQ: %d at"
- " SCSI Location (Host/Channel/Target/LUN) %d/%d/%d/%d\n",
- phv->phv_host_id, sd->queue_depth, sh->host_no, sd->channel,
- sd->id, sd->lun);
-}
-
/* pscsi_free_device(): (Part of se_subsystem_api_t template)
*
*
@@ -1532,8 +1496,6 @@ static struct se_subsystem_api pscsi_tem
.attach_hba = pscsi_attach_hba,
.detach_hba = pscsi_detach_hba,
.pmode_enable_hba = pscsi_pmode_enable_hba,
- .activate_device = pscsi_activate_device,
- .deactivate_device = pscsi_deactivate_device,
.allocate_virtdevice = pscsi_allocate_virtdevice,
.create_virtdevice = pscsi_create_virtdevice,
.free_device = pscsi_free_device,
Index: lio-core-2.6/drivers/target/target_core_rd.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_rd.c 2010-11-06 20:19:14.701260270 +0100
+++ lio-core-2.6/drivers/target/target_core_rd.c 2010-11-06 20:19:30.633255381 +0100
@@ -330,36 +330,6 @@ static struct se_device *rd_MEMCPY_creat
return rd_create_virtdevice(hba, se_dev, p, 0);
}
-/* rd_activate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static int rd_activate_device(struct se_device *dev)
-{
- struct rd_dev *rd_dev = dev->dev_ptr;
- struct rd_host *rd_host = rd_dev->rd_host;
-
- printk(KERN_INFO "CORE_RD[%u] - Activating Device with TCQ: %d at"
- " Ramdisk Device ID: %d\n", rd_host->rd_host_id,
- rd_dev->rd_queue_depth, rd_dev->rd_dev_id);
-
- return 0;
-}
-
-/* rd_deactivate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static void rd_deactivate_device(struct se_device *dev)
-{
- struct rd_dev *rd_dev = dev->dev_ptr;
- struct rd_host *rd_host = rd_dev->rd_host;
-
- printk(KERN_INFO "CORE_RD[%u] - Deactivating Device with TCQ: %d at"
- " Ramdisk Device ID: %d\n", rd_host->rd_host_id,
- rd_dev->rd_queue_depth, rd_dev->rd_dev_id);
-}
-
/* rd_free_device(): (Part of se_subsystem_api_t template)
*
*
@@ -1323,8 +1293,6 @@ static struct se_subsystem_api rd_dr_tem
.detach_hba = rd_detach_hba,
.allocate_virtdevice = rd_DIRECT_allocate_virtdevice,
.create_virtdevice = rd_DIRECT_create_virtdevice,
- .activate_device = rd_activate_device,
- .deactivate_device = rd_deactivate_device,
.free_device = rd_free_device,
.transport_complete = rd_transport_complete,
.allocate_DMA = rd_DIRECT_allocate_DMA,
@@ -1363,8 +1331,6 @@ static struct se_subsystem_api rd_mcp_te
.detach_hba = rd_detach_hba,
.allocate_virtdevice = rd_MEMCPY_allocate_virtdevice,
.create_virtdevice = rd_MEMCPY_create_virtdevice,
- .activate_device = rd_activate_device,
- .deactivate_device = rd_deactivate_device,
.free_device = rd_free_device,
.transport_complete = rd_transport_complete,
.allocate_request = rd_allocate_request,
Index: lio-core-2.6/drivers/target/target_core_stgt.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_stgt.c 2010-11-06 20:19:40.388254264 +0100
+++ lio-core-2.6/drivers/target/target_core_stgt.c 2010-11-06 20:19:49.419190498 +0100
@@ -314,40 +314,6 @@ static struct se_device *stgt_create_vir
return NULL;
}
-/* stgt_activate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static int stgt_activate_device(struct se_device *dev)
-{
- struct stgt_dev_virt *sdv = dev->dev_ptr;
- struct scsi_device *sd = sdv->sdv_sd;
- struct Scsi_Host *sh = sd->host;
-
- printk(KERN_INFO "CORE_STGT[%d] - Activating %s Device with TCQ: %d at"
- " SCSI Location (Channel/Target/LUN) %d/%d/%d\n", sh->host_no,
- (sdv->sdv_legacy) ? "Legacy" : "REQ", sd->queue_depth,
- sd->channel, sd->id, sd->lun);
-
- return 0;
-}
-
-/* stgt_deactivate_device(): (Part of se_subsystem_api_t template)
- *
- *
- */
-static void stgt_deactivate_device(struct se_device *dev)
-{
- struct stgt_dev_virt *sdv = dev->dev_ptr;
- struct scsi_device *sd = sdv->sdv_sd;
- struct Scsi_Host *sh = sd->host;
-
- printk(KERN_INFO "CORE_STGT[%d] - Deactivating %s Device with TCQ: %d"
- " at SCSI Location (Channel/Target/LUN) %d/%d/%d\n",
- sh->host_no, (sdv->sdv_legacy) ? "Legacy" : "REQ",
- sd->queue_depth, sd->channel, sd->id, sd->lun);
-}
-
/* stgt_free_device(): (Part of se_subsystem_api_t template)
*
*
@@ -877,8 +843,6 @@ static struct se_subsystem_api stgt_temp
.cdb_write_SG = stgt_CDB_write_SG,
.attach_hba = stgt_attach_hba,
.detach_hba = stgt_detach_hba,
- .activate_device = stgt_activate_device,
- .deactivate_device = stgt_deactivate_device,
.allocate_virtdevice = stgt_allocate_virtdevice,
.create_virtdevice = stgt_create_virtdevice,
.free_device = stgt_free_device,
Index: lio-core-2.6/drivers/target/target_core_transport.c
===================================================================
--- lio-core-2.6.orig/drivers/target/target_core_transport.c 2010-11-06 20:20:04.617254054 +0100
+++ lio-core-2.6/drivers/target/target_core_transport.c 2010-11-06 20:28:22.335005310 +0100
@@ -503,8 +503,6 @@ void transport_init_queue_obj(struct se_
atomic_set(&qobj->queue_cnt, 0);
INIT_LIST_HEAD(&qobj->qobj_list);
init_waitqueue_head(&qobj->thread_wq);
- init_completion(&qobj->thread_create_comp);
- init_completion(&qobj->thread_done_comp);
spin_lock_init(&qobj->cmd_queue_lock);
}
EXPORT_SYMBOL(transport_init_queue_obj);
@@ -2296,11 +2294,18 @@ struct se_device *transport_add_device_t
*/
if (core_setup_alua(dev, force_pt) < 0)
goto out;
+
/*
* Startup the struct se_device processing thread
*/
- if (transport_generic_activate_device(dev) < 0)
+ dev->process_thread = kthread_run(transport_processing_thread, dev,
+ "LIO_%s", TRANSPORT(dev)->name);
+ if (IS_ERR(dev->process_thread)) {
+ printk(KERN_ERR "Unable to create kthread: LIO_%s\n",
+ TRANSPORT(dev)->name);
goto out;
+ }
+
/*
* Preload the initial INQUIRY const values if we are doing
* anything virtual (IBLOCK, FILEIO, RAMDISK), but not for TCM/pSCSI
@@ -2352,10 +2357,7 @@ struct se_device *transport_add_device_t
out:
if (!ret)
return dev;
- /*
- * Release newly allocated state for struct se_device
- */
- transport_generic_deactivate_device(dev);
+ kthread_stop(dev->process_thread);
spin_lock(&hba->device_lock);
list_del(&dev->dev_list);
@@ -2372,46 +2374,6 @@ out:
}
EXPORT_SYMBOL(transport_add_device_to_core_hba);
-/* transport_generic_activate_device():
- *
- *
- */
-int transport_generic_activate_device(struct se_device *dev)
-{
- char name[16];
-
- if (TRANSPORT(dev)->activate_device)
- TRANSPORT(dev)->activate_device(dev);
-
- memset(name, 0, 16);
- snprintf(name, 16, "LIO_%s", TRANSPORT(dev)->name);
-
- dev->process_thread = kthread_run(transport_processing_thread,
- (void *)dev, name);
- if (IS_ERR(dev->process_thread)) {
- printk(KERN_ERR "Unable to create kthread: %s\n", name);
- return -1;
- }
-
- wait_for_completion(&dev->dev_queue_obj->thread_create_comp);
-
- return 0;
-}
-
-/* transport_generic_deactivate_device():
- *
- *
- */
-void transport_generic_deactivate_device(struct se_device *dev)
-{
- if (TRANSPORT(dev)->deactivate_device)
- TRANSPORT(dev)->deactivate_device(dev);
-
- kthread_stop(dev->process_thread);
-
- wait_for_completion(&dev->dev_queue_obj->thread_done_comp);
-}
-
/* transport_generic_free_device():
*
*
@@ -2421,7 +2383,7 @@ void transport_generic_free_device(struc
if (!(dev->dev_ptr))
return;
- transport_generic_deactivate_device(dev);
+ kthread_stop(dev->process_thread);
if (TRANSPORT(dev)->free_device)
TRANSPORT(dev)->free_device(dev->dev_ptr);
@@ -9098,8 +9060,6 @@ static int transport_processing_thread(v
recalc_sigpending();
spin_unlock_irq(¤t->sighand->siglock);
- complete(&dev->dev_queue_obj->thread_create_comp);
-
while (!(kthread_should_stop())) {
ret = wait_event_interruptible(dev->dev_queue_obj->thread_wq,
atomic_read(&dev->dev_queue_obj->queue_cnt) ||
@@ -9187,6 +9147,5 @@ get_cmd:
out:
transport_release_all_cmds(dev);
dev->process_thread = NULL;
- complete(&dev->dev_queue_obj->thread_done_comp);
return 0;
}
Index: lio-core-2.6/drivers/target/tcm_fc/tfc_cmd.c
===================================================================
--- lio-core-2.6.orig/drivers/target/tcm_fc/tfc_cmd.c 2010-11-06 20:23:27.561023505 +0100
+++ lio-core-2.6/drivers/target/tcm_fc/tfc_cmd.c 2010-11-06 20:24:45.698005617 +0100
@@ -654,8 +654,6 @@ int ft_thread(void *arg)
recalc_sigpending();
spin_unlock_irq(¤t->sighand->siglock);
- complete(&qobj->thread_create_comp);
-
while (!(kthread_should_stop())) {
ret = wait_event_interruptible(qobj->thread_wq,
atomic_read(&qobj->queue_cnt) || kthread_should_stop());
@@ -667,6 +665,5 @@ int ft_thread(void *arg)
}
out:
- complete(&qobj->thread_done_comp);
return 0;
}
Index: lio-core-2.6/drivers/target/tcm_fc/tfc_conf.c
===================================================================
--- lio-core-2.6.orig/drivers/target/tcm_fc/tfc_conf.c 2010-11-06 20:23:35.362254054 +0100
+++ lio-core-2.6/drivers/target/tcm_fc/tfc_conf.c 2010-11-06 20:24:38.170005695 +0100
@@ -342,7 +342,6 @@ static struct se_portal_group *ft_add_tp
kfree(tpg);
return NULL;
}
- wait_for_completion(&tpg->qobj.thread_create_comp);
mutex_lock(&ft_lport_lock);
list_add_tail(&tpg->list, &lacl->tpg_list);
@@ -359,7 +358,6 @@ static void ft_del_tpg(struct se_portal_
config_item_name(&tpg->se_tpg.tpg_group.cg_item));
kthread_stop(tpg->thread);
- wait_for_completion(&tpg->qobj.thread_done_comp);
/* Wait for sessions to be freed thru RCU, for BUG_ON below */
synchronize_rcu();
Index: lio-core-2.6/include/target/target_core_base.h
===================================================================
--- lio-core-2.6.orig/include/target/target_core_base.h 2010-11-06 20:23:53.939003740 +0100
+++ lio-core-2.6/include/target/target_core_base.h 2010-11-06 20:27:11.226005136 +0100
@@ -415,8 +415,6 @@ struct se_queue_obj {
spinlock_t cmd_queue_lock;
struct list_head qobj_list;
wait_queue_head_t thread_wq;
- struct completion thread_create_comp;
- struct completion thread_done_comp;
} ____cacheline_aligned;
/*
Index: lio-core-2.6/include/target/target_core_transport.h
===================================================================
--- lio-core-2.6.orig/include/target/target_core_transport.h 2010-11-06 20:21:04.487003811 +0100
+++ lio-core-2.6/include/target/target_core_transport.h 2010-11-06 20:21:09.952587550 +0100
@@ -191,8 +191,6 @@ extern struct se_device *transport_add_d
struct se_subsystem_dev *, u32,
void *, struct se_dev_limits *,
const char *, const char *);
-extern int transport_generic_activate_device(struct se_device *);
-extern void transport_generic_deactivate_device(struct se_device *);
extern void transport_generic_free_device(struct se_device *);
extern int transport_generic_allocate_iovecs(struct se_cmd *);
extern void transport_device_setup_cmd(struct se_cmd *);
@@ -383,14 +381,6 @@ struct se_subsystem_api {
struct se_device *(*create_virtdevice)(struct se_hba *,
struct se_subsystem_dev *, void *);
/*
- * activate_device():
- */
- int (*activate_device)(struct se_device *);
- /*
- * deactivate_device():
- */
- void (*deactivate_device)(struct se_device *);
- /*
* free_device():
*/
void (*free_device)(void *);
next prev parent reply other threads:[~2010-11-08 15:56 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-08 15:56 [PATCH 0/9] target core review feedback Christoph Hellwig
2010-11-08 15:56 ` [PATCH 1/9] target: remove never changing indirections in se_cmd Christoph Hellwig
2010-11-08 21:57 ` Nicholas A. Bellinger
2010-11-08 15:56 ` Christoph Hellwig [this message]
2010-11-08 22:00 ` [PATCH 2/9] target: remove activate_device/deactivate_device methods Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 3/9] From: Christoph Hellwig <hch@lst.de> Sujbect: target: remove SHUTDOWN_SIGS Christoph Hellwig
2010-11-08 22:21 ` [PATCH 3/9] " Nicholas A. Bellinger
2010-11-08 22:31 ` Christoph Hellwig
2010-11-08 15:56 ` [PATCH 4/9] target: remove transport_generic_map_buffers_to_tasks Christoph Hellwig
2010-11-08 22:29 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 5/9] target: clean up transport_subsystem_register Christoph Hellwig
2010-11-08 22:32 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 6/9] target: remove dead blockdevice claim/release code Christoph Hellwig
2010-11-08 22:35 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 7/9] target: remove transport_generic_free_device Christoph Hellwig
2010-11-08 22:40 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 8/9] target: remove unused split_cdb_RW_* handlers Christoph Hellwig
2010-11-08 22:41 ` Nicholas A. Bellinger
2010-11-08 15:56 ` [PATCH 9/9] target: remove dead call to transport_emulate_control_cdb in rd driver Christoph Hellwig
2010-11-08 22:44 ` Nicholas A. Bellinger
2010-11-08 17:19 ` [PATCH 10/9] target: split CDB emulation out of target_core_transport.c Christoph Hellwig
2010-11-08 22:48 ` Nicholas A. Bellinger
2010-11-08 22:57 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101108155647.147682800@canuck.infradead.org \
--to=hch@infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=nab@linux-iscsi.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox