提交 6a03b4cd 编写于 作者: H Harish Zunjarrao 提交者: James Bottomley

[SCSI] qla2xxx: Add char device to increase driver use count

The driver should not be unloaded if any application is using it.
To disallow driver unload, driver use count must be incremented.
Application uses this char device as handle and increases driver
use count to avoid possible driver unload.
Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com>
Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
上级 3e46f031
......@@ -35,7 +35,8 @@
#include "qla_bsg.h"
#include "qla_nx.h"
#define QLA2XXX_DRIVER_NAME "qla2xxx"
#define QLA2XXX_DRIVER_NAME "qla2xxx"
#define QLA2XXX_APIDEV "ql2xapidev"
/*
* We have MAILBOX_REGISTER_COUNT sized arrays in a few places,
......
......@@ -24,6 +24,8 @@
*/
char qla2x00_version_str[40];
static int apidev_major;
/*
* SRB allocation cache
*/
......@@ -3763,6 +3765,10 @@ static struct pci_driver qla2xxx_pci_driver = {
.err_handler = &qla2xxx_err_handler,
};
static struct file_operations apidev_fops = {
.owner = THIS_MODULE,
};
/**
* qla2x00_module_init - Module initialization.
**/
......@@ -3791,6 +3797,13 @@ qla2x00_module_init(void)
kmem_cache_destroy(srb_cachep);
return -ENODEV;
}
apidev_major = register_chrdev(0, QLA2XXX_APIDEV, &apidev_fops);
if (apidev_major < 0) {
printk(KERN_WARNING "qla2xxx: Unable to register char device "
"%s\n", QLA2XXX_APIDEV);
}
qla2xxx_transport_vport_template =
fc_attach_transport(&qla2xxx_transport_vport_functions);
if (!qla2xxx_transport_vport_template) {
......@@ -3816,6 +3829,7 @@ qla2x00_module_init(void)
static void __exit
qla2x00_module_exit(void)
{
unregister_chrdev(apidev_major, QLA2XXX_APIDEV);
pci_unregister_driver(&qla2xxx_pci_driver);
qla2x00_release_firmware();
kmem_cache_destroy(srb_cachep);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册