diff --git a/dm-sflc/bin/lite/compat.h b/dm-sflc/bin/lite/compat.h new file mode 120000 index 0000000..a97b7d9 --- /dev/null +++ b/dm-sflc/bin/lite/compat.h @@ -0,0 +1 @@ +../../src/lite/compat.h \ No newline at end of file diff --git a/dm-sflc/bin/lite/dm_io_helper.h b/dm-sflc/bin/lite/dm_io_helper.h deleted file mode 120000 index ec2aa8e..0000000 --- a/dm-sflc/bin/lite/dm_io_helper.h +++ /dev/null @@ -1 +0,0 @@ -../../src/lite/dm_io_helper.h \ No newline at end of file diff --git a/dm-sflc/src/lite/dm_io_helper.h b/dm-sflc/src/lite/compat.h similarity index 64% rename from dm-sflc/src/lite/dm_io_helper.h rename to dm-sflc/src/lite/compat.h index 7e0d915..9a934ef 100644 --- a/dm-sflc/src/lite/dm_io_helper.h +++ b/dm-sflc/src/lite/compat.h @@ -21,12 +21,24 @@ * If not, see . */ -#ifndef _SFLITE_DMIOHELPER_H -#define _SFLITE_DMIOHELPER_H +#ifndef _SFLITE_COMPAT_H +#define _SFLITE_COMPAT_H #include #include + +/** + * Compatibility alias for MAX_PAGE_ORDER, which was called + * MAX_ORDER until kernel 6.7.x + */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,8,0) +#define SFLC_COMPAT_MAX_PAGE_ORDER MAX_PAGE_ORDER +#else +#define SFLC_COMPAT_MAX_PAGE_ORDER MAX_ORDER +#endif + + /** * The function dm_io() has changed signature in recent kernels. * Here we provide a version-independent adapter, which uses a default value @@ -35,22 +47,22 @@ * 6.7.x with x>=11, 6.8.x with x>=2, 6.x with x>=9 */ #if LINUX_VERSION_MAJOR <= 5 // Old -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err) #elif LINUX_VERSION_MAJOR >= 7 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) // Ok LINUX_VERSION_MAJOR is 6 #elif LINUX_VERSION_PATCHLEVEL >= 9 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) #elif LINUX_VERSION_PATCHLEVEL == 8 && LINUX_VERSION_SUBLEVEL >= 2 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) #elif LINUX_VERSION_PATCHLEVEL == 7 && LINUX_VERSION_SUBLEVEL >= 11 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) #elif LINUX_VERSION_PATCHLEVEL == 6 && LINUX_VERSION_SUBLEVEL >= 23 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) #elif LINUX_VERSION_PATCHLEVEL == 1 && LINUX_VERSION_SUBLEVEL >= 83 // New -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err, IOPRIO_DEFAULT) #else // Old -#define sflc_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err) +#define sflc_compat_dm_io(ioreq, numreg, region, err) dm_io(ioreq, numreg, region, err) #endif -#endif /* _SFLITE_DMIOHELPER_H */ +#endif /* _SFLITE_COMPAT_H */ diff --git a/dm-sflc/src/lite/flush.c b/dm-sflc/src/lite/flush.c index 01a5e52..8177de5 100644 --- a/dm-sflc/src/lite/flush.c +++ b/dm-sflc/src/lite/flush.c @@ -22,7 +22,7 @@ */ #include "sflc_lite.h" -#include "dm_io_helper.h" +#include "compat.h" #include #include @@ -163,7 +163,7 @@ static int send_posmap_cwbs(struct sflite_volume *svol, gfp_t gfp) atomic_inc(&pending); /* Writing via async dm-io (implied by notify.fn above) won't return an error */ - (void) sflc_dm_io(&req, 1, ®ion, NULL); + (void) sflc_compat_dm_io(&req, 1, ®ion, NULL); /* Advance counters for next iteration */ i = j; diff --git a/dm-sflc/src/lite/posmap.c b/dm-sflc/src/lite/posmap.c index 2f3b7d4..af668ad 100644 --- a/dm-sflc/src/lite/posmap.c +++ b/dm-sflc/src/lite/posmap.c @@ -21,9 +21,9 @@ * If not, see . */ -#include -#include "dm_io_helper.h" #include "sflc_lite.h" +#include "compat.h" +#include /* Helpers */ @@ -177,7 +177,7 @@ static int __read_encrypted_posmap(struct sflite_volume *svol) .count = svol->sdev->posmap_size_sectors }; - return sflc_dm_io(&io_req, 1, &io_region, NULL); + return sflc_compat_dm_io(&io_req, 1, &io_region, NULL); } /** diff --git a/dm-sflc/src/lite/volume.c b/dm-sflc/src/lite/volume.c index 16f5d34..59b7faf 100644 --- a/dm-sflc/src/lite/volume.c +++ b/dm-sflc/src/lite/volume.c @@ -22,7 +22,7 @@ */ #include -#include +#include #include "sflc_lite.h" #include "sflc.h" diff --git a/dm-sflc/src/lite/write.c b/dm-sflc/src/lite/write.c index 389662a..e72c27e 100644 --- a/dm-sflc/src/lite/write.c +++ b/dm-sflc/src/lite/write.c @@ -22,14 +22,10 @@ */ #include "sflc_lite.h" +#include "compat.h" #include -/* Linux 6.8 renamed MAX_ORDER to MAX_PAGE_ORDER. */ -#ifndef MAX_PAGE_ORDER - #define MAX_PAGE_ORDER MAX_ORDER -#endif - static void sflite_write_endio(struct bio *phys_bio); @@ -65,7 +61,7 @@ static struct bio *allocate_phys_bio(struct sflite_io *io) /* Allocate pages in loop */ unsigned remaining_size = size; - unsigned order = MAX_PAGE_ORDER; + unsigned order = SFLC_COMPAT_MAX_PAGE_ORDER; while (remaining_size) { struct page *pages; unsigned size_to_add;