diff --git a/scst/include/scst.h b/scst/include/scst.h index 6322aa5da..e5240b743 100644 --- a/scst/include/scst.h +++ b/scst/include/scst.h @@ -4704,6 +4704,38 @@ static inline __be16 scst_cmd_get_dif_app_tag(struct scst_cmd *cmd, return cmd->dev->dev_dif_static_app_tag; } +#if defined(RHEL_MAJOR) && RHEL_MAJOR -0 <= 5 +static inline uint16_t get_unaligned_be16(const void *p) +{ + return be16_to_cpu(get_unaligned((__be16 *)p)); +} + +static inline void put_unaligned_be16(uint16_t i, void *p) +{ + put_unaligned(cpu_to_be16(i), (__be16 *)p); +} + +static inline uint32_t get_unaligned_be32(const void *p) +{ + return be32_to_cpu(get_unaligned((__be32 *)p)); +} + +static inline void put_unaligned_be32(uint32_t i, void *p) +{ + put_unaligned(cpu_to_be32(i), (__be32 *)p); +} + +static inline uint64_t get_unaligned_be64(const void *p) +{ + return be64_to_cpu(get_unaligned((__be64 *)p)); +} + +static inline void put_unaligned_be64(uint64_t i, void *p) +{ + put_unaligned(cpu_to_be64(i), (__be64 *)p); +} +#endif + /* * Returns T10-PI type 2 expected initial reference tag as LBA, i.e. converted * into CPU endianness. Valid only with protection type 2. @@ -5595,38 +5627,6 @@ if (!(condition)) { \ finish_wait(&(wq), &__wait); \ } -#if defined(RHEL_MAJOR) && RHEL_MAJOR -0 <= 5 -static inline uint16_t get_unaligned_be16(const void *p) -{ - return be16_to_cpu(get_unaligned((__be16 *)p)); -} - -static inline void put_unaligned_be16(uint16_t i, void *p) -{ - put_unaligned(cpu_to_be16(i), (__be16 *)p); -} - -static inline uint32_t get_unaligned_be32(const void *p) -{ - return be32_to_cpu(get_unaligned((__be32 *)p)); -} - -static inline void put_unaligned_be32(uint32_t i, void *p) -{ - put_unaligned(cpu_to_be32(i), (__be32 *)p); -} - -static inline uint64_t get_unaligned_be64(const void *p) -{ - return be64_to_cpu(get_unaligned((__be64 *)p)); -} - -static inline void put_unaligned_be64(uint64_t i, void *p) -{ - put_unaligned(cpu_to_be64(i), (__be64 *)p); -} -#endif - /* Only use get_unaligned_be24() if reading p - 1 is allowed. */ static inline uint32_t get_unaligned_be24(const uint8_t *const p) { diff --git a/scst/include/scst_const.h b/scst/include/scst_const.h index a2546d9b4..b695f1d4b 100644 --- a/scst/include/scst_const.h +++ b/scst/include/scst_const.h @@ -375,6 +375,9 @@ static inline int scst_sense_response_code(const uint8_t *sense) /* Upstream commit 93aae17a (v2.6.38) */ #define GET_EVENT_STATUS_NOTIFICATION 0x4a #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 26) +#define VARIABLE_LENGTH_CMD 0x7f +#endif #ifndef READ_16 #define READ_16 0x88 #endif diff --git a/scst/src/scst_lib.c b/scst/src/scst_lib.c index fac548d7e..b944cd61c 100644 --- a/scst/src/scst_lib.c +++ b/scst/src/scst_lib.c @@ -33,7 +33,10 @@ #include #include #include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) #include +#endif #include #include @@ -7696,7 +7699,12 @@ EXPORT_SYMBOL(scst_put_buf_full); static __be16 scst_dif_crc_fn(const void *data, unsigned int len) { +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27) return cpu_to_be16(crc_t10dif(data, len)); +#else + WARN_ON_ONCE(true); + return 0; +#endif } static __be16 scst_dif_ip_fn(const void *data, unsigned int len)