diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-09-03 18:31:45 +1000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-09-03 18:36:09 +1000 |
commit | 7dbe0797b1c98fc63af20af03c2b36cc04a7386e (patch) | |
tree | 30edf9c9d54b347c07778e5863439ad0cf92da01 /source4/libnet | |
parent | bfccc4590dc94b37258b7225d153c4c01d1a28d6 (diff) | |
download | samba-7dbe0797b1c98fc63af20af03c2b36cc04a7386e.tar.gz samba-7dbe0797b1c98fc63af20af03c2b36cc04a7386e.tar.bz2 samba-7dbe0797b1c98fc63af20af03c2b36cc04a7386e.zip |
show more reasonable object counts during a vampire
We now show the total number of objects we have processed, which gives
the user a better idea of how much has been done. A vampire on a large
domain can take an hour or more (which needs to be fixed btw, it is a
problem with the lack of scalability of the ltdb index code). Watching
the same msg for an hour makes you wonder if any progress is being
made!
Diffstat (limited to 'source4/libnet')
-rw-r--r-- | source4/libnet/libnet_vampire.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/source4/libnet/libnet_vampire.c b/source4/libnet/libnet_vampire.c index d8b890e5b4..ec1545e6a4 100644 --- a/source4/libnet/libnet_vampire.c +++ b/source4/libnet/libnet_vampire.c @@ -71,6 +71,8 @@ struct vampire_state { struct loadparm_context *lp_ctx; struct tevent_context *event_ctx; + unsigned total_objects; + char *last_partition; }; static NTSTATUS vampire_prepare_db(void *private_data, @@ -190,8 +192,8 @@ static NTSTATUS vampire_apply_schema(struct vampire_state *s, mapping_ctr = &c->ctr6->mapping_ctr; object_count = s->schema_part.object_count; first_object = s->schema_part.first_object; - linked_attributes_count = 0; /* TODO: ! */ - linked_attributes = NULL; /* TODO: ! */; + linked_attributes_count = c->ctr6->linked_attributes_count; + linked_attributes = c->ctr6->linked_attributes; s_dsa->highwatermark = c->ctr6->new_highwatermark; s_dsa->source_dsa_obj_guid = c->ctr6->source_dsa_guid; s_dsa->source_dsa_invocation_id = c->ctr6->source_dsa_invocation_id; @@ -376,6 +378,7 @@ static NTSTATUS vampire_schema_chunk(void *private_data, struct drsuapi_DsReplicaObjectListItemEx *cur; uint32_t nc_linked_attributes_count; uint32_t linked_attributes_count; + struct drsuapi_DsReplicaLinkedAttribute *linked_attributes; switch (c->ctr_level) { case 1: @@ -385,6 +388,7 @@ static NTSTATUS vampire_schema_chunk(void *private_data, first_object = c->ctr1->first_object; nc_linked_attributes_count = 0; linked_attributes_count = 0; + linked_attributes = NULL; break; case 6: mapping_ctr = &c->ctr6->mapping_ctr; @@ -393,6 +397,7 @@ static NTSTATUS vampire_schema_chunk(void *private_data, first_object = c->ctr6->first_object; nc_linked_attributes_count = c->ctr6->nc_linked_attributes_count; linked_attributes_count = c->ctr6->linked_attributes_count; + linked_attributes = c->ctr6->linked_attributes; break; default: return NT_STATUS_INVALID_PARAMETER; @@ -508,15 +513,24 @@ static NTSTATUS vampire_store_chunk(void *private_data, NT_STATUS_HAVE_NO_MEMORY(tmp_dns_name); s_dsa->other_info->dns_name = tmp_dns_name; + /* we want to show a count per partition */ + if (!s->last_partition || strcmp(s->last_partition, c->partition->nc.dn) != 0) { + s->total_objects = 0; + talloc_free(s->last_partition); + s->last_partition = talloc_strdup(s, c->partition->nc.dn); + } + s->total_objects += object_count; + if (nc_object_count) { DEBUG(0,("Partition[%s] objects[%u/%u] linked_values[%u/%u]\n", - c->partition->nc.dn, object_count, nc_object_count, + c->partition->nc.dn, s->total_objects, nc_object_count, linked_attributes_count, nc_linked_attributes_count)); } else { DEBUG(0,("Partition[%s] objects[%u] linked_values[%u\n", - c->partition->nc.dn, object_count, linked_attributes_count)); + c->partition->nc.dn, s->total_objects, linked_attributes_count)); } + status = dsdb_extended_replicated_objects_commit(s->ldb, c->partition->nc.dn, mapping_ctr, |