Re: Linux Virtual SCSI HBAs and Virtual disks

Aboo Valappil
2007-01-17T10:26:11Z

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@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html