aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2008-04-18 11:43:14 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-04-22 16:16:32 -0400
commit97f46ae45c70857e459b7f8df1fc2807e7bd90a9 (patch)
tree7e7245349c433f67be23c6a75c3936c0466b59d6 /drivers/scsi
parent643eb2d932c97a0583381629d632d486934cf7ee (diff)
[SCSI] bsg: add release callback support
This patch adds release callback support, which is called when a bsg device goes away. bsg_register_queue() takes a pointer to a callback function. This feature is useful for stuff like sas_host that can't use the release callback in struct device. If a caller doesn't need bsg's release callback, it can call bsg_register_queue() with NULL pointer (e.g. scsi devices can use release callback in struct device so they don't need bsg's callback). With this patch, bsg uses kref for refcounts on bsg devices instead of get/put_device in fops->open/release. bsg calls put_device and the caller's release callback (if it was registered) in kref_put's release. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/scsi_sysfs.c2
-rw-r--r--drivers/scsi/scsi_transport_sas.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index 198aa4571e35..049103f1d16f 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -889,7 +889,7 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
889 goto out; 889 goto out;
890 } 890 }
891 891
892 error = bsg_register_queue(rq, &sdev->sdev_gendev, NULL); 892 error = bsg_register_queue(rq, &sdev->sdev_gendev, NULL, NULL);
893 893
894 if (error) 894 if (error)
895 sdev_printk(KERN_INFO, sdev, 895 sdev_printk(KERN_INFO, sdev,
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c
index 27ec625ab771..94ff29f7c34b 100644
--- a/drivers/scsi/scsi_transport_sas.c
+++ b/drivers/scsi/scsi_transport_sas.c
@@ -219,7 +219,7 @@ static int sas_bsg_initialize(struct Scsi_Host *shost, struct sas_rphy *rphy)
219 if (!q) 219 if (!q)
220 return -ENOMEM; 220 return -ENOMEM;
221 221
222 error = bsg_register_queue(q, dev, name); 222 error = bsg_register_queue(q, dev, name, NULL);
223 if (error) { 223 if (error) {
224 blk_cleanup_queue(q); 224 blk_cleanup_queue(q);
225 return -ENOMEM; 225 return -ENOMEM;