super.c (1dfc0686c29a9bbd3a446a29f9ccde3dec3bc75a) super.c (b16671e8f493e3df40b1fb0dff4078f391c5099a)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 50 unchanged lines hidden (view full) ---

59#define BCACHE_DEVICE_IDX_MAX ((1U << MINORBITS)/BCACHE_MINORS)
60
61/* Superblock */
62
63static unsigned int get_bucket_size(struct cache_sb *sb, struct cache_sb_disk *s)
64{
65 unsigned int bucket_size = le16_to_cpu(s->bucket_size);
66
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * bcache setup/teardown code, and some metadata io - read a superblock and
4 * figure out what to do with it.
5 *
6 * Copyright 2010, 2011 Kent Overstreet <kent.overstreet@gmail.com>
7 * Copyright 2012 Google, Inc.
8 */

--- 50 unchanged lines hidden (view full) ---

59#define BCACHE_DEVICE_IDX_MAX ((1U << MINORBITS)/BCACHE_MINORS)
60
61/* Superblock */
62
63static unsigned int get_bucket_size(struct cache_sb *sb, struct cache_sb_disk *s)
64{
65 unsigned int bucket_size = le16_to_cpu(s->bucket_size);
66
67 if (sb->version >= BCACHE_SB_VERSION_CDEV_WITH_FEATURES &&
68 bch_has_feature_large_bucket(sb))
69 bucket_size |= le16_to_cpu(s->bucket_size_hi) << 16;
67 if (sb->version >= BCACHE_SB_VERSION_CDEV_WITH_FEATURES) {
68 if (bch_has_feature_large_bucket(sb)) {
69 unsigned int max, order;
70
70
71 max = sizeof(unsigned int) * BITS_PER_BYTE - 1;
72 order = le16_to_cpu(s->bucket_size);
73 /*
74 * bcache tool will make sure the overflow won't
75 * happen, an error message here is enough.
76 */
77 if (order > max)
78 pr_err("Bucket size (1 << %u) overflows\n",
79 order);
80 bucket_size = 1 << order;
81 } else if (bch_has_feature_obso_large_bucket(sb)) {
82 bucket_size +=
83 le16_to_cpu(s->obso_bucket_size_hi) << 16;
84 }
85 }
86
71 return bucket_size;
72}
73
74static const char *read_super_common(struct cache_sb *sb, struct block_device *bdev,
75 struct cache_sb_disk *s)
76{
77 const char *err;
78 unsigned int i;

--- 2811 unchanged lines hidden ---
87 return bucket_size;
88}
89
90static const char *read_super_common(struct cache_sb *sb, struct block_device *bdev,
91 struct cache_sb_disk *s)
92{
93 const char *err;
94 unsigned int i;

--- 2811 unchanged lines hidden ---