From 85d58175c8d046a01da62c0107e29537862ed8a4 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 27 Feb 2008 21:50:51 +0100 Subject: opendb: return the path that should be deleted in odb_close_file() That means the last close returns the path name if the delete_on_close flag is set. metze (This used to be commit fc27730bad24e8dddaa2e7f754a16811e38a2f60) --- source4/cluster/ctdb/opendb_ctdb.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'source4/cluster') diff --git a/source4/cluster/ctdb/opendb_ctdb.c b/source4/cluster/ctdb/opendb_ctdb.c index 3dfc6819b7..3f6c8a2343 100644 --- a/source4/cluster/ctdb/opendb_ctdb.c +++ b/source4/cluster/ctdb/opendb_ctdb.c @@ -409,10 +409,12 @@ static NTSTATUS odb_ctdb_open_file_pending(struct odb_lock *lck, void *private) /* remove a opendb entry */ -static NTSTATUS odb_ctdb_close_file(struct odb_lock *lck, void *file_handle) +static NTSTATUS odb_ctdb_close_file(struct odb_lock *lck, void *file_handle, + const char **_delete_path) { struct odb_context *odb = lck->odb; struct opendb_file file; + const char *delete_path = NULL; int i; NTSTATUS status; @@ -448,6 +450,15 @@ static NTSTATUS odb_ctdb_close_file(struct odb_lock *lck, void *file_handle) file.num_pending = 0; file.num_entries--; + + if (file.num_entries == 0 && file.delete_on_close) { + delete_path = talloc_strdup(lck, file.path); + NT_STATUS_HAVE_NO_MEMORY(delete_path); + } + + if (_delete_path) { + *_delete_path = delete_path; + } return odb_push_record(lck, &file); } -- cgit