Open-CAS / open-cas-linux

Open CAS Linux
https://open-cas.com
BSD 3-Clause "New" or "Revised" License
216 stars 82 forks source link

compiling on newer kernels (v6.5+) #1460

Closed daire-byrne closed 4 months ago

daire-byrne commented 8 months ago

Hi,

I tried to compile open-cas on Debian 12 with a 6.5 kernel and I didn't get very far. I fixed one issue:

index bc8d50a..6d2cdb0 100644
--- a/modules/cas_cache/control.c
+++ b/modules/cas_cache/control.c
@@ -42,7 +42,7 @@ int __init cas_ctrl_device_init(void)
                goto error_cdev_add;
        }

-       ctrl->class = class_create(THIS_MODULE, "cas");
+       ctrl->class = class_create("cas");
        if (IS_ERR(ctrl->class)) {
                printk(KERN_ERR "Cannot create control chrdev class.\n");
                result = PTR_ERR(ctrl->class);

But then didn't get much further:

make[2]: Entering directory '/usr/src/linux-headers-6.5.11-7-pve'
  CC [M]  /tmp/open-cas-linux/modules/cas_cache/exp_obj.o
/tmp/open-cas-linux/modules/cas_cache/exp_obj.c:294:17: error: initialization of ‘int (*)(struct gendisk *, blk_mode_t)’ {aka ‘int (*)(struct gendisk *, unsigned int)’} from incompatible pointer type ‘int (*)(struct block_device *, fmode_t)’ {aka ‘int (*)(struct block_device *, unsigned int)’} [-Werror=incompatible-pointer-types]
  294 |         .open = _cas_exp_obj_open,
      |                 ^~~~~~~~~~~~~~~~~
/tmp/open-cas-linux/modules/cas_cache/exp_obj.c:294:17: note: (near initialization for ‘_cas_exp_obj_ops.open’)
/tmp/open-cas-linux/modules/cas_cache/exp_obj.c:295:20: error: initialization of ‘void (*)(struct gendisk *)’ from incompatible pointer type ‘void (*)(struct gendisk *, fmode_t)’ {aka ‘void (*)(struct gendisk *, unsigned int)’} [-Werror=incompatible-pointer-types]
  295 |         .release = _cas_exp_obj_close,
      |                    ^~~~~~~~~~~~~~~~~~
/tmp/open-cas-linux/modules/cas_cache/exp_obj.c:295:20: note: (near initialization for ‘_cas_exp_obj_ops.release’)
cc1: all warnings being treated as errors
make[5]: *** [scripts/Makefile.build:251: /tmp/open-cas-linux/modules/cas_cache/exp_obj.o] Error 1
make[4]: *** [scripts/Makefile.build:488: /tmp/open-cas-linux/modules/cas_cache] Error 2
make[3]: *** [/usr/src/linux-headers-6.5.11-7-pve/Makefile:2039: /tmp/open-cas-linux/modules] Error 2
make[2]: *** [Makefile:234: __sub-make] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-6.5.11-7-pve'
make[1]: *** [Makefile:46: default] Error 2
make[1]: Leaving directory '/tmp/open-cas-linux/modules'
make: *** [Makefile:22: modules] Error 2

I guess my question is a more general one around updates for newer kernels - how often does that happen for this project?

I see some other tickets around adding support for RHEL9 clones but not a whole lot of feedback. Is this project still being actively developed even?

robertbaldyga commented 4 months ago

Hi @daire-byrne. I recently merged patches that make current master branch support kernels up to 6.8. We are planning a next stable release of Open CAS on September (v24.09).