Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
filesystems
lustre_2_12
0061-LU-15563-build-Include-the-new-linux-blk-i...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0061-LU-15563-build-Include-the-new-linux-blk-integrity.h.patch of Package lustre_2_12
From afe944a12091081b3bfeaa2365fb03ef272ba9ba Mon Sep 17 00:00:00 2001 From: Shaun Tancheff <shaun.tancheff@hpe.com> Date: Fri, 27 May 2022 22:25:05 +0700 Subject: [PATCH] LU-15563 build: Include the new linux/blk-integrity.h Linux v5.15-rc6-17-gfe45e630a103 block: move integrity handling out of <linux/blkdev.h> Include the new linux/blk-integrity.h Since blk-integrity is only used in osd-ldiskfs we can migrate the compatibility wrappers: blk_integrity_interval(), blk_integrity_name(), bdev_integrity_enabled(), and bip_size() to osd-ldiskfs/osd_internal.h HPE-bug-id: LUS-10921 Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com> Change-Id: Idcbef9b43b7d2a740291e3783f81c23454209a25 Reviewed-on: https://review.whamcloud.com/47166 Tested-by: jenkins <devops@whamcloud.com> Tested-by: Maloo <maloo@whamcloud.com> Reviewed-by: Alexey Lyashkov <alexey.lyashkov@hpe.com> Reviewed-by: Jian Yu <yujian@whamcloud.com> Reviewed-by: Oleg Drokin <green@whamcloud.com> --- libcfs/autoconf/lustre-libcfs.m4 | 17 +++++++ lustre/include/lustre_compat.h | 80 ----------------------------------- lustre/osd-ldiskfs/osd_internal.h | 85 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+), 80 deletions(-) --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -1533,6 +1533,7 @@ LIBCFS_HAVE_PANIC_NOTIFIER_HEADER LIBCFS_PARAM_SET_UINT_MINMAX # 5.17 LIBCFS_PDE_DATA_EXISTS +LIBCFS_LINUX_BLK_INTEGRITY_HEADER ]) # LIBCFS_PROG_LINUX # @@ -1632,6 +1633,22 @@ pde_data, [ ]) # LIBCFS_PDE_DATA_EXISTS # +# LIBCFS_LINUX_BLK_INTEGRITY_HEADER +# +# Kernel 5.15-rc6 commit fe45e630a1035aea94c29016f2598bbde149bbe3 +# block: move integrity handling out of <linux/blkdev.h> +# +AC_DEFUN([LIBCFS_LINUX_BLK_INTEGRITY_HEADER], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_LINUX_HEADER([linux/blk-integrity.h], [ + AC_DEFINE(HAVE_LINUX_BLK_INTEGRITY_HEADER, 1, + [linux/blk-integrity.h is present]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LIBCFS_LINUX_BLK_INTEGRITY_HEADER + +# # LIBCFS_CONFIG_FILES # # files that should be generated with AC_OUTPUT --- a/lustre/include/lustre_compat.h +++ b/lustre/include/lustre_compat.h @@ -44,7 +44,6 @@ #include <linux/workqueue.h> #include <linux/blkdev.h> #include <linux/slab.h> - #include <libcfs/linux/linux-fs.h> #include <lustre_patchless_compat.h> #include <obd_support.h> @@ -703,85 +702,6 @@ static inline struct timespec current_ti #define READ_ONCE ACCESS_ONCE #endif -#if IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY) -static inline unsigned short blk_integrity_interval(struct blk_integrity *bi) -{ -#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY - return bi->interval_exp ? 1 << bi->interval_exp : 0; -#elif defined(HAVE_INTERVAL_BLK_INTEGRITY) - return bi->interval; -#else - return bi->sector_size; -#endif /* !HAVE_INTERVAL_EXP_BLK_INTEGRITY */ -} - -static inline const char *blk_integrity_name(struct blk_integrity *bi) -{ -#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY - return bi->profile->name; -#else - return bi->name; -#endif -} - -static inline unsigned int bip_size(struct bio_integrity_payload *bip) -{ -#ifdef HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD - return bip->bip_iter.bi_size; -#else - return bip->bip_size; -#endif -} -#else /* !CONFIG_BLK_DEV_INTEGRITY */ -static inline unsigned short blk_integrity_interval(struct blk_integrity *bi) -{ - return 0; -} -static inline const char *blk_integrity_name(struct blk_integrity *bi) -{ - /* gcc8 dislikes when strcmp() is called against NULL */ - return ""; -} -#endif /* !CONFIG_BLK_DEV_INTEGRITY */ - -#ifndef INTEGRITY_FLAG_READ -#define INTEGRITY_FLAG_READ BLK_INTEGRITY_VERIFY -#endif - -#ifndef INTEGRITY_FLAG_WRITE -#define INTEGRITY_FLAG_WRITE BLK_INTEGRITY_GENERATE -#endif - -static inline bool bdev_integrity_enabled(struct block_device *bdev, int rw) -{ -#if IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY) - struct blk_integrity *bi = bdev_get_integrity(bdev); - - if (bi == NULL) - return false; - -#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY - if (rw == 0 && bi->profile->verify_fn != NULL && - (bi->flags & INTEGRITY_FLAG_READ)) - return true; - - if (rw == 1 && bi->profile->generate_fn != NULL && - (bi->flags & INTEGRITY_FLAG_WRITE)) - return true; -#else - if (rw == 0 && bi->verify_fn != NULL && - (bi->flags & INTEGRITY_FLAG_READ)) - return true; - - if (rw == 1 && bi->generate_fn != NULL && - (bi->flags & INTEGRITY_FLAG_WRITE)) - return true; -#endif /* !HAVE_INTERVAL_EXP_BLK_INTEGRITY */ -#endif /* !CONFIG_BLK_DEV_INTEGRITY */ - - return false; -} - #ifdef HAVE_PAGEVEC_INIT_ONE_PARAM #define ll_pagevec_init(pvec, n) pagevec_init(pvec) #else --- a/lustre/osd-ldiskfs/osd_internal.h +++ b/lustre/osd-ldiskfs/osd_internal.h @@ -66,6 +66,12 @@ #include "osd_scrub.h" #include "osd_quota_fmt.h" +#if IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY) + #ifdef HAVE_LINUX_BLK_INTEGRITY_HEADER + #include <linux/blk-integrity.h> + #endif +#endif + struct inode; extern struct kmem_cache *dynlock_cachep; @@ -1455,4 +1461,83 @@ int osd_get_integrity_profile(struct osd integrity_vrfy_fn **verify_fn); #endif +#if IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY) +static inline unsigned short blk_integrity_interval(struct blk_integrity *bi) +{ +#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY + return bi->interval_exp ? 1 << bi->interval_exp : 0; +#elif defined(HAVE_INTERVAL_BLK_INTEGRITY) + return bi->interval; +#else + return bi->sector_size; +#endif /* !HAVE_INTERVAL_EXP_BLK_INTEGRITY */ +} + +static inline const char *blk_integrity_name(struct blk_integrity *bi) +{ +#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY + return bi->profile->name; +#else + return bi->name; +#endif +} + +static inline unsigned int bip_size(struct bio_integrity_payload *bip) +{ +#ifdef HAVE_BIP_ITER_BIO_INTEGRITY_PAYLOAD + return bip->bip_iter.bi_size; +#else + return bip->bip_size; +#endif +} +#else /* !CONFIG_BLK_DEV_INTEGRITY */ +static inline unsigned short blk_integrity_interval(struct blk_integrity *bi) +{ + return 0; +} +static inline const char *blk_integrity_name(struct blk_integrity *bi) +{ + /* gcc8 dislikes when strcmp() is called against NULL */ + return ""; +} +#endif /* !CONFIG_BLK_DEV_INTEGRITY */ + +#ifndef INTEGRITY_FLAG_READ +#define INTEGRITY_FLAG_READ BLK_INTEGRITY_VERIFY +#endif + +#ifndef INTEGRITY_FLAG_WRITE +#define INTEGRITY_FLAG_WRITE BLK_INTEGRITY_GENERATE +#endif + +static inline bool bdev_integrity_enabled(struct block_device *bdev, int rw) +{ +#if IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY) + struct blk_integrity *bi = bdev_get_integrity(bdev); + + if (bi == NULL) + return false; + +#ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY + if (rw == 0 && bi->profile->verify_fn != NULL && + (bi->flags & INTEGRITY_FLAG_READ)) + return true; + + if (rw == 1 && bi->profile->generate_fn != NULL && + (bi->flags & INTEGRITY_FLAG_WRITE)) + return true; +#else + if (rw == 0 && bi->verify_fn != NULL && + (bi->flags & INTEGRITY_FLAG_READ)) + return true; + + if (rw == 1 && bi->generate_fn != NULL && + (bi->flags & INTEGRITY_FLAG_WRITE)) + return true; +#endif /* !HAVE_INTERVAL_EXP_BLK_INTEGRITY */ +#endif /* !CONFIG_BLK_DEV_INTEGRITY */ + + return false; +} + #endif /* _OSD_INTERNAL_H */
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor