- ldout(cct, 40) << __func__ << " 0x" << std::hex
- << offset << "~" << length << dendl;
-
- num_free -= length;
- ceph_assert(num_free >= 0);
-
- uint64_t zone_num = offset / zone_size;
- uint64_t write_pointer = offset % zone_size;
- uint64_t remaining_space = get_remaining_space(zone_num);
-
- ceph_assert(get_write_pointer(zone_num) == write_pointer);
- ceph_assert(remaining_space <= length);
- advance_write_pointer(zone_num, remaining_space);
-
- ldout(cct, 40) << __func__ << " set zone 0x" << std::hex
- << zone_num << " write pointer to 0x" << zone_size << dendl;
-
- length -= remaining_space;
- ceph_assert(length % zone_size == 0);
-
- for ( ; length; length -= zone_size) {
- advance_write_pointer(++zone_num, zone_size);
- ldout(cct, 40) << __func__ << " set zone 0x" << std::hex
- << zone_num << " write pointer to 0x" << zone_size << dendl;
+ ldout(cct, 10) << dendl;
+ zone_states = std::move(_zone_states);
+ num_sequential_free = 0;
+ for (size_t i = first_seq_zone_num; i < num_zones; ++i) {
+ num_sequential_free += zone_size - (zone_states[i].write_pointer % zone_size);