veeam / blksnap

Nonpersistent block device snapshot with block-level change-tracking capabilities.
GNU General Public License v2.0
84 stars 22 forks source link

Can't install blksnap on Ubuntu 23.10? #76

Closed incith closed 1 year ago

incith commented 1 year ago

Distribution

Ubuntu 23.10

Architecture

amd64

Kernel version

6.5.0-10-generic #10-Ubuntu SMP PREEMPT_DYNAMIC Fri Oct 13 13:49:38 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Blksnap version

blksnap/stable,now 6.0.3.1221

Bug description

When I issue apt install blksnap, dkms fails to build the module.

Steps to reproduce

apt purge blksnap dkms apt install blksnap

Expected behavior

To complete/install successfully.

Additional information

Thu Nov  9 03:58:22 PM EST 2023
make: Entering directory '/usr/src/linux-headers-6.5.0-10-generic'
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
  You are using:           gcc-13 (Ubuntu 13.2.0-4ubuntu3) 13.2.0
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/bdevfilter.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/log.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/big_buffer.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/cbt_map.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/chunk.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/ctrl.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/diff_io.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/diff_buffer.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.o
  CC [M]  /var/lib/dkms/blksnap/6.0.3.1221/build/event_queue.o
In file included from ./include/linux/highmem.h:5,
                 from ./include/linux/bvec.h:10,
                 from ./include/linux/blk_types.h:10,
                 from ./include/linux/blkdev.h:9,
                 from /var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c:6:
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c: In function ‘diff_area_free’:
./include/linux/fs.h:111:33: warning: passing argument 2 of ‘blkdev_put’ makes pointer from integer without a cast [-Wint-conversion]
  111 | #define FMODE_READ              ((__force fmode_t)0x1)
      |                                 ^
      |                                 |
      |                                 unsigned int
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c:127:50: note: in expansion of macro ‘FMODE_READ’
  127 |                 blkdev_put(diff_area->orig_bdev, FMODE_READ | FMODE_WRITE);      |                                                  ^~~~~~~~~~
./include/linux/blkdev.h:1481:50: note: expected ‘void *’ but argument is of type ‘unsigned int’
 1481 | void blkdev_put(struct block_device *bdev, void *holder);
      |                                            ~~~~~~^~~~~~
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c: In function ‘diff_area_new’:
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c:278:16: error: too few arguments to function ‘blkdev_get_by_dev’
  278 |         bdev = blkdev_get_by_dev(dev_id, FMODE_READ | FMODE_WRITE, NULL);
      |                ^~~~~~~~~~~~~~~~~
./include/linux/blkdev.h:1474:22: note: declared here
 1474 | struct block_device *blkdev_get_by_dev(dev_t dev, blk_mode_t mode, void *holder,
      |                      ^~~~~~~~~~~~~~~~~
./include/linux/fs.h:111:33: warning: passing argument 2 of ‘blkdev_put’ makes pointer from integer without a cast [-Wint-conversion]
  111 | #define FMODE_READ              ((__force fmode_t)0x1)
      |                                 ^
      |                                 |
      |                                 unsigned int
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.c:287:34: note: in expansion of macro ‘FMODE_READ’
  287 |                 blkdev_put(bdev, FMODE_READ | FMODE_WRITE);
      |                                  ^~~~~~~~~~
./include/linux/blkdev.h:1481:50: note: expected ‘void *’ but argument is of type ‘unsigned int’
 1481 | void blkdev_put(struct block_device *bdev, void *holder);
      |                                            ~~~~~~^~~~~~
make[2]: *** [scripts/Makefile.build:251: /var/lib/dkms/blksnap/6.0.3.1221/build/diff_area.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from ./include/linux/highmem.h:5,
                 from ./include/linux/bvec.h:10,
                 from ./include/linux/blk_types.h:10,
                 from /var/lib/dkms/blksnap/6.0.3.1221/build/chunk.h:5,
                 from /var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c:14:
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c: In function ‘diff_storage_free’:
./include/linux/fs.h:111:33: warning: passing argument 2 of ‘blkdev_put’ makes pointer from integer without a cast [-Wint-conversion]
  111 | #define FMODE_READ              ((__force fmode_t)0x1)
      |                                 ^
      |                                 |
      |                                 unsigned int
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c:122:48: note: in expansion of macro ‘FMODE_READ’
  122 |                 blkdev_put(storage_bdev->bdev, FMODE_READ | FMODE_WRITE);
      |                                                ^~~~~~~~~~
In file included from /var/lib/dkms/blksnap/6.0.3.1221/build/chunk.h:6:
./include/linux/blkdev.h:1481:50: note: expected ‘void *’ but argument is of type ‘unsigned int’
 1481 | void blkdev_put(struct block_device *bdev, void *holder);
      |                                            ~~~~~~^~~~~~
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c: In function ‘diff_storage_add_storage_bdev’:
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c:157:16: error: too few arguments to function ‘blkdev_get_by_dev’
  157 |         bdev = blkdev_get_by_dev(dev_id, FMODE_READ | FMODE_WRITE, NULL);
      |                ^~~~~~~~~~~~~~~~~
./include/linux/blkdev.h:1474:22: note: declared here
 1474 | struct block_device *blkdev_get_by_dev(dev_t dev, blk_mode_t mode, void *holder,
      |                      ^~~~~~~~~~~~~~~~~
./include/linux/fs.h:111:33: warning: passing argument 2 of ‘blkdev_put’ makes pointer from integer without a cast [-Wint-conversion]
  111 | #define FMODE_READ              ((__force fmode_t)0x1)
      |                                 ^
      |                                 |
      |                                 unsigned int
/var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.c:166:34: note: in expansion of macro ‘FMODE_READ’
  166 |                 blkdev_put(bdev, FMODE_READ | FMODE_WRITE);
      |                                  ^~~~~~~~~~
./include/linux/blkdev.h:1481:50: note: expected ‘void *’ but argument is of type ‘unsigned int’
 1481 | void blkdev_put(struct block_device *bdev, void *holder);
      |                                            ~~~~~~^~~~~~
make[2]: *** [scripts/Makefile.build:251: /var/lib/dkms/blksnap/6.0.3.1221/build/diff_storage.o] Error 1
make[1]: *** [/usr/src/linux-headers-6.5.0-10-generic/Makefile:2037: /var/lib/dkms/blksnap/6.0.3.1221/build] Error 2
make: *** [Makefile:234: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-6.5.0-10-generic'
Fantu commented 1 year ago

6.0.3 was released before kernel 6.5, you can build from https://github.com/veeam/blksnap/commits/VAL-6.0 that support kernel 6.5

incith commented 1 year ago

6.0.3 was released before kernel 6.5, you can build from https://github.com/veeam/blksnap/commits/VAL-6.0 that support kernel 6.5

Is there a way to update my apt sources veeam.list? I'm not sure what to change it to.

incith commented 1 year ago

I see the install instructions. Should be no problem. Hopefully it can make its way into Veeam sources eventually.

kalledausb commented 1 year ago

Hi, not sure if here is the right place but with same Ubuntu and Kernel 6.6 I cannot manage to get it working, tried with several branches (stable 2.0 and VAL 6.1). Any updates planned for that Kernel?

Fantu commented 1 year ago

stable-2.0, and now also master branches, don't have external module but only the one for upstream integration and not compatible with actual veeam agent for linux (if you want use for it) as reported on top of README:

To Veeam agent for linux users: If you need only kernel module updated with latest kernel versions support and latest fixes for it build kernel module from VAL-6.0 or VAL-6.1 branches based on your Veeam agent for linux version

Is it not enough explained and need to be improved? about kernel 6.6 FWIK don't needs additional changes, changes for 6.5 support should be enough can you post the build error?

if instead you want to test the latest work for upstream integration (instead of use in VAL in production) the latest patch is here and should be applied on 6.7, It's likely you won't be able to apply clean to the 6.6 kernel

kalledausb commented 1 year ago

Hmpf, I missed that part, no idea how - sorry for that. So now using VAL-6.0 tree for my Veeam Agent 6.0.3 did the trick and I can confirm it is working with kernel 6.6.

Thanks a lot!