Re: Linux Virtual SCSI HBAs and Virtual disks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

Thanks everyone to have a look at this.

I think i modified to have the latest kernel support. Unfortunately I could not test it with 2.6.20 kernel due to some issues in my laptop and 2.6.20 kernel. But it should work with 2.6.20 with this modification.

The modified version is available through http://vscsihba.aboo.org/vscsihbav202.tgz.

1. I fixed the kmem_cache issue for sure.
2. I think i got around with INIT_WORK ... Made the following modifications ...


Here is the change ...

[root@goobu kernel]# diff device.c ../../vscsihba2/kernel/device.c
4,8c4
<
< struct scsitap_work_t {
<       struct scsitap_session *session;
<       struct work_struct work;
< } scsitap_work;
---
> struct work_struct scsitap_work;
230c226
< void scsitap_scan_hba (void *work)
---
> void scsitap_scan_hba (void *ptr)
232,233c228,229
< struct scsitap_work_t *sw=container_of(work,struct scsitap_work_t, work)
;
<       struct scsitap_session *session=sw->session;
---
>
>       struct scsitap_session *session=(struct scsitap_session *)ptr;
239,240c235
<
<
---
>
267,269c262,264
<               scsitap_work.session=session;
<               SCSITAP_INIT_WORK(&scsitap_work.work,scsitap_scan_hba);
<               schedule_work(&scsitap_work.work);
---
>
>               INIT_WORK(&scsitap_work,scsitap_scan_hba,session);
>               schedule_work(&scsitap_work);




[root@goobu kernel]# diff ../include/vscsihba.h ../../vscsihba2/include/vscsihba.h
16d15
< #include <linux/version.h>
51,56d49
< #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
< #define SCSITAP_INIT_WORK(work, func) INIT_WORK((work), (func), (void *)(work));
< #else
< #define SCSITAP_INIT_WORK(work, func) INIT_WORK((work), ( void (*) (struct work_struct *))(func));
< #endif
<


Aboo



Aboo

Stefan Richter wrote:
Douglas Gilbert wrote:
The table would be for different versions as it looks
like you may need a new one for bleeding edge kernels.

I didn't get far trying to build the kernel module
against lk 2.6.20-rc5:

# make
make -C /lib/modules/2.6.20-rc5/build M=/home/upgrades/apps/vscsihba1/vscsihba1/kernel modules
make[1]: Entering directory `/usr/src/linux-2.6.19'
  CC [M]  /home/upgrades/apps/vscsihba1/vscsihba1/kernel/hba.o
/home/upgrades/apps/vscsihba1/vscsihba1/kernel/hba.c:26: warning: ‘kmem_cache_t’ is deprecated
  CC [M]  /home/upgrades/apps/vscsihba1/vscsihba1/kernel/device.o
/home/upgrades/apps/vscsihba1/vscsihba1/kernel/device.c:263:51: error: macro "INIT_WORK" passed 3 arguments, but takes just 2
[...]

Aboo,

the workqueue API changes after 2.6.19 are for example explained here:
http://lwn.net/Articles/213149/
There are a lot of workqueue API conversion patches in 2.6.20-rc1 which
can be taken as example. The first step when converting to the new API
is to determine whether the work has to be delayed sometimes or can
always be queued as immediate work. In the latter case, a slimmed-down
variant of delayed work is used.

The conversion away from kmem_cache_t is trivial. There are also some
patches in 2.6.20-rc1 or later to use as example.

-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux