::encode(*strip_header, strip_header->header->data);
set_header(strip_header->cid, strip_header->oid, *(strip_header->header), t);
+ strip_header->updated = false;
}
return 0;
}
if (header->deleted)
continue;
- r = store->backend->save_strip_header(header, t);
+ if (header->updated) {
+ r = store->backend->save_strip_header(header, t);
- if (r < 0) {
- dout(10) << __func__ << " save strip header failed " << dendl;
- goto out;
+ if (r < 0) {
+ dout(10) << __func__ << " save strip header failed " << dendl;
+ goto out;
+ }
}
}
if (len + offset > header->max_size) {
header->max_size = len + offset;
header->bits.resize(header->max_size/header->strip_size+1);
+ header->updated = true;
}
vector<StripObjectMap::StripExtent> extents;
value.append_zero(header->strip_size-value.length());
header->bits[iter->no] = 1;
+ header->updated = true;
}
assert(value.length() == header->strip_size);
values[key].swap(value);
}
assert(bl_offset == len);
- header->updated = true;
t.set_buffer_keys(header, OBJECT_STRIP_PREFIX, values);
dout(10) << __func__ << " " << header->cid << "/" << header->oid << " "
<< offset << "~" << len << " = " << r << dendl;