Lines Matching refs:sb

136 	struct dmz_super	*sb;
177 struct dmz_sb sb[2];
541 sector_t block = zmd->sb[zmd->mblk_primary].block + mblk_no;
542 struct dmz_dev *dev = zmd->sb[zmd->mblk_primary].dev;
673 struct dmz_dev *dev = zmd->sb[zmd->mblk_primary].dev;
716 struct dmz_dev *dev = zmd->sb[set].dev;
717 sector_t block = zmd->sb[set].block + mblk->no;
769 struct dmz_mblock *mblk = zmd->sb[set].mblk;
770 struct dmz_super *sb = zmd->sb[set].sb;
771 struct dmz_dev *dev = zmd->sb[set].dev;
776 sb->magic = cpu_to_le32(DMZ_MAGIC);
778 sb->version = cpu_to_le32(zmd->sb_version);
781 export_uuid(sb->dmz_uuid, &zmd->uuid);
782 memcpy(sb->dmz_label, zmd->label, BDEVNAME_SIZE);
783 export_uuid(sb->dev_uuid, &dev->uuid);
786 sb->gen = cpu_to_le64(sb_gen);
793 sb_block = zmd->sb[set].zone->id << zmd->zone_nr_blocks_shift;
794 sb->sb_block = cpu_to_le64(sb_block);
795 sb->nr_meta_blocks = cpu_to_le32(zmd->nr_meta_blocks);
796 sb->nr_reserved_seq = cpu_to_le32(zmd->nr_reserved_seq);
797 sb->nr_chunks = cpu_to_le32(zmd->nr_chunks);
799 sb->nr_map_blocks = cpu_to_le32(zmd->nr_map_blocks);
800 sb->nr_bitmap_blocks = cpu_to_le32(zmd->nr_bitmap_blocks);
802 sb->crc = 0;
803 sb->crc = cpu_to_le32(crc32_le(sb_gen, (unsigned char *)sb, DMZ_BLOCK_SIZE));
805 ret = dmz_rdwr_block(dev, REQ_OP_WRITE, zmd->sb[set].block,
821 struct dmz_dev *dev = zmd->sb[set].dev;
902 dev = zmd->sb[zmd->mblk_primary].dev;
982 struct dmz_super *sb = dsb->sb;
988 if (le32_to_cpu(sb->magic) != DMZ_MAGIC) {
990 DMZ_MAGIC, le32_to_cpu(sb->magic));
994 zmd->sb_version = le32_to_cpu(sb->version);
1005 gen = le64_to_cpu(sb->gen);
1006 stored_crc = le32_to_cpu(sb->crc);
1007 sb->crc = 0;
1008 crc = crc32_le(gen, (unsigned char *)sb, DMZ_BLOCK_SIZE);
1015 sb_block = le64_to_cpu(sb->sb_block);
1024 import_uuid(&sb_uuid, sb->dmz_uuid);
1036 memcpy(zmd->label, sb->dmz_label, BDEVNAME_SIZE);
1037 else if (memcmp(zmd->label, sb->dmz_label, BDEVNAME_SIZE)) {
1039 sb->dmz_label, zmd->label);
1042 import_uuid(&dev->uuid, sb->dev_uuid);
1060 nr_meta_zones = (le32_to_cpu(sb->nr_meta_blocks) + zmd->zone_nr_blocks - 1)
1069 if (!le32_to_cpu(sb->nr_reserved_seq) ||
1070 le32_to_cpu(sb->nr_reserved_seq) >= (zmd->nr_useable_zones - nr_meta_zones)) {
1076 (nr_meta_zones * 2 + le32_to_cpu(sb->nr_reserved_seq));
1077 if (le32_to_cpu(sb->nr_chunks) > nr_data_zones) {
1079 le32_to_cpu(sb->nr_chunks), nr_data_zones);
1084 zmd->nr_meta_blocks = le32_to_cpu(sb->nr_meta_blocks);
1085 zmd->nr_reserved_seq = le32_to_cpu(sb->nr_reserved_seq);
1086 zmd->nr_chunks = le32_to_cpu(sb->nr_chunks);
1087 zmd->nr_map_blocks = le32_to_cpu(sb->nr_map_blocks);
1088 zmd->nr_bitmap_blocks = le32_to_cpu(sb->nr_bitmap_blocks);
1098 static int dmz_read_sb(struct dmz_metadata *zmd, struct dmz_sb *sb, int set)
1101 set, sb->dev->bdev, sb->block);
1103 return dmz_rdwr_block(sb->dev, REQ_OP_READ,
1104 sb->block, sb->mblk->page);
1116 unsigned int zone_id = zmd->sb[0].zone->id;
1124 zmd->sb[1].mblk = mblk;
1125 zmd->sb[1].sb = mblk->data;
1128 zmd->sb[1].block = zmd->sb[0].block + zone_nr_blocks;
1129 zmd->sb[1].zone = dmz_get(zmd, zone_id + 1);
1130 zmd->sb[1].dev = zmd->sb[0].dev;
1132 if (dmz_read_sb(zmd, &zmd->sb[1], 1) != 0)
1134 if (le32_to_cpu(zmd->sb[1].sb->magic) == DMZ_MAGIC)
1136 zmd->sb[1].block += zone_nr_blocks;
1137 zmd->sb[1].zone = dmz_get(zmd, zone_id + i);
1141 zmd->sb[1].mblk = NULL;
1142 zmd->sb[1].zone = NULL;
1143 zmd->sb[1].dev = NULL;
1151 static int dmz_get_sb(struct dmz_metadata *zmd, struct dmz_sb *sb, int set)
1161 sb->mblk = mblk;
1162 sb->sb = mblk->data;
1165 ret = dmz_read_sb(zmd, sb, set);
1168 sb->mblk = NULL;
1184 dmz_dev_warn(zmd->sb[dst_set].dev,
1188 zmd->sb[0].block = dmz_start_block(zmd, zmd->sb[0].zone);
1190 zmd->sb[1].block = dmz_start_block(zmd, zmd->sb[1].zone);
1198 ret = dmz_rdwr_block(zmd->sb[src_set].dev, REQ_OP_READ,
1199 zmd->sb[src_set].block + i, page);
1202 ret = dmz_rdwr_block(zmd->sb[dst_set].dev, REQ_OP_WRITE,
1203 zmd->sb[dst_set].block + i, page);
1209 if (!zmd->sb[dst_set].mblk) {
1210 zmd->sb[dst_set].mblk = dmz_alloc_mblock(zmd, 0);
1211 if (!zmd->sb[dst_set].mblk) {
1215 zmd->sb[dst_set].sb = zmd->sb[dst_set].mblk->data;
1234 if (!zmd->sb[0].zone) {
1240 zmd->sb[0].block = dmz_start_block(zmd, zmd->sb[0].zone);
1241 zmd->sb[0].dev = zmd->sb[0].zone->dev;
1242 ret = dmz_get_sb(zmd, &zmd->sb[0], 0);
1244 dmz_dev_err(zmd->sb[0].dev, "Read primary super block failed");
1248 ret = dmz_check_sb(zmd, &zmd->sb[0], false);
1253 if (!zmd->sb[1].zone) {
1255 zmd->sb[0].zone->id + zmd->nr_meta_zones;
1257 zmd->sb[1].zone = dmz_get(zmd, zone_id);
1259 zmd->sb[1].block = dmz_start_block(zmd, zmd->sb[1].zone);
1260 zmd->sb[1].dev = zmd->sb[0].dev;
1261 ret = dmz_get_sb(zmd, &zmd->sb[1], 1);
1266 dmz_dev_err(zmd->sb[1].dev, "Read secondary super block failed");
1270 ret = dmz_check_sb(zmd, &zmd->sb[1], false);
1274 /* Use highest generation sb first */
1281 sb_gen[0] = le64_to_cpu(zmd->sb[0].sb->gen);
1285 dmz_dev_err(zmd->sb[0].dev,
1292 sb_gen[1] = le64_to_cpu(zmd->sb[1].sb->gen);
1297 dmz_dev_err(zmd->sb[1].dev,
1311 dmz_dev_debug(zmd->sb[zmd->mblk_primary].dev,
1317 struct dmz_sb *sb;
1319 sb = kzalloc(sizeof(struct dmz_sb), GFP_KERNEL);
1320 if (!sb)
1323 sb->block = 0;
1324 sb->zone = dmz_get(zmd, zmd->dev[i].zone_offset);
1325 sb->dev = &zmd->dev[i];
1326 if (!dmz_is_meta(sb->zone)) {
1327 dmz_dev_err(sb->dev,
1329 sb->zone->id);
1333 ret = dmz_get_sb(zmd, sb, i + 1);
1335 dmz_dev_err(sb->dev,
1337 dmz_free_mblock(zmd, sb->mblk);
1340 ret = dmz_check_sb(zmd, sb, true);
1341 dmz_free_mblock(zmd, sb->mblk);
1346 kfree(sb);
1407 if (zmd->nr_devs == 1 && !zmd->sb[0].zone) {
1409 zmd->sb[0].zone = zone;
1524 zmd->sb[0].zone = dmz_get(zmd, 0);
2797 if (zmd->sb[i].mblk) {
2798 dmz_free_mblock(zmd, zmd->sb[i].mblk);
2799 zmd->sb[i].mblk = NULL;
2913 zone = dmz_get(zmd, zmd->sb[0].zone->id + i);