metze/ctdb/wip.git
17 years agoThe remote node needs to get the IMMEDIATE_MIGRATION flag to actually send the
Volker Lendecke [Thu, 19 Apr 2007 15:44:45 +0000 (17:44 +0200)]
The remote node needs to get the IMMEDIATE_MIGRATION flag to actually send the
record

17 years agofixed a bug found by volker - initialse the record on disk when initialised in memory
Andrew Tridgell [Thu, 19 Apr 2007 08:31:49 +0000 (18:31 +1000)]
fixed a bug found by volker - initialse the record on disk when initialised in memory

17 years ago- split out ctdb_ltdb_lock_fetch_requeue() into a simpler
Andrew Tridgell [Thu, 19 Apr 2007 07:43:27 +0000 (17:43 +1000)]
- split out ctdb_ltdb_lock_fetch_requeue() into a simpler
  ctdb_ltdb_lock_requeue() and a small wrapper

- use ctdb_ltdb_lock_requeue() to fix a possible hang in
  ctdb_reply_dmaster(), where the ctdb_ltdb_store() could hang waiting
  for a client. We now requeue the reply_dmaster packet until we have
  the lock

17 years ago- added a --torture option to all ctdb tools. This sets
Andrew Tridgell [Thu, 19 Apr 2007 06:27:56 +0000 (16:27 +1000)]
- added a --torture option to all ctdb tools. This sets
  CTDB_FLAG_TORTURE, which forces some race conditions to be much more
  likely. For example a 20% chance of not getting the lock on the
  first try in the daemon

- abstraced the ctdb_ltdb_lock_fetch_requeue() code to allow it to
  work with both inter-node packets and client->daemon packets

- fixed a bug left over in ctdb_call from when the client updated the
  header on a call reply

- removed CTDB_FLAG_CONNECT_WAIT flag (not needed any more)

17 years agomerge from ronnie
Andrew Tridgell [Thu, 19 Apr 2007 02:54:51 +0000 (12:54 +1000)]
merge from ronnie

17 years ago the checks for srcnode and destnode from the client are redundant since the daemon...
Ronnie sahlberg [Thu, 19 Apr 2007 02:48:19 +0000 (12:48 +1000)]
 the checks for srcnode and destnode from the client are redundant since the daemon will sort these out itself before it sends the call of to either the local handler or a remote daemon

17 years agomerge from ronnie
Andrew Tridgell [Thu, 19 Apr 2007 02:43:19 +0000 (12:43 +1000)]
merge from ronnie
remove unused bench_incr function in ctdb_bench.c

17 years agoremove a comment that is no longer valid
Ronnie sahlberg [Thu, 19 Apr 2007 02:34:39 +0000 (12:34 +1000)]
remove a comment that is no longer valid

17 years agodon't need these structures any more
Andrew Tridgell [Thu, 19 Apr 2007 02:34:24 +0000 (12:34 +1000)]
don't need these structures any more

17 years agoadd some tests in the daemon that a REQ_CALL that a client sent us has valid srcnode...
Ronnie sahlberg [Thu, 19 Apr 2007 02:33:13 +0000 (12:33 +1000)]
add some tests in the daemon that a REQ_CALL that a client sent us has valid srcnode and destnode

update ctdbd_test.c to show how to force a migration onto the local node

17 years agomerge from tridge
Ronnie sahlberg [Thu, 19 Apr 2007 02:00:29 +0000 (12:00 +1000)]
merge from tridge

17 years agomerge from tridge
Ronnie sahlberg [Thu, 19 Apr 2007 01:58:34 +0000 (11:58 +1000)]
merge from tridge

17 years agomuch simpler fetch code!
Andrew Tridgell [Thu, 19 Apr 2007 01:56:37 +0000 (11:56 +1000)]
much simpler fetch code!
fetch is now confined to the client code, no spcial code at
all in the daemon.

17 years ago- fully separate the client version of ctdb_call from the daemon
Andrew Tridgell [Thu, 19 Apr 2007 01:28:01 +0000 (11:28 +1000)]
- fully separate the client version of ctdb_call from the daemon
  version. The client version is different enough that this is
  worthwhile

- enable local shortcut for client version of ctdb_call

- add idr_find_type(), with better error reporting in case of type
  mismatch

17 years ago- make he packet allocation routines take a mem_ctx, which allows
Andrew Tridgell [Thu, 19 Apr 2007 00:37:44 +0000 (10:37 +1000)]
- make he packet allocation routines take a mem_ctx, which allows
  us to put memory directly in the right context, avoiding quite a few
  talloc_steal calls, and simplifying the code

- make the fetch lock code in the daemon fully async

17 years agoctdbd does no longer take a --daemon parameter since we no longer do non-daemon mode
Ronnie sahlberg [Thu, 19 Apr 2007 00:24:11 +0000 (10:24 +1000)]
ctdbd does no longer take a --daemon parameter since we no longer do non-daemon mode
remove the parameter from the ctdbd script

remove the store_unlock from ctdbd_test since there is no and will be no pdu for this
CTDB_REPLY_FETCH_LOCK no longer return the data for the record since the client is assumed to read this itself from the local tdb. remove some variables that no longer exists.

17 years agomerge from tridge
Ronnie sahlberg [Thu, 19 Apr 2007 00:07:07 +0000 (10:07 +1000)]
merge from tridge

17 years agoavoid a deadlock the fetch_lock code. The deadlock could happen when
Andrew Tridgell [Thu, 19 Apr 2007 00:03:20 +0000 (10:03 +1000)]
avoid a deadlock the fetch_lock code. The deadlock could happen when
a client held the chainlock, and the daemon received a dmaster reply
at the same time. The daemon would not be able to process the dmaster
reply, due to the lock, but the fetch lock cannot make progres until
the dmaster reply is processed.

The solution is to not hold the lock in the client while talking to
the daemon. The client has to retry the lock after the record has
migrated. This means that forward progress is not guaranteed. We'll
have to see if that matters in practice.

17 years ago- use separate directories for the tdb files by default
Andrew Tridgell [Wed, 18 Apr 2007 23:58:23 +0000 (09:58 +1000)]
- use separate directories for the tdb files by default
- use TDB_CLEAR_IF_FIRST to ensure we don't use an old tdb

17 years agomerged the db_dir changes from volker. Changed them slightly,
Andrew Tridgell [Wed, 18 Apr 2007 23:14:25 +0000 (09:14 +1000)]
merged the db_dir changes from volker. Changed them slightly,
to make the --dbdir option available to all ctdb tools, not just
the daemon

17 years agomerge from tridge
Ronnie sahlberg [Wed, 18 Apr 2007 22:18:38 +0000 (08:18 +1000)]
merge from tridge

17 years agoAdd --dbdir to ctdbd. Necessary for shared operation between ctdbd and smbd.
Volker Lendecke [Wed, 18 Apr 2007 14:36:22 +0000 (16:36 +0200)]
Add --dbdir to ctdbd. Necessary for shared operation between ctdbd and smbd.

17 years agothis fixes a timeout error spotted by volker
Andrew Tridgell [Wed, 18 Apr 2007 09:12:29 +0000 (19:12 +1000)]
this fixes a timeout error spotted by volker
It ensures that when the client context goes away (such as when the client exits)
that any timed events and partially completed requests from that client also go away

17 years agomerged cleanup from ronnie
Andrew Tridgell [Wed, 18 Apr 2007 08:43:34 +0000 (18:43 +1000)]
merged cleanup from ronnie

17 years agovalidate dmaster on a client fetch request
Andrew Tridgell [Wed, 18 Apr 2007 08:39:02 +0000 (18:39 +1000)]
validate dmaster on a client fetch request

17 years agowe dont need the structure ctdb_reply_shutdown since we dont implement that pdu any...
Ronnie sahlberg [Wed, 18 Apr 2007 07:04:26 +0000 (17:04 +1000)]
we dont need the structure ctdb_reply_shutdown since we dont implement that pdu any more

17 years agomerge from tridge
Ronnie sahlberg [Wed, 18 Apr 2007 07:03:10 +0000 (17:03 +1000)]
merge from tridge

17 years agosimpler shutdown process. The reply is not actually needed, and
Andrew Tridgell [Wed, 18 Apr 2007 05:35:41 +0000 (15:35 +1000)]
simpler shutdown process. The reply is not actually needed, and
occasionally leads to problems if an immediate send on the socket
causes a context switch and the client exiting before the daemon. We
now exit the client when the daemon goes away.

17 years agouse shutdown in more tests
Andrew Tridgell [Wed, 18 Apr 2007 05:27:38 +0000 (15:27 +1000)]
use shutdown in more tests

17 years agomake sure we don't double free in the async lock handler
Andrew Tridgell [Wed, 18 Apr 2007 05:27:26 +0000 (15:27 +1000)]
make sure we don't double free in the async lock handler

17 years agomerge from tridge
Ronnie sahlberg [Wed, 18 Apr 2007 04:45:08 +0000 (14:45 +1000)]
merge from tridge

17 years ago- merge from ronnie, and use wait instead of sleep in test scripts
Andrew Tridgell [Wed, 18 Apr 2007 04:42:02 +0000 (14:42 +1000)]
- merge from ronnie, and use wait instead of sleep in test scripts

17 years agoadd/finish the ctdb_shutdown() function.
Ronnie sahlberg [Wed, 18 Apr 2007 04:08:45 +0000 (14:08 +1000)]
add/finish the ctdb_shutdown() function.
this function can be used in test applications to perform an orderly shutdown of the ctdb cluster once the test has completed.
the ctdb nodes will remain operational until all of them have received a shutdown from their client(s)  after which the ctdb daemons will all terminate.

this eliminates the need to using sleep() in some of the test applications

17 years agomerge fetch1 changes from ronnie
Andrew Tridgell [Wed, 18 Apr 2007 02:39:12 +0000 (12:39 +1000)]
merge fetch1 changes from ronnie

17 years agoinitial shutdown function where a client can request an orderly shutdown of a ctdb...
Ronnie sahlberg [Wed, 18 Apr 2007 02:39:03 +0000 (12:39 +1000)]
initial shutdown function where a client can request an orderly shutdown of a ctdb cluster

17 years agostarted adding a cleaner daemon finish method
Andrew Tridgell [Wed, 18 Apr 2007 01:55:54 +0000 (11:55 +1000)]
started adding a cleaner daemon finish method

17 years agomerge from tridge
Ronnie sahlberg [Wed, 18 Apr 2007 01:33:19 +0000 (11:33 +1000)]
merge from tridge

17 years agobit less verbose when client exits
Andrew Tridgell [Wed, 18 Apr 2007 01:33:16 +0000 (11:33 +1000)]
bit less verbose when client exits

17 years ago- merge volkers debug changes
Andrew Tridgell [Wed, 18 Apr 2007 01:20:24 +0000 (11:20 +1000)]
- merge volkers debug changes

- fixed memory leaks in the 3 packet receive routines. The problem was
  that the ctdb_call logic would occasionally complete and free a
  incoming packet, which would then be freed again in the packet
  receive routine. The solution is to make the packet a child of a
  temporary context in the receive routine then free that temporary
  context. That allows other routines to keep or free the packet if
  they want to, while allowing us to safely free it (via a free of the
  temporary context) in the receive function

17 years agoenhance fetch1 test to verify that a lock is released when a client terminates while...
Ronnie sahlberg [Wed, 18 Apr 2007 00:38:11 +0000 (10:38 +1000)]
enhance fetch1 test to verify that a lock is released when a client terminates while holding the lock  and the next blocked waiting client is assigned the lock

17 years agomerge from tridge
Ronnie sahlberg [Tue, 17 Apr 2007 23:28:40 +0000 (09:28 +1000)]
merge from tridge

17 years agoClean up the call_states correctly
Volker Lendecke [Tue, 17 Apr 2007 21:40:33 +0000 (23:40 +0200)]
Clean up the call_states correctly

17 years agoBe less verbose
Volker Lendecke [Tue, 17 Apr 2007 21:06:10 +0000 (23:06 +0200)]
Be less verbose

17 years agoSome more debug and two memleak fixes
Volker Lendecke [Tue, 17 Apr 2007 21:03:30 +0000 (23:03 +0200)]
Some more debug and two memleak fixes

17 years agotypo
Volker Lendecke [Tue, 17 Apr 2007 19:23:22 +0000 (21:23 +0200)]
typo

17 years agoAdd timestamps to debug output.
Volker Lendecke [Tue, 17 Apr 2007 15:59:39 +0000 (17:59 +0200)]
Add timestamps to debug output.

17 years agoadd debug tracing to fetch_lock
Andrew Tridgell [Tue, 17 Apr 2007 12:39:23 +0000 (22:39 +1000)]
add debug tracing to fetch_lock

17 years agomore DEBUG() calls
Andrew Tridgell [Tue, 17 Apr 2007 12:27:17 +0000 (22:27 +1000)]
more DEBUG() calls

17 years agomoved cmdline.c to common code
Andrew Tridgell [Tue, 17 Apr 2007 12:16:50 +0000 (22:16 +1000)]
moved cmdline.c to common code

17 years agouse the common cmdline code in ctdbd
Andrew Tridgell [Tue, 17 Apr 2007 12:13:06 +0000 (22:13 +1000)]
use the common cmdline code in ctdbd
add a basic debug system with -dXX

17 years agofixed a missing idr remove, and check the types after idr_find()
Andrew Tridgell [Tue, 17 Apr 2007 10:03:01 +0000 (20:03 +1000)]
fixed a missing idr remove, and check the types after idr_find()

17 years agomake sure we notify ctdb when a node dies
Andrew Tridgell [Tue, 17 Apr 2007 09:41:29 +0000 (19:41 +1000)]
make sure we notify ctdb when a node dies

17 years agomerge from volker and ronnie
Andrew Tridgell [Tue, 17 Apr 2007 09:27:49 +0000 (19:27 +1000)]
merge from volker and ronnie

17 years agomerge from volker to prevent some valgrind errors
Ronnie sahlberg [Tue, 17 Apr 2007 08:15:08 +0000 (18:15 +1000)]
merge from volker to prevent some valgrind errors

17 years agomerge from tridge
Ronnie sahlberg [Tue, 17 Apr 2007 07:38:49 +0000 (17:38 +1000)]
merge from tridge

17 years agoZERO_STRUCT writes one byte too many here.
Volker Lendecke [Tue, 17 Apr 2007 07:36:53 +0000 (09:36 +0200)]
ZERO_STRUCT writes one byte too many here.

17 years agoupdate destination in a redirect reply
Andrew Tridgell [Tue, 17 Apr 2007 07:11:12 +0000 (17:11 +1000)]
update destination in a redirect reply

17 years agostop the client looping (temporary measure)
Andrew Tridgell [Tue, 17 Apr 2007 07:10:50 +0000 (17:10 +1000)]
stop the client looping (temporary measure)

17 years agostart using ctdb_ltdb_lock_fetch_requeue()
Andrew Tridgell [Tue, 17 Apr 2007 06:54:03 +0000 (16:54 +1000)]
start using ctdb_ltdb_lock_fetch_requeue()

17 years agomerge from tridge
Ronnie sahlberg [Tue, 17 Apr 2007 06:43:53 +0000 (16:43 +1000)]
merge from tridge

17 years agowhen we get a lmaster request, skip updating the header when we are also the new...
Andrew Tridgell [Tue, 17 Apr 2007 06:35:28 +0000 (16:35 +1000)]
when we get a lmaster request, skip updating the header when we are also the new dmaster

17 years agowe should not lock in a normal ctdb_call(), as we want them to run concurrently
Andrew Tridgell [Tue, 17 Apr 2007 06:34:53 +0000 (16:34 +1000)]
we should not lock in a normal ctdb_call(), as we want them to run concurrently

17 years ago- send the record header from the client to the daemon when doing a
Andrew Tridgell [Tue, 17 Apr 2007 06:20:32 +0000 (16:20 +1000)]
- send the record header from the client to the daemon when doing a
  fetch, to avoid the daemon re-reading it

- suffix the database name with the node name so that testing on
  loopback doesn't result in a name collision in the database open

17 years agomerge from tridge
Ronnie sahlberg [Tue, 17 Apr 2007 05:35:06 +0000 (15:35 +1000)]
merge from tridge

17 years agomake sure we unlock
Andrew Tridgell [Tue, 17 Apr 2007 05:33:58 +0000 (15:33 +1000)]
make sure we unlock

17 years agoblock SIGPIPE in the daemon to prevent a SIGPIPE on write to a dead socket
Andrew Tridgell [Tue, 17 Apr 2007 05:33:20 +0000 (15:33 +1000)]
block SIGPIPE in the daemon to prevent a SIGPIPE on write to a dead socket

17 years agonow that both daemon and client access the database, it needs to be a real disk file
Andrew Tridgell [Tue, 17 Apr 2007 05:32:49 +0000 (15:32 +1000)]
now that both daemon and client access the database, it needs to be a real disk file

17 years agomerge from tridge
Ronnie sahlberg [Tue, 17 Apr 2007 05:02:20 +0000 (15:02 +1000)]
merge from tridge

17 years agotidyups in test code
Andrew Tridgell [Tue, 17 Apr 2007 05:01:42 +0000 (15:01 +1000)]
tidyups in test code

17 years ago- removed the non-daemon mode from ctdb, in order to simplify the
Andrew Tridgell [Tue, 17 Apr 2007 04:52:51 +0000 (14:52 +1000)]
- removed the non-daemon mode from ctdb, in order to simplify the
  code. It may be added back later once everything is working nicely,
  or simulated using a in-process pipe instead of a unix domain socket

- rewrote the ctdb_fetch_lock() code to follow the new design

17 years agomerge from ronnie
Andrew Tridgell [Tue, 17 Apr 2007 02:53:04 +0000 (12:53 +1000)]
merge from ronnie

17 years agocreate symbols for fetch lock response status
Ronnie sahlberg [Tue, 17 Apr 2007 02:42:52 +0000 (12:42 +1000)]
create symbols for fetch lock response status

17 years agofinalize fetch lock changes to get rid of the record handle
Ronnie sahlberg [Tue, 17 Apr 2007 02:36:31 +0000 (12:36 +1000)]
finalize fetch lock changes to get rid of the record handle

17 years agodo not use a ctdb_record_handle for client fetch_lock/store_unlock any more
Ronnie sahlberg [Tue, 17 Apr 2007 02:22:17 +0000 (12:22 +1000)]
do not use a ctdb_record_handle for client fetch_lock/store_unlock any more

change ctdb_client_fetch_lock to return a status code instead of a record handle and make it unconditionally fill in data.

change ctdb_client_store_unlock to take ctdb_db and key as arguments instead of a record handle

update the ctdb_fetch.c test to use the clientside helpers for fetching and storing data

17 years agomerge from ronnie
Andrew Tridgell [Tue, 17 Apr 2007 01:54:19 +0000 (11:54 +1000)]
merge from ronnie

17 years agoremaning code to finish lock_fetch/store_unlock clientside helpers
Ronnie sahlberg [Tue, 17 Apr 2007 01:48:27 +0000 (11:48 +1000)]
remaning code to finish lock_fetch/store_unlock clientside helpers

17 years agoinitial change to remove store_unlock pdu and use tdb chainlock in the client
Ronnie sahlberg [Tue, 17 Apr 2007 01:34:45 +0000 (11:34 +1000)]
initial change to remove store_unlock pdu and use tdb chainlock in the client

17 years agomerge from ronnie
Andrew Tridgell [Tue, 17 Apr 2007 01:30:19 +0000 (11:30 +1000)]
merge from ronnie

17 years agopartial merge from volker (some overlaps removed)
Andrew Tridgell [Tue, 17 Apr 2007 01:26:59 +0000 (11:26 +1000)]
partial merge from volker (some overlaps removed)

17 years agobetter error handling in ctdb_ltdb_lock_fetch_requeue()
Andrew Tridgell [Tue, 17 Apr 2007 01:20:00 +0000 (11:20 +1000)]
better error handling in ctdb_ltdb_lock_fetch_requeue()

17 years agochange some error printouts to make it easier to determine whether the error occured...
Ronnie sahlberg [Tue, 17 Apr 2007 00:15:44 +0000 (10:15 +1000)]
change some error printouts to make it easier to determine whether the error occured in the client or in the daemon

17 years agomerge from tridge
Ronnie sahlberg [Mon, 16 Apr 2007 23:37:13 +0000 (09:37 +1000)]
merge from tridge

17 years agoadd an explanation of ctdb_ltdb_lock_fetch_requeue()
Andrew Tridgell [Mon, 16 Apr 2007 23:18:20 +0000 (09:18 +1000)]
add an explanation of ctdb_ltdb_lock_fetch_requeue()

17 years agoadd an explanation of how to use ctdb_lockwait()
Andrew Tridgell [Mon, 16 Apr 2007 23:14:52 +0000 (09:14 +1000)]
add an explanation of how to use ctdb_lockwait()

17 years agofixed crash bug - thanks volker
Andrew Tridgell [Mon, 16 Apr 2007 23:10:52 +0000 (09:10 +1000)]
fixed crash bug - thanks volker

17 years agodarn, forgot this
Andrew Tridgell [Mon, 16 Apr 2007 21:41:27 +0000 (07:41 +1000)]
darn, forgot this

17 years agowait on the right fd ....
Andrew Tridgell [Mon, 16 Apr 2007 14:11:04 +0000 (00:11 +1000)]
wait on the right fd ....

17 years agoadded a ctdb_ltdb_lock_fetch_requeue() function
Andrew Tridgell [Mon, 16 Apr 2007 13:52:14 +0000 (23:52 +1000)]
added a ctdb_ltdb_lock_fetch_requeue() function
this will be the core of the non-blocking lock idea for ctdb, it will be used
in place of ctdb_ltdb_fetch(), but will also get a lock. It re-starts a request
if it needs to block

17 years agoadded a tdb_chainlock_nonblock() call to tdb
Andrew Tridgell [Mon, 16 Apr 2007 13:03:36 +0000 (23:03 +1000)]
added a tdb_chainlock_nonblock() call to tdb

17 years agomerge local copy of tdb from samba4 tdb
Andrew Tridgell [Mon, 16 Apr 2007 12:52:58 +0000 (22:52 +1000)]
merge local copy of tdb from samba4 tdb

17 years agofixed a fd bug (thanks volker)
Andrew Tridgell [Mon, 16 Apr 2007 12:49:37 +0000 (22:49 +1000)]
fixed a fd bug (thanks volker)

17 years agomerge from tridge
Ronnie sahlberg [Mon, 16 Apr 2007 06:03:08 +0000 (16:03 +1000)]
merge from tridge

17 years agothis is a demonstration of an idea for handling locks in ctdb.
Andrew Tridgell [Mon, 16 Apr 2007 06:01:37 +0000 (16:01 +1000)]
this is a demonstration of an idea for handling locks in ctdb.

The problem we have is this:

  - we want the client smbd processes to be able to 'shortcut' access
    to the ltdb, by directly accessing the ltdb, and if the header of
    the record shows we are the dmaster then process immediately, with
    no overhead of talking across the unix domain socket

  - a client doing a shortcut will use tdb_chainlock() to lock the
    record while processing

  - we want the main ctdb daemon to be able to set locks on the
    record, and when those locks collide with a 'shortcut' fcntl lock,
    we want the ctdb daemon to keep processing other operations

  - we don't want to have to send a message from a smbd client to the
    ctdbd each time it releases a lock

The solution is shown in this example. Note that the expensive fork()
and blocking lock is only paid in case of contention, so in the median
case I think this is zero cost.

17 years agomerge from tridge
Ronnie sahlberg [Mon, 16 Apr 2007 04:45:09 +0000 (14:45 +1000)]
merge from tridge

17 years agomerged from samba4
Andrew Tridgell [Mon, 16 Apr 2007 04:13:10 +0000 (14:13 +1000)]
merged from samba4

17 years agopull out common command line code for tests into tests/cmdline.c
Andrew Tridgell [Mon, 16 Apr 2007 04:12:50 +0000 (14:12 +1000)]
pull out common command line code for tests into tests/cmdline.c

17 years agomerge from tridge
Ronnie sahlberg [Mon, 16 Apr 2007 02:50:48 +0000 (12:50 +1000)]
merge from tridge

17 years agomerge CTDB_SRVID_ALL patch from Samba4
Andrew Tridgell [Mon, 16 Apr 2007 00:31:39 +0000 (10:31 +1000)]
merge CTDB_SRVID_ALL patch from Samba4

17 years ago- fix includes to work in both samba4 and ctdb standalone
Andrew Tridgell [Mon, 16 Apr 2007 00:21:44 +0000 (10:21 +1000)]
- fix includes to work in both samba4 and ctdb standalone
- when we do a store_unlock the lock record becomes unlocked, so we
  must destroy it (or we leak memory)

17 years agoadded --dblist option to ctdbd, to allow list of databases to be specified on the...
Andrew Tridgell [Sun, 15 Apr 2007 23:29:10 +0000 (09:29 +1000)]
added --dblist option to ctdbd, to allow list of databases to be specified on the command line