X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libbcachefs%2Futil.h;h=d06671a09852ada4329013206595ec00eaf1fbd0;hb=54b6beabf05b6cf62092f98f0c06395e4242b064;hp=ecfe54012e3d0306b04e0c7c7e5ffa790b0a4742;hpb=0206d42daf4c4bd3bbcfa15a2bef34319524db49;p=bcachefs-tools-debian diff --git a/libbcachefs/util.h b/libbcachefs/util.h index ecfe540..d06671a 100644 --- a/libbcachefs/util.h +++ b/libbcachefs/util.h @@ -60,14 +60,13 @@ static inline void vpfree(void *p, size_t size) free_pages((unsigned long) p, get_order(size)); } -static inline void *_vpmalloc(size_t size, gfp_t gfp_mask) +static inline void *vpmalloc_noprof(size_t size, gfp_t gfp_mask) { - return (void *) _get_free_pages(gfp_mask|__GFP_NOWARN, - get_order(size)) ?: - __vmalloc(size, gfp_mask); + return (void *) get_free_pages_noprof(gfp_mask|__GFP_NOWARN, + get_order(size)) ?: + __vmalloc_noprof(size, gfp_mask); } -#define vpmalloc(_size, _gfp) \ - alloc_hooks(_vpmalloc(_size, _gfp), void *, NULL) +#define vpmalloc(_size, _gfp) alloc_hooks(vpmalloc_noprof(_size, _gfp)) static inline void kvpfree(void *p, size_t size) { @@ -77,14 +76,13 @@ static inline void kvpfree(void *p, size_t size) vpfree(p, size); } -static inline void *_kvpmalloc(size_t size, gfp_t gfp_mask) +static inline void *kvpmalloc_noprof(size_t size, gfp_t gfp_mask) { return size < PAGE_SIZE - ? _kmalloc(size, gfp_mask) - : _vpmalloc(size, gfp_mask); + ? kmalloc_noprof(size, gfp_mask) + : vpmalloc_noprof(size, gfp_mask); } -#define kvpmalloc(_size, _gfp) \ - alloc_hooks(_kvpmalloc(_size, _gfp), void *, NULL) +#define kvpmalloc(_size, _gfp) alloc_hooks(kvpmalloc_noprof(_size, _gfp)) int mempool_init_kvpmalloc_pool(mempool_t *, int, size_t); @@ -470,8 +468,10 @@ struct bch_pd_controller { s64 last_change; s64 last_target; - /* If true, the rate will not increase if bch2_ratelimit_delay() - * is not being called often enough. */ + /* + * If true, the rate will not increase if bch2_ratelimit_delay() + * is not being called often enough. + */ bool backpressure; }; @@ -534,9 +534,9 @@ static inline unsigned fract_exp_two(unsigned x, unsigned fract_bits) } void bch2_bio_map(struct bio *bio, void *base, size_t); -int _bch2_bio_alloc_pages(struct bio *, size_t, gfp_t); +int bch2_bio_alloc_pages_noprof(struct bio *, size_t, gfp_t); #define bch2_bio_alloc_pages(_bio, _size, _gfp) \ - alloc_hooks(_bch2_bio_alloc_pages(_bio, _size, _gfp), int, -ENOMEM) + alloc_hooks(bch2_bio_alloc_pages_noprof(_bio, _size, _gfp)) static inline sector_t bdev_sectors(struct block_device *bdev) { @@ -609,6 +609,7 @@ static inline void __memcpy_u64s(void *dst, const void *src, { #ifdef CONFIG_X86_64 long d0, d1, d2; + asm volatile("rep ; movsq" : "=&c" (d0), "=&D" (d1), "=&S" (d2) : "0" (u64s), "1" (dst), "2" (src) @@ -685,6 +686,7 @@ static inline void __memmove_u64s_up(void *_dst, const void *_src, #ifdef CONFIG_X86_64 long d0, d1, d2; + asm volatile("std ;\n" "rep ; movsq\n" "cld ;\n" @@ -843,4 +845,11 @@ static inline int u8_cmp(u8 l, u8 r) return cmp_int(l, r); } +static inline int cmp_le32(__le32 l, __le32 r) +{ + return cmp_int(le32_to_cpu(l), le32_to_cpu(r)); +} + +#include + #endif /* _BCACHEFS_UTIL_H */