Trying to compile Scramdisk 4 Linux on kernel 3.12.15, getting
make -C /lib/modules/3.12.15-pclos1/build SUBDIRS=/home/jcet/ScramDisk-2.1/driver modules
make[1]: Entering directory '/usr/src/kernel-devel-3.12.15-pclos1'
CC [M] /home/jcet/ScramDisk-2.1/driver/sddriver.o
/home/jcet/ScramDisk-2.1/driver/sddriver.c:254:3: warning: initialization from incompatible pointer type [enabled by default]
/home/jcet/ScramDisk-2.1/driver/sddriver.c:254:3: warning: (near initialization for ‘scramdisk_bdops.release’) [enabled by default]
/home/jcet/ScramDisk-2.1/driver/sddriver.c: In function ‘scramdisk_thread’:
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1307:3: error: implicit declaration of function ‘daemonize’ [-Werror=implicit-function-declaration]
/home/jcet/ScramDisk-2.1/driver/sddriver.c: In function ‘scramdisk_splice_actor’:
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1470:38: error: ‘KM_USER0’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1470:38: note: each undeclared identifier is reported only once for each function it appears in
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1470:3: error: too many arguments to function ‘kmap_atomic’
In file included from include/linux/highmem.h:34:0,
from include/linux/pagemap.h:10,
from include/linux/buffer_head.h:13,
from /home/jcet/ScramDisk-2.1/driver/sddriver.c:212:
/usr/src/kernel-devel-3.12.15-pclos1/arch/x86/include/asm/highmem.h:64:7: note: declared here
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1471:38: error: ‘KM_USER1’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1471:3: error: too many arguments to function ‘kmap_atomic’
In file included from include/linux/highmem.h:34:0,
from include/linux/pagemap.h:10,
from include/linux/buffer_head.h:13,
from /home/jcet/ScramDisk-2.1/driver/sddriver.c:212:
/usr/src/kernel-devel-3.12.15-pclos1/arch/x86/include/asm/highmem.h:64:7: note: declared here
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1479:33: error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1479:3: error: ‘kunmap_atomic’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1480:34: error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
/home/jcet/ScramDisk-2.1/driver/sddriver.c: In function ‘scramdisk_send’:
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1596:40: error: ‘KM_USER0’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1596:5: error: too many arguments to function ‘kmap_atomic’
In file included from include/linux/highmem.h:34:0,
from include/linux/pagemap.h:10,
from include/linux/buffer_head.h:13,
from /home/jcet/ScramDisk-2.1/driver/sddriver.c:212:
/usr/src/kernel-devel-3.12.15-pclos1/arch/x86/include/asm/highmem.h:64:7: note: declared here
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1597:32: error: ‘KM_USER1’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1597:5: error: too many arguments to function ‘kmap_atomic’
In file included from include/linux/highmem.h:34:0,
from include/linux/pagemap.h:10,
from include/linux/buffer_head.h:13,
from /home/jcet/ScramDisk-2.1/driver/sddriver.c:212:
/usr/src/kernel-devel-3.12.15-pclos1/arch/x86/include/asm/highmem.h:64:7: note: declared here
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1614:35: error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1614:5: error: ‘kunmap_atomic’ undeclared (first use in this function)
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1615:36: error: macro "kunmap_atomic" passed 2 arguments, but takes just 1
/home/jcet/ScramDisk-2.1/driver/sddriver.c: In function ‘scramdisk_init’:
/home/jcet/ScramDisk-2.1/driver/sddriver.c:1829:5: warning: passing argument 2 of ‘blk_queue_make_request’ from incompatible pointer type [enabled by default]
In file included from /home/jcet/ScramDisk-2.1/driver/sddriver.h:77:0,
from /home/jcet/ScramDisk-2.1/driver/sddriver.c:217:
include/linux/blkdev.h:923:13: note: expected ‘void ()(struct request_queue , struct bio )’ but argument is of type ‘int ()(struct request_queue , struct bio )’
cc1: some warnings being treated as errors
scripts/Makefile.build:308: recipe for target '/home/jcet/ScramDisk-2.1/driver/sddriver.o' failed
make[2]: [/home/jcet/ScramDisk-2.1/driver/sddriver.o] Error 1
Makefile:1221: recipe for target 'module/home/jcet/ScramDisk-2.1/driver' failed
make[1]: [module/home/jcet/ScramDisk-2.1/driver] Error 2
make[1]: Leaving directory '/usr/src/kernel-devel-3.12.15-pclos1'
Makefile:97: recipe for target 'all' failed
make: *** [all] Error 2
Worked fine with 3.4 kernel yet... Am I doing something wrong? I use this wonderful software almost daily.
The following patch to sddriver.c and makefiles seems to fix it for newer kernels.
WARNING: not extensively tested.
Additionally, the following patches are needed for kernel 3.14.
Please test.
Patch for 3.19 kernel: