+ status = db_ctdb_store(rec, data, 0);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+
+ indata.dsize = offsetof(struct ctdb_control_schedule_for_deletion, key) + rec->key.dsize;
+ indata.dptr = talloc_zero_array(crec, uint8_t, indata.dsize);
+ if (indata.dptr == NULL) {
+ printf("out of memory\n");
+ exit(1);
+ }
+ dd = (struct ctdb_control_schedule_for_deletion *)(void *)indata.dptr;
+ dd->db_id = crec->ctdb_ctx->db_id;
+ dd->hdr = crec->header;
+ dd->keylen = rec->key.dsize;
+ memcpy(dd->key, rec->key.dptr, rec->key.dsize);
+
+ status = ctdbd_control_local(messaging_ctdbd_connection(),
+ CTDB_CONTROL_SCHEDULE_FOR_DELETION,
+ crec->ctdb_ctx->db_id,
+ 0, /* flags */
+ indata,
+ NULL, /* outdata */
+ NULL, /* errmsg */
+ &cstatus);
+ talloc_free(indata.dptr);
+
+ if (!NT_STATUS_IS_OK(status) || cstatus != 0) {
+ DEBUG(1, (__location__ " Error sending local control "
+ "SCHEDULE_FOR_DELETION: %s, cstatus = %d\n",
+ nt_errstr(status), cstatus));
+ if (NT_STATUS_IS_OK(status)) {
+ status = NT_STATUS_UNSUCCESSFUL;
+ }
+ }