X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Finclude%2Flustre_compat.h;h=f55f6e5ed96d2f6195b51468983e88e66b8a0aa2;hb=fd193758bb95e3fbb4cd04e88f0d964f9cb510cf;hp=a94ff13814df4d58bcb1346c4c3f9fde0f035f82;hpb=b1e7be00cb6e1e7b3e35877cf8b8a209e456a2ea;p=fs%2Flustre-release.git diff --git a/lustre/include/lustre_compat.h b/lustre/include/lustre_compat.h index a94ff13..f55f6e5 100644 --- a/lustre/include/lustre_compat.h +++ b/lustre/include/lustre_compat.h @@ -82,12 +82,6 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt, path_put(&old_pwd); } -/* - * set ATTR_BLOCKS to a high value to avoid any risk of collision with other - * ATTR_* attributes (see bug 13828) - */ -#define ATTR_BLOCKS (1 << 27) - #define current_ngroups current_cred()->group_info->ngroups #define current_groups current_cred()->group_info->small_block @@ -154,6 +148,14 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt, #define SLAB_DESTROY_BY_RCU 0 #endif +#ifndef HAVE_INIT_LIST_HEAD_RCU +static inline void INIT_LIST_HEAD_RCU(struct list_head *list) +{ + WRITE_ONCE(list->next, list); + WRITE_ONCE(list->prev, list); +} +#endif + #ifndef HAVE_DQUOT_SUSPEND # define ll_vfs_dq_init vfs_dq_init # define ll_vfs_dq_drop vfs_dq_drop @@ -184,6 +186,12 @@ static inline void ll_set_fs_pwd(struct fs_struct *fs, struct vfsmount *mnt, #define bvl_to_page(bvl) (bvl->bv_page) #endif +#ifdef HAVE_BVEC_ITER +#define bio_start_sector(bio) (bio->bi_iter.bi_sector) +#else +#define bio_start_sector(bio) (bio->bi_sector) +#endif + #ifndef HAVE_BLK_QUEUE_MAX_SEGMENTS #define blk_queue_max_segments(rq, seg) \ do { blk_queue_max_phys_segments(rq, seg); \ @@ -386,11 +394,6 @@ static inline int radix_tree_exceptional_entry(void *arg) static inline void truncate_inode_pages_final(struct address_space *map) { truncate_inode_pages(map, 0); - /* Workaround for LU-118 */ - if (map->nrpages) { - spin_lock_irq(&map->tree_lock); - spin_unlock_irq(&map->tree_lock); - } /* Workaround end */ } #endif @@ -698,6 +701,7 @@ static inline struct timespec current_time(struct inode *inode) #define READ_ONCE ACCESS_ONCE #endif +#ifdef HAVE_BLK_INTEGRITY_ENABLED static inline unsigned short blk_integrity_interval(struct blk_integrity *bi) { #ifdef HAVE_INTERVAL_EXP_BLK_INTEGRITY @@ -717,5 +721,74 @@ static inline const char *blk_integrity_name(struct blk_integrity *bi) return bi->name; #endif } +#else +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 + +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 +} + +#ifdef HAVE_BLK_INTEGRITY_ENABLED +#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) +{ + 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 + + return false; +} +#else +static inline bool bdev_integrity_enabled(struct block_device *bdev, int rw) +{ + return false; +} +#endif /* HAVE_BLK_INTEGRITY_ENABLED */ + +#ifdef HAVE_PAGEVEC_INIT_ONE_PARAM +#define ll_pagevec_init(pvec, n) pagevec_init(pvec) +#else +#define ll_pagevec_init(pvec, n) pagevec_init(pvec, n) +#endif #endif /* _LUSTRE_COMPAT_H */