2010年1月19日 星期二

iscsitarget make error block-io.c


link: http://www.l4l.be/index.php/linuxdocs/46-storage/112-iscsi-enterprise-target-installatie

Installatie
Zorg er voor dat de compiler en bijbehorende tools geinstalleerd staan, ook is openssl-dev nodig. Onder Ubuntu doe je dit met:



apt-get install build-essential libssl-dev

Download IETd, also-known-as iscsitarget:


wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/0.4.17/iscsitarget-0.4.17.tar.gz

Pak het uit:


tar xzvf iscsitarget-0.4.17.tar.gz
cd iscsitarget-0.4.17


Als je nu zou willen compileren, dan loop je tegen het volgende probleem op:

iscsitarget-0.4.17/kernel/block-io.c: In function ‘blockio_open_path’:
iscsitarget-0.4.17/kernel/block-io.c:164: error: implicit declaration of function ‘open_bdev_excl’
iscsitarget-0.4.17/kernel/block-io.c:164: warning: assignment makes pointer from integer without a cast
iscsitarget-0.4.17/kernel/block-io.c: In function ‘blockio_detach’:
iscsitarget-0.4.17/kernel/block-io.c:328: error: implicit declaration of function ‘close_bdev_excl’
iscsitarget-0.4.17/kernel/block-io.o] Error 1
iscsitarget-0.4.17/kernel] Error 2
Met andere woorden er is een probleem... Open het bestand block-io.c in je favoriete editor, en ga naar regel 164. Daar staat:



bdev = open_bdev_excl(path, flags, THIS_MODULE);


Verander dit in:


bdev = open_bdev_exclusive(path, flags, THIS_MODULE);


Ook is er een verandering nodig in regel 328, voor het gemak geef ik hier de volledige verandering weer:


static void
blockio_detach(struct iet_volume *volume)
{
struct blockio_data *bio_data = volume->private;
int flags = FMODE_READ | (LUReadonly(volume) ? 0 : FMODE_WRITE);
if (bio_data->bdev)
close_bdev_exclusive(bio_data->bdev, flags);
kfree(bio_data->path);

kfree(volume->private);
}


Nu kun je compileren/installeren:


make
sudo make install


3 則留言:

Unknown 提到...
網誌管理員已經移除這則留言。
Unknown 提到...
作者已經移除這則留言。
Unknown 提到...
網誌管理員已經移除這則留言。