bcache: introduce meta_bucket_pages() related helper routines
[platform/kernel/linux-starfive.git] / drivers / md / bcache / bcache.h
index 2d1743c..5e1c581 100644 (file)
@@ -762,6 +762,26 @@ struct bbio {
 #define bucket_bytes(c)                ((c)->sb.bucket_size << 9)
 #define block_bytes(c)         ((c)->sb.block_size << 9)
 
+static inline unsigned int meta_bucket_pages(struct cache_sb *sb)
+{
+       unsigned int n, max_pages;
+
+       max_pages = min_t(unsigned int,
+                         __rounddown_pow_of_two(USHRT_MAX) / PAGE_SECTORS,
+                         MAX_ORDER_NR_PAGES);
+
+       n = sb->bucket_size / PAGE_SECTORS;
+       if (n > max_pages)
+               n = max_pages;
+
+       return n;
+}
+
+static inline unsigned int meta_bucket_bytes(struct cache_sb *sb)
+{
+       return meta_bucket_pages(sb) << PAGE_SHIFT;
+}
+
 #define prios_per_bucket(c)                            \
        ((bucket_bytes(c) - sizeof(struct prio_set)) /  \
         sizeof(struct bucket_disk))