ChangeLog (Nov 10 2004)
2004-09-10 Don Zickus
OpenDLM port to the linux 2.6 kernel and cleanups based on new compiler settings
* clm_data.h, clm_locksw.h, clm_migrate.h, clm_reconfig.h,
* clmstructs.h, clm_client.c, clm_clmlock.c, clm_clmlock.h,
* clm_clmunlock.c, clm_deadlock.c, clm_direct.c, clm_direct.h,
* clm_group.c, clm_libr.c, clm_libr.h, clm_lock.c, clm_lock.h,
* clm_locksw.c, clm_migrate.c, clm_migrate_local.h, clm_purge.c,
* clm_purge.h, clm_resource.c, clm_resource.h, clm_scn.c,
* clm_timeout.c, clm_tune.c, clm_unixlock.c, clm_unixlock.h,
* dlm_real_proto.h, dlm_recover.c
renaming "struct resource", allocate_resource() and
deallocate_resource() to "struct dlm_resource,
dlm_allocate_resource() and dlm_deallocate_resource().
This prevents a conflict with the 2.6 kernel header file
(ioport.h) which is included in dlm_kerndd.c and uses
"struct resource" and allocate_resource().
* api_init.c, clm_cti.c
setup kernel version conditional compiling for utilizing
tq_struct/work_struct
* ast.h, dlm_utilites.h, kclient2_.c
prototype cleanup (based on compiler warning)
* clm_info.h, dlm_devmsg.h
removed unused enum that caused compiler errors
* dlm_kernel.h, cccp_private.h
removed syslog.h from inclusing as it caused compiler errors and
instead copied/pasted the relevant info (ie the bsdlog level
definitions). Also prototype cleanup (based on compiler warning)
* cccp_deliver.c, cccp_udp.c, dlm_kernel.c
added kernel version conditional compiling for module specific
commands (ie MOD_INC_USE_COUNT). Modified call to
dlm_daemonize() to reflect changes
* cccp_init.c, cccp_msg.c, cccp_output.c, cccp_ports.c, cccp_proto.c,
* dlm_base.c, dlm_memory.c
exported symbols for module usage. This gives cleaner control
of what is used outside of the module and what is not.
* cccp_kernel.c
simplified the timer initialization code
* clm_main.c
added kernel version conditional compiling for module specific
commands (ie MOD_INC_USE_COUNT). Modified call to
dlm_daemonize() to reflect changes. simplified the timer
initialization code.
* clm_rldb.c, clm_rldb.h
prototype cleanup (based on compiler warning) and renaming
"struct resource" to "struct dlm_resource"
* dlm_kerndd.c
setup kernel version conditional compiling for utilizing
various device filesystem. 'devfs' seems to have gone away
in kernel 2.6.
* dlm_proc.c
fixed bugs in dlm_proc_entry_destroy(), which is used to
remove files from the /proc filesystem.
* dlm_utilities.c
exported symbols for module usage. This gives cleaner control
of what is used outside of the module and what is not.
Modified dlm_daemonize() to control the kernel version
differences inside this function instead of across the system
* kernel.mk
added compiler flag, EXPORT_SYMTAB. This flag utilizes the
EXPORT_SYMBOLS declared in all the modules know. These symbols
control which symbols are allowed to be used externally or not.
* dlm_cmdline.c
added syslog.h include file which was removed from another dlm
header file
* dlm_device.c
added kernel version conditional compiling for "modprobe"
parameters.
* dlmdk/dlmcccp/dlmkernapi/tests Makefile.am
removed due to completely new kernel module build system for
the 2.6 kernel.
* dlmdk/dlmcccp/dlmkernapi/tests Makefile.in
no longer generated from the Makefile.am file. Instead
permanently included in the build system. These 4 files have
been hacked up to support generation of a Makefile that will
work with either the 2.4 kernel or the 2.6 kernel based on a
variable defined at configure time ($NEW_KBUILD). This file was
originally generated from Makefile.am then handcrafted into the
result it is now (not the cleanest approach). In addition
because the dlmkernapi utilizes files from the api directory
(which is also compiled for the user space libraries), the
Makefile creates symbolic links to the *.c files used before
compiling the object files into the local directory.
**NOTE** The new Makefile system described above is NOT ideal nor the
preferred solution. The proper solution (as discussed with
community members and referenced by other comparable projects,
ie alsa-sound) is to split the packages into a user space package
and kernel space package. Then manage them separately. However
due to the api directory overlap (for both user and kernel
interfacing), this is a daunting task. In addition many header
files overlap also causing synchronization issues. Thus the
spliting of the package could take quite a bit of time and
careful consideration to do it properly. Hence the quick and
dirty solution provided just to push this forward.
2004-09-07 Stanley Wang
* api/api_ais_lock.c:
* api/api_glue.c:
* api/api_setnotify.c:
* include/clmstructs.h:
* include/dlm_devmsg.h:
* include/dlm_kernel.h:
* kernel/dlmdk/ast_kern.c:
* kernel/dlmdk/clm_cti.c:
* kernel/dlmdk/dlm_kerndd.c:
* user/dlmdu/dlm_cmdline.c:
* user/dlmdu/dlm_config.c:
* user/dlmdu/dlm_device.c:
Re-implement selectable object based on UNIX socket for SAF lock API.
Minor bugs fix for SAF lock API.
2004-09-03 Don Zickus
OpenDLM much needed performance fixes for scalability and SMP issues.
Also some minor cleanups
* src/api/ast_stub.c:
fix ASTpoll such that it only calls the kernel once per AST
not twice.
* src/include/clmstructs.h:
change max name length to 32 bytes. Also change DBPRINTF
macro to perform and if-then check before processing the
arguments being passed to it.
* src/include/cltrc.h:
compile out the tracking definitions (ie TRCHKGT)
* src/include/dlm.h:
change max resource name length to 32 bytes
* src/include/dlm_kernel.h:
change the bsdlog prototype to a definition when not in use.
This speeds up performance.
* src/kernel/dlmcccp/cccp_deliver.c:
modify the message delivery subsystem. The port locking and
unlocking has been removed allowing the system to improve
performance dramtically
* src/kernel/dlmcccp/cccp_ports.c:
modified the port delivery subsystem such that there is no
more port locking. Instead just a single message queue and
a single lock protecting it.
* src/kernel/dlmcccp/cccp_private.h:
changed prototype for cccp_port_dequeue_message.
* src/kernel/dlmdk/Makefile.am:
remove DBPRINT compile option
* src/kernel/dlmdk/ast_kern.c:
changed ASTget to communicate more effectively with the user
space ASTpoll code thus saving a kernel call. Disabled some
unused segment code (ie att_seg and det_seg). Also added a
whole bunch of AST spinlocks for SMP purposes. These locks
used to be grouped together with the LK_ENTRY locks which are
not functionally equivalent.
* src/kernel/dlmdk/clm_client.c:
modified findclientbypid() and findclient() to improve a
bottleneck. The new code finds the pid a lot quicker than
recursing through multiple function calls.
* src/kernel/dlmdk/clm_clmlock.c:
remove useless call to check_handles()
* src/kernel/dlmdk/clm_compat.c:
compile out clm_vers_send, clm_vers_rcv, and clm_vers_reset.
They were useless linux stubs anyway.
* src/kernel/dlmdk/clm_cti.c:
removed LK_ENTRY locks from clm_recv(). There is no critical
section of code here and just slows down SMP.
* src/kernel/dlmdk/clm_libr.c:
comment out clm_vers_send() function.
* src/kernel/dlmdk/clm_locallock.c:
comment out clm_vers_send() function.
* src/kernel/dlmdk/clm_lock.c:
compiles out check_handles()
* src/kernel/dlmdk/clm_lock.h:
changes check_handles() to a empty macro when not being used
* src/kernel/dlmdk/dlm_proc.c:
remove LK_ENTRY locks around version check
* src/kernel/dlmdk/dlm_real_proto.h:
changes clm_vers_snd, clm_vers_rcv, clm_vers_reset to empty
macros when not being used
* src/kernel/dlmdk/dlm_utilities.c:
compile out bsdlog when not in use
* src/kernel/dlmdk/dlm_utilities.h:
changes bsdlog to empty macro when not being used
2004-08-04 Don Zickus
* released OpenDLM 0.9.2
2004-06-30 Don Zickus
OpenDLM configuration cleanups and ccm fixes
* acinclude.m4:
clean up warnings from new automake tools
* configure.ac:
clean up warnings from new automake tools.
* src/user/common/dlm_ccm.c:
added fix for a single node cluster.
2004-06-30 Don Zickus
OpenDLM does not shutdown properly
* src/kernel/dlmcccp/cccp_deliver.c:
added linux specific completion routines for the
cccp_msg_delivery_thread when it exited
* src/kernel/dlmcccp/cccp_init.c:
added linux specific completion variables to use when shutting
down the cccp threads. The function cccp_stop() will not exit
until all cccp threads have shutdown successfully. The order
of the shutdown has been modified in such a way it now makes
sense (shut down the nodes, close the read pipe, then flush
the system).
* src/kernel/dlmcccp/cccp_udp.c:
added linux specific completion routines for the
cccp_poll_thread and cccp_retransmit_thread when they exit.
* src/kernel/dlmdk/clm_client.c:
split kill_clients() in half. The original intent was to kill
all clients and cleanup after them then remove any
kmem_cache_memory lying around. Unfortunately, the dlm does
not shut down as simple as that. Instead kill_clients() needs
to kill the clients, have another function destroy all its lock
elements, then call free_client() (the other half of kill_client)
to finish cleaning up the client stuff.
* src/kernel/dlmdk/clm_client.h:
add prototype for new function free_client().
* src/kernel/dlmdk/dlm_kernel.c:
rearrange the order in dlm_exit() such that it makes sense.
The idea is to shut down the DLM, flush the CCCP and hope all
the memory is cleaned up by the time all the
kmem_cache_destroy functions are called.
* src/kernel/dlmdk/dlm_real_prototype.h:
add prototype for function free_client().
2004-06-08 Stanley Wang
* configure.ac:
* src/api_ais_lock.c:
Enable SAF lock API (Buggy codes).
2004-05-25 Stanley Wang
* src/kernel/dlmdk/clm_client.c:
* src/kernel/dlmdk/clm_migrate.c:
Add comments.
2004-05-22 Stanley Wang
* src/include/dlm.h:
* src/kernel/dlmdk/clm_clmlock.c:
Add "LKM_REVVALBLK" flag as a dedicated way to re-validate LVB.
2004-05-22 Stanley Wang
* configure.ac:
* src/kernel/dlmdk/clm_deadlock.c:
Make deadlock_timeout be tunable at compile time (--with-deadlock_timeout=timeout).
2004-05-21 Stanley Wang
* src/kernel/dlmdk/clm_client.c:
* src/kernel/dlmdk/clm_migrate.c:
Fix compile bug for gcc-2.96 (RHAS2.1).
* src/kernel/dlmdk/clm_main.c:
Release LK_ENTRY before exiting clm_master_loop().
* docs/haDLM.conf:
Add missing file.
2004-05-20 Ben Cahill
* Throughout tree:
Check in changes from Computer Associates, shown below with
dates of 2004-03-30 through 2004-04-21, from Chris Fanning and
Don Zickus.
2004-05-11 Stanley Wang
* configure.ac:
Fix ugly hacks for libccmlient.
2004-05-07 Ben Cahill
* configure.ac:
* src/user/common/dlm_heartbeat.c:
Support compile heartbeat 1.2.0 (and earlier) and 1.2.1 (and later)
2004-05-01 Don Zickus
OpenDLM cleanups needed for demo
* src/api/api_vms.c:
fix error path case for DLM_VALNOTVALID in clm_reqresp() and
removed dlm_errno race condition inside dlmlockx().
* src/kernel/dlmdk/clm_main.c:
release the LK_ENTRY lock upon exiting clm_master_loop(). This
prevents deadlock with CCCP updon shutdown.
* src/user/dlmdu/dlm_daemon.c:
remove console message stating "no new cluster events" inside
main().
2004-05-01 Don Zickus
OpenDLM fixes to support up to a 4 node cluster
* src/kernel/dlmcccp/cccp_proto.c:
remove code added by duplicate packet fix, this was incorrectly
understood perviously.
* src/kernel/dlmdk/clm_info.c:
allow topology changes for 3 nodes and queue state machine
changes as opposed to nesting them.
* src/kernel/dlmdk/clm_main.c:
allow all state machine changes to be queued and handled
properly.
* src/kernel/dlmdk/clm_msg.c:
queue state machine changes as opposed to nesting them. Also
allow all barrier messages to be invoked by handle_sync() only
* src/kernel/dlmdk/dlm_real_proto.h:
extern the sched_queue() function and change to function
parameters of new_change_request().
* src/kernel/dlmdk/dlm_recover.c:
queue state machine changes as opposed to nesting them. Also
cleaned up a memory leak and a wrong cccp callback function
* src/kernel/dlmdk/dlm_sched.c:
modify how new_change_request works to allow more state machine
queueing
* src/user/common/dlm_heartbeat.c:
added a syslog message to log if a node goes up or down.
* src/user/dlmdu/dlm_daemon.c:
fixed 3 node issues
2004-04-29 Stanley Wang
* configure.ac:
Screen out all CCM libraries when using heartbeat only.
2004-04-29 Stanley Wang
* src/kernel/dlmdk/dlm_recover.c:
Fix opps in recovery process.
2004-04-22 Stanley Wang
* src/kernel/dlmdk/clm_deadlock.c:
Fix deadlock detecting bug in clmdd_decode().
2004-04-21 Don Zickus
OpenDLM startup scripts did not work properly
* configure.ac:
support building on Suse
* admin/haDLM:
modified startup/shutdown functionality and changed default
configure file to be haDLM.conf to be consistent with the
OpenDLM package and the spirit of Linux configure files
* docs/haDLM.conf:
new files, supports default configurations
* docs/Makefile.am:
add haDLM.conf
2004-04-15 Don Zickus
OpenDLM Build string does not exist
* src/kernel/dlmcccp/Makefile.am:
* src/kernel/dlmdk/Makefile.am:
* src/user/dlmdu/Makefile.am:
added a makefile generated timestamp file that will be
linked into the binaries of dlmdu, dlmdk.core, dlmdk.base,
and cccp. The timestamp file is dependent on the respective
source files in the directories. Once the binaries are
compiled, using the command strings, one can grep for "Date"
or "Time" to retrieve the build string. This should
accurately reflect the last time that particular binary was
compiled. NOTE: each binary will have a different timestamp.
* src/kernel/dlmcccp/clm_main.c:
changed the timestamp output to use the new dlm_timestr and
changed the bsdlog output to a printk such that the time stamp
will always be logged, not just when debugging is turned on
for the kernel modules.
* src/make/kernel.mk:
added TIMESTAMP_FILE and TIMESTAMP_STR variables to allow
a generic interface to the Makefile.am files
* src/make/user.mk:
added TIMESTAMP_FILE and TIMESTAMP_STR variables to allow
a generic interface to the Makefile.am files
* src/user/dlmdu/dlm_cmdline.c:
changed the timestamp output to use the new dlm_timestr
and added a syslog call to log the dlmdu timestamp to
/var/log/messages.
2004-04-14 Stanley Wang
* src/user/common/dlm_ccm.c:
Ingnore old membership message and code cleaning.
2004-04-13 Stanley Wang
* src/kernel/dlmcccp/cccp_ports.c:
Clean all pending message in destroyPorts().
2004-04-13 Stanley Wang
* src/user/common/dlm_ccm.c:
Use "SA_CLM_NODE_LEFT" macro instead of integer value.
2004-04-09 Stanley Wang
* Makefile.am:
* configure.ac:
* src/user/common/Makefile.am:
* src/user/common/dlm_ccm.c:
* src/user/dlmdu/Makefile.am:
Add CCM plugin for OpenDLM.
2004-04-09 Don Zickus
OpenDLM Failover fixes
* src/kernel/dlmdk/dlm_recover.c:
fixed two issues in regards to the recovery process. The
first one is during the RESOURCE_QUERY state, opendlm might
prematurely proceed to the next step without receiving an
answer to a directory request. The second fix is in regards
to a memory leak that causes the cache memory to fail in its
attempt to cleanup. The memory leak was the result of an
internal state machine message that was not released caused
by an external cccp message.
2004-04-09 Don Zickus
OpenDLM Stability cleanups
* src/kernel/include/Makefile.am:
include the header files dlm.h and dlm_cluster.h into the
install distribution. They will be place in
/usr/include/opendlm to be used by client apps.
* src/kernel/dlmdk/clm_group.c:
changed an abort to a printk in the function grp_rmpid()
and have the function return an error instead. There is
no reason for the abort, an error return code is sufficient.
* src/kernel/dlmdk/clm_rldb.c:
removed an assertion statement that conflicted with how the
failover code works. The old assertion can be found in the
function rl_update().
* src/user/common/dlm_heartbeat.c:
added a printf do describe the reason why opendlm would
fail to connect with the heartbeat module. This aids in
the debugging.
* src/user/dlmdu/dlm_device.c:
commented out a failure return path. The failure is the
result of a bug in one of the libraries when the executes
a 'system()' command. The command returns a failure when
in fact it succeed. Instead of failing, opendlm prints out
a message and then tries to open the module it supposedly
failed to load. If the 'open' fails, then the modules did
not load, otherwise the failure was incorrect and opendlm
proceeds as normal.
2004-04-05 Don Zickus
OpenDLM migration does not work
* src/kernel/include/dlm_list.h:
fixed list manipulations functions by correcting
'empty list' cases and an initialization bug.
* src/kernel/dlmdk/clm_migrate.c:
fixed a struct increment bug and a kernel oops due to
bad resource pointer bug. Various aesthetic cleanups.
2004-04-05 Don Zickus
OpenDLM deadlock detection does not work correctly
* src/kernel/dlmdk/dlm_deadlock.c:
the remote message passing parsing was broken, so it
is now synched up. The encoding of a remote message
sometimes added erronous 0xff's because byte copying
was done with char instead of unsigned char. Various
aesthetic cleanups
2004-04-05 Don Zickus
OpenDLM Stability cleanups
* src/kernel/dlmcccp/cccp_init.c:
swapped a shutdown option to allow a cleaner shutdown
* src/kernel/dlmdk/clm_clmlock.c:
fixed groupid assignment on conversion locks
* src/kernel/dlmdk/clm_purge.c:
fixed a kernel oops by syncing printk parameters with inputs
2004-04-01 Ben Cahill
* docs/WHATIS-opendlm:
Add references at end.
2004-04-01 Ben Cahill
* Throughout tree:
Check in changes from Computer Associates, shown below with
dates of 2004-03-10, from Chris Fanning and Don Zickus.
Add paths and colons to their ChangeLog listings.
2004-03-30 Don Zickus
OpenDLM handles duplicate packets incorrectly
* src/kernel/dlmcccp/cccp_proto.c:
add a tmp_incolor field to temporarily track a packet
(or block a port, if one prefers) until the packet is
appropriately dealt with on the bottom layers. Once
dealt with the code then syncs the incolor flag with
tmp_incolor or un-sets the tmp_incolor flag to mark a
rejected packet
2004-03-30 Don Zickus
Client application causes OpenDLM to crash, disable features for now
* src/kernel/dlmdk/clm_client.c:
disable proc fs for each new resource under addclient
* src/kernel/dlmdk/clm_migtrate.c:
disable migration code
2004-03-30 Don Zickus
OpenDLM shutdown can cause crashes if done to quickly and various cleanups
* src/api/api_vms.c:
comment cleanup based on opendlm community recommendations
* src/include/dlm_kernel.h:
added prototype for dlm_daemonize()
* src/kernel/dlmcccp/cccp_deliver.c:
added dlm_daemonize() for thread purposes
* src/kernel/dlmcccp/cccp_init.c:
removed a compiler warning
* src/kernel/dlmcccp/cccp_kernel.c:
rename global 'timer' to 'cccp_timer' to prevent
symbol clashing
* src/kernel/dlmcccp/cccp_udp.c:
added dlm_daemonize() for thread purposes
* src/kernel/dlmdk/clm_client.c:
spinlock cleanup based on opendlm community recommendations
* src/kernel/dlmdk/clm_cti.c:
spinlock cleanup based on opendlm community recommendations
* src/kernel/dlmdk/clm_main.c:
timer code cleanup to properly modify and shutdown the timer
* src/kernel/dlmdk/dlm_kernel.c:
remove unnecessary clm_sleep and fix get_time usec field
* src/kernel/dlmdk/dlm_proc.c:
allow greater than 3K worth of data to be printed to the
screen
* src/kernel/dlmdk/dlm_recover.c:
timer code cleanup to properly modify and shutdown the timer
2004-03-30 Don Zickus
OpenDLM deadlock detection does not work correctly
* src/kernel/dlmdk/dlm_deadlock.c:
the function clmdd_check does not know which lock is
being purged as a result of a deadlock. The code
assumed a certain lock when in fact other locks
could be purged also. Expand the fetching of the
next node to include these scenarios. Also adjust
the deadlock timeout variable to something smaller
like 1 second.
* src/kernel/dlmdk/clm_main.c:
adjust the speed of the deadlock detection loop to
check every second as opposed to every 6 seconds
2004-03-10 Chris Fanning
* src/kernel/dlmdk/clm_clmlock.c:
fixed dereference of incomp in convert_lock_clm()
introduced with orphan support changes
* src/kernel/dlmdk/dlm_kerndd.c:
fixed incorrect invalid handle check (0 vs -1) in
haDLM_set_poll() introduced with SAF AIS API support
2004-03-10 Don Zickus
CCCP dropping packets and broken hops fix, RLDB cleanup and heartbeat fix
* src/kernel/dlmcccp/cccp_msg.c:
fixed the way cccp tracks the number of hops a message has
been through
* src/kernel/dlmcccp/cccp_queue.c:
fixed the way cccp packets are freed of the node queue;
this solves the problem of dropped packets
* src/kernel/dlmdk/clm_direct.c:
released a semaphore on a failure path
* src/kernel/dlmdk/clm_locallock.c:
released a semaphore on a failure path
* src/kernel/dlmdk/clm_resource.c:
cleanup the RLDB entry when refcount is zero
* src/kernel/dlmdk/clm_rldb.c:
cleanup the RLDB entry function
* src/kernel/dlmcccp/cccp_rldb.c(??????):
cleanup the RLDB entry function header
* src/user/common/dlm_heartbeat.c:
fixed the way heartbeat retires on signon failures; this
allows a user to cleanup the /var/lib/heartbeat/casual
directory without restarting dlmdu
2004-03-10 Don Zickus
dlmlock error path fixes and heartbeat fixes
* src/api/api_vms.c:
removed coded that changed the dlm error codes to return
normal. This caused the failure path to never reports
failures under certain conditions
* src/kernel/dlmdk/clm_alloc.c:
modified the lock id generation code to be SMP safe and
added code to verify a new lock id is not currently in use
* src/kernel/dlmdk/dlm_proc.c:
added temporary code to prevent call to specific resource
grant queue from crashing the system. This is temporary
because the real fix is involves making sure that a NULL
resource is _never_ on the grant queue. Later this code
should be converted into an CLM_ASSERT statement.
* src/kernel/dlmdk/clm_cti.c:
fixes the failure path code for when the LKM_SYNCSTS and
LKM_BLOCK flag is used.
* src/user/dlmdu/dlm_heartbeat.c:
added heartbeat signoff code to clean-up heartbeat
resources before exiting. This is needed to prevent
heartbeat signon failures. Currently the design
implementation does not allow for the opendlm to handle a
dlmdu restart, therefore signing off from heartbeat is safe
for now.
2004-03-10 Don Zickus
Cleanup fixes for multi-node Opendlm
* src/kernel/dlmcccp/cccp_proto.c:
Instead of dying when an unrequested ACK comes in, just
ignore it. This is safer because the code can not control
what type of data may flow in to the ports especially after
a failover condition.
* src/kernel/dlmdk/clm_clmlock.c:
remove LOCK_WAITING flag. This sync flag I added in
response to the comments in the code, actually broke an
optimized hack later on. So I shall remove it now, in
hopes of reimplementing it later on when I can clean things
up.
* src/kernel/dlmdk/clm_cti.c:
Adds a 'return' command to fix the LCK_SYNCSTS path and
changed which _pid_ variables were used to make the code
more robust and follow its original intention.
* src/kernel/dlmdk/dlm_recover.c:
Changed the recovery timer code to fix the SMP problem of
allocating memory and transitioning states inside the
interrupt routine. In addition the code is now generic
enough to handle the RC_MSG_PURGE_WAIT problem. This
problem is solved by checking every second to see the state
should continue or not. The timer fix now delivers a
pre-allocated local message to be queued for delivery
inside the interrupt handler. This is a lot safer and
cleaner than the previous implementation. It may not be
much faster as it has to travel a little out of its way,
but these 'states' are not time critical.
2004-03-10 Don Zickus
Allow client to spawn threads with each thread registering with Opendlm
* src/kernel/dlmdk/dlm_kerndd.c:
changed getpid() to return tgid instead of pid to
correspond with the sys call of get_pid() used in the
library
2004-03-10 Chris Fanning
Opendlm community merges of LKM_SYNCSTS changes
Change provided by Jeffrey Orlin
Lock module changes:
* src/kernel/dlmdk/clm_clmlock.c:
* clm_lock*() and clm_convert():
if the LKM_SYNCSTS flag is set and grant_lock() or
grant_convert() is called, set clm_status to DLM_SYNC, not
DLM_NORMAL
* cont_lock_clm():
DLM_SYNC has to be added to the list of states which cannot
skip directly to the end.
* src/api/api_vms.c:
* clm_lock_reqresp():
copy the lksb out of the response when the status is DLM_SYNC
Messaging changes:
* src/kernel/dlmdk/clm_cti.c:
* sendudp():
if LKM_SYNCSTS is set and the status is DLM_NORMAL, call
push_seq and return like the code for LKM_BLOCK.
* sendast():
if the status is DLM_WAITING and the LKM_SYNCSTS flag is
set, call pop_seq and send a DLM_NORMAL message. Clear the
LKM_SYNCSTS flag.
If the LKM_SYNCSTS flag is set:
clear it
call pop_seq
if the status is DLM_SYNC, use sendudp() to send the answer
[May be missing code to clear LKM_SYNCSTS in other cases]
2004-03-10 Chris Fanning
Opendlm community merges of various cleanups
* src/kernel/dlmdk/ast_kern.c:
moved status copy to be more like current OpenDLM code
2004-03-10 Don Zickus
Fixes for allowing Opendlm to restart without rebooting the machine
* src/kernel/dlmcccp/cccp_deliver.c:
modified the shutdown routine of the
cccp_msg_delivery_loop. Basically I wanted all the
messages to be handled through their callback so all
embedded data structures had released their memory.
Because the shutdown procedure closes all the ports, the
handling of all messages should be rather quick (if there
are any at all).
* src/kernel/dlmcccp/cccp_init.c:
added printk statements to the kmem_cache_destroy functions
for debugging purposes if they every fail (so we know which
one to chase). Also uncommented out a chunk of shutdown
code that was initially blocked for kernel space. After
some research, I saw no reason to have it commented out and
in fact was causing shutdown problems but not having it.
The main problem was not shuttting down the send socket,
which upon restart would fail to bind because the port was
still in use.
* src/kernel/dlmcccp/cccp_ports.c:
added a destroyPorts function which cleans up any
straggling messges and deallocates their memory. The
importance here is to help improve the chances of
kmem_cache_destroy succeeding.
* src/kernel/dlmcccp/cccp_private.h:
added the prototype for destroyPorts().
* src/kernel/dlmdk/ast_kern.c:
added printk statements to the kmem_cache_destroy functions
for debugging purposes if they every fail (so we know which
one to chase).
* src/kernel/dlmdk/clm_rldb.c:
added printk statements to the kmem_cache_destroy functions
for debugging purposes if they every fail (so we know which
one to chase). Also added the function destroyRLDBs which
performs the same cleanup as destroyPorts().
* src/kernel/dlmdk/clm_batch.c:
added printk statements to the kmem_cache_destroy functions
for debugging purposes if they every fail (so we know which
one to chase).
* src/kernel/dlmdk/dlm_recover.c:
added printk statements to the kmem_cache_destroy functions
for debugging purposes if they every fail (so we know which
one to chase).
2004-03-10 Don Zickus
Fix kernel oops on error conditions
* src/kernel/dlmdk/clm_deadlock.c:
In function clmdd_check, a node is analyzed to determine if
it will cause a deadlock scenario. If the node does cause
such a scenario, then it is deleted. However the pointer
to the next node to check is derived from the now defunct
node causing the system to crash. The change corrects the
scenario by first determing if the node is defunct, in
which case the next node is the head of the list, else
continue as normal.
* src/kernel/dlmdk/clm_batch.c:
Check for error by comparing the pointer to NULL instead of
a struct field inside the pointer for NULL
2004-03-10 Don Zickus
Support for the _THREAD_SAFE flag and fixes for multi-thread issues
* /src/make/user.mk:
added -D_THREAD_SAFE flag to invoke the multi-threaded code
in the dlm library
* src/api/api_errno.c:
swapped the two functions _Dlm_Errno() and
init_dlm_errno_hdl and remove an unused variable to prevent
a compiler warning for _THREAD_SAFE
* src/api/api_init.c:
extern'ed the init_dlm_errno_hdl function to fix a compiler
warning for _THREAD_SAFE
* src/api/api_vms.c:
added a cast to a function pointer to fix a compiler
warning for _THREAD_SAFE
* src/kernel/dlmdk/clm_cti.c:
added a spin lock to the per process client stack to
prevent the race condition of adding and deleting the head
of the queue at the same time
* src/kernel/dlmdk/clm_clmlock.c:
added the flag LOCK_WAITING to the lock state to enforce
syncronization between creating the resource and deleting
the resource. The flag already exisited and was used
elsewhere in the code. It seemed someone forgot to set it
here
2004-03-10 Don Zickus
Cleanup the signal handling routines
* src/include/dlm_kernel.h:
setup DLM_SIG_LOCK, DLM_SIG_UNLOCK, and DLM_SIG_CHECK
macros to mask the differences in the signal handling
structs on the various OS versions (linux-2.4, linux-2.4
modified, linux-2.6)
* src/kernel/dlmcccp/cccp_udp.c:
modified the signal handling routines to incorporate the
above macros
* src/kernel/dlmdk/clm_cti.c:
added a signal handling trap to k_clm_send() to break-out
of an error condition loop in which it was waiting for a
valid SiteID number. This loop would hang any client
program until the SiteID was valid. The problem was that
the program assumed the SiteID _would_ become valid.
* src/kernel/dlmdk/dlm_workqueue.c:
modified the signal handling routines to incorporate the
above macros
2004-03-10 Don Zickus
Compilation and configuration clean-ups
* src/make/kernel.mk:
removed the CFLAG -DUSE_SIMPLE_LOCKS as this is unsafe to
use because it treats all mutexes as spinlocks instead of
sleeping locks (ie up/down)
* src/user/common/dlm_heartbeat.c:
removed hb_api_core.h because it is not needed any more and
fails to compile.
* configure.ac:
added a whole bunch of automated checks on kernel
configurations. These checks include: cpu-type, gcc-type,
version info, smp info, signal struct type. As a result of
these new checks, it is easier to build out of the box and
for cross-compilation because the dependence is removed
from the local system info and put towards the kernel
source directory the system is compiling for
2004-03-04 Ben Cahill
* src/kernel/dlmcccp/cccp_proto.c:
Fix cat /proc/cccp segment fault (thanks Hu Gang)
* configure.ac:
Fix bug for alpha-linux (thanks Hu Gang)
2004-03-04 Stanley Wang
* src/include/dlm.h:
Change MAXLOCKVAL to 32.
2004-03-03 Ben Cahill
* src/kernel/dlmdk/clm_clmlock.c:
Fix an oops
2004-03-02 Ben Cahill
* docs/dlm_heartbeat_how-to.txt:
Add "outdated" message, re-direct to OpenGFS HOWTO-opendlm
* docs/odlm-recovery:
Minor addition
2004-02-25 Ben Cahill
* BUGS:
Add bug on cluster config time
* src/include/clmstructs.h:
Add #ifndef around defs for "TRUE"/"FALSE",
so OpenGFS can use this file.
2004-02-19 Ben Cahill
* src/include/clmstructs.h:
* src/include/clm_reconfig.h:
Edit comments.
2004-02-23 Stanley Wang
* docs/odlm-locking:
Add deadlock detecting part.
2004-02-19 Ben Cahill
* BUGS:
* docs/odlm-glossary:
* docs/odlm-recovery:
Add more to these works-in-progress
* src/kernel/dlmdk/clm_cti.c:
* src/kernel/dlmdk/dlm_recover.c:
Edit and add comments
2004-02-19 Ben Cahill
* BUGS:
* docs/odlm-glossary:
* docs/odlm-locking:
* docs/odlm-recovery:
Add more to these works-in-progress
* src/kernel/dlmdk/clm_deadlockid.c:
* src/kernel/dlmdk/clm_direct.c:
* src/kernel/dlmdk/clm_group.c:
* src/kernel/dlmdk/clm_locallock.c:
* src/kernel/dlmdk/clm_lockid.c:
* src/kernel/dlmdk/clm_migrate.c:
* src/kernel/dlmdk/clm_msg.c:
* src/kernel/dlmdk/clm_pti.c:
* src/kernel/dlmdk/clm_rldb.c:
* src/kernel/dlmdk/clm_clust.h:
* src/kernel/dlmdk/dlm_recover.c:
* src/kernel/dlmdk/clm_utilities.c:
* src/kernel/dlmdk/hsm.c:
Edit and add comments
2004-02-19 Stanley Wang
* BUGS:
Add known bug list.
2004-02-18 Ben Cahill
* docs/odlm-glossary:
* docs/odlm-locking:
* docs/odlm-recovery:
* docs/odlm-structures:
Add more to these works-in-progress
* src/kernel/dlmdk/clm_lockid.c:
* src/kernel/dlmdk/clm_lockid.h:
* src/kernel/dlmdk/clm_deadlock.c:
* src/kernel/dlmdk/clm_real_proto.h:
Remove obsolete LOCKIDTOINDEX, LOCKIDTOSEG, LOCKIDTOSITE
Remove obsolete lockidtoindex()
2004-02-16 Stanley Wang
* docs/odlm-locking:
Add lock management and LVB operation parts.
2004-02-12 Ben Cahill
* docs/odlm-recovery:
Re-organize a bit, add some new material
* docs/odlm-structures:
Initial check-in
2004-02-10 Stanley Wang
* docs/odlm-locking:
Update according to Ben's great comments.
2004-02-09 Ben Cahill
* docs/odlm-glossary:
Add to this work in progress
2004-02-09 Stanley Wang
* docs/odlm-locking:
Initial check-in
2004-02-06 Ben Cahill
* docs/odlm-glossary:
* docs/odlm-recovery:
Add to these works in progress
* kernel/dlmdk/clm_info.c:
* kernel/dlmdk/clm_main.c:
* kernel/dlmdk/clm_msg.c:
* kernel/dlmdk/dlm_recovery.c:
* kernel/dlmdk/dlm_sched.c:
* kernel/dlmdk/hsm.c:
Additions and edits of comments
2004-02-05 Ben Cahill
* docs/odlm-glossary:
* docs/odlm-recovery:
Initial check-in
2004-01-14 Stanley Wang
* api/api_ais_lock.c:
* api/api_vms.c:
* include/clmstructs.h:
* include/dlm.h:
* kernel/dlmdk/clm_clmlock.c:
* kernel/dlmdk/clm_clmlock.h:
* kernel/dlmdk/clm_cti.c:
* kernel/dlmdk/dlm_real_proto.h:
Remove ugly hacks(move orphan_holder from LVB to LKSB).
Minor bug fix.
2004-01-12 Stanley Wang
* configure.ac
* src/api/api_ais_lock.c
* src/api/api_ais_lock.h
* src/api/api_data.c
* src/api/api_setnotify.c
* src/api/api_vms.c
* src/api/ast_stub.c
* src/include/ast_stub.h
* src/include/clmstructs.h
* src/include/dlm.h
* src/include/dlm_kernel.h
* src/kernel/dlmdk/ast_kern.c
* src/kernel/dlmdk/clm_clmlock.c
* src/kernel/dlmdk/clm_cti.c
* src/kernel/dlmdk/dlm_kerndd.c
* src/kernel/dlmdk/dlm_utilities.c
* src/user/dlmdu/dlm_cmdline.c
* src/user/dlmdu/dlm_config.c
* src/user/dlmdu/dlm_device.c:
Check in the initial patch for SAF AIS lock api support
2003-12-16 Brian Jackson
* src/user/common/dlm_heartbeat.c:
Alan says including hb_api_core.h is bad, and doesn't seem to be
needed any longer
* bootstrap:
add WANT_ env variables for easier bootstrap
2003-06-16 Aneesh Kumar K.V
* src/kernel/dlmdk/clm_info.c:
Make sure we have only one entry per node below
/proc/haDLM/ after node DOWN/UP event
2003-06-15 Aneesh Kumar K.V
* src/kernel/dlmcccp/cccp_proto.c:
Fix the Oops on Alpha
* src/kernel/dlmdk/clm_batch.c:
* src/kernel/dlmdk/clm_info.c:
Formating changes
* src/kernel/dlmdk/dlm_kerndd.c:
Add info of nodes which went down also in the new topology
* src/make/kernel.mk:
remove -Werror
2003-06-09 Aneesh Kumar K.V
* src/api/api_glue.c src/api/api_glue.h src/api/api_init.c
* src/api/api_init.h src/api/api_real_proto.h
* src/kernel/dlmcccp/Makefile.am
* src/kernel/dlmcccp/cccp_deliver.c
* src/kernel/dlmcccp/cccp_ports.c
* src/kernel/dlmcccp/cccp_private.h
* src/kernel/dlmcccp/cccp_proto.c
* src/kernel/dlmcccp/cccp_proto.h src/kernel/dlmcccp/cccp_udp.c
* src/kernel/dlmdk/clm_cti.c src/kernel/dlmdk/clm_deadlock.c
* src/kernel/dlmdk/clm_direct.c src/kernel/dlmdk/clm_libr.c
* src/kernel/dlmdk/clm_resource.c src/kernel/dlmdk/clm_rldb.c
* src/kernel/dlmdk/dlm_kerndd.c src/kernel/dlmdk/dlm_recover.c
* src/kernel/dlmdk/dlm_utilities.c src/user/tests/simpleclient.c:
various code cleanups on Alpha
2003-06-09 Zhu, Yi
* src/kernel/dlmcccp/Makefile.am:
Fix the node hang during dlm lock operation
* src/include/cccp.h:
* src/include/clmstructs.h:
* src/kernel/dlmcccp/cccp_proto.c:
* src/kernel/dlmdk/clm_cti.c:
* src/kernel/dlmdk/clm_resource.c:
* src/kernel/dlmdk/dlm_kerndd.c:
* src/kernel/dlmdk/dlm_kernel.c:
* src/kernel/dlmdk/dlm_recover.c:
* src/kernel/dlmdk/dlm_utilities.c:
Code cleanup
2003-06-03 Aneesh Kumar K.V
* configure.ac:
* src/kernel/dlmcccp/Makefile.am:
* src/kernel/dlmdk/Makefile.am:
use proper linker flags
2003-05-20 Aneesh Kumar K.V
Add devfs support
Prevent module unloading for ci-linux
2003-05-19 Aneesh Kumar K.V
Add support for Alpha architecture
2002-12-12 Dominik Vogt
* configure.ac:
* src/kernel/dlmdk/Makefile.am:
* src/api/Makefile.am:
removed cproto stuff
* src/kernel/dlmdk/dlm_real_proto.h:
* src/api/api_real_proto.h:
added to cvs
2002-12-06 Dominik Vogt
* docs/dlm_heartbeat_how-to.txt:
Updated heartbeat-0.4.9e instructions
2002-11-11 Dominik Vogt
* docs/dlm_heartbeat_how-to.txt:
more troubleshooting information
2002-11-11 Aneesh Kumar K.V
* src/kernel/dlmcccp/cccp_init.c:
* src/api/api_init.c:
* src/kernel/tests/kclient2_.c:
add MODULE_LICENSE("GPL")
* src/kernel/dlmdk/dlm_kerndd.c:
add MODULE_LICENSE("GPL")
compliation fix
2002-10-29 Dominik Vogt
* src/user/common/dlm_heartbeat.c:
workaround for symbol conflicts caused by including
heartbeat.h -> glib.h
2002-10-28 Dominik Vogt
* src/user/tests/concurrent_test.c:
began work on a new concurrent test client
* src/user/tests/simpleclient.c:
include config.h in *every* .c file
* src/user/tests/Makefile.am:
* src/user/tests/client1.h:
* src/user/tests/cancel1.c:
* src/user/tests/client1.c:
* src/user/tests/client2.c:
* src/user/tests/convert_test.sh:
cleaned up
2002-10-23 Dominik Vogt
* docs/dlm_heartbeat_how-to.txt:
added heartbeat 0.4.9e instructions
2002-10-22 Dominik Vogt
* src/kernel/dlmdk/.cvsignore:
updated
* docs/dlm_heartbeat_how-to.txt:
updated
2002-10-21 Dominik Vogt
* docs/dlm_heartbeat_how-to.txt:
* docs/Makefile.am:
added file
* INSTALL.opendlm:
updated
2002-10-22 Aneesh Kumar K.V
* src/kernel/dlmdk/dlm_recover.c:
Fix Nodedown event handling bug.
2002-10-21 Aneesh Kumar K.V
* src/kernel/dlmdk/dlm_kerndd.c:
Use MAXNODES as haDLM_max_node default.
handle the node indexing the correctly in new_topo array
* src/user/tests/Makefile.am:
* src/user/tests/simpleclient.c:
Simple test program; run on both node simultaneously
one should wait for the other to release the lock
2002-10-20 Aneesh Kumar K.V
* configure.ac:
Added -I$linux_src/include to CFLAGS and CPPFLGAS
Needed when checking for linux/cluster.h
* src/kernel/dlmdk/clm_msg.c:
* src/kernel/dlmdk//Makefile.am:
dlmdk depends on a different msgtab.c
2002-10-18 Dominik Vogt
* configure.ac:
changed version to 0.9.2
* docs/DEVELOPERS:
updated
* INSTALL.opendlm:
reformatted
* bootstrap:
added bootstrap script
2002-10-14 Dominik Vogt
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS):
* configure.ac:
fixed passing --with-@CLUSTERMGT@ option to make distcheck
* src/Makefile.am:
* src/user/Makefile.am:
tried to fix "make distcheck" with ci_linux
* src/kernel/dlmdk/dlm_workqueue.c (dlm_workqueue_get_work):
fixed compiler warning
2002-10-09 Aneesh Kumar K.V
* DLM-CI integration.CI is a kernel based cluster manager.
For more information on CI http://ci-linux.sf.net
2002-09-27 Dominik Vogt
* docs/DEVELOPERS:
* INSTALL.opendlm:
updated build instructions
* **/*:
finished initial autoconf/automake setup
* src/api/print.c (dlm_errmsg):
removed reference to undefined variable
* src/kernel/dlmcccp/cccp_init.c (cccp_init):
* src/kernel/dlmdk/dlm_kerndd.c:
* src/kernel/dlmdk/ast_kern.c:
* src/kernel/dlmdk/dlm_recover.c:
* src/kernel/dlmdk/dlm_kernel.c:
* src/kernel/dlmdk/clm_unixlock.c:
* src/kernel/dlmdk/clm_tune.c:
* src/kernel/dlmdk/clm_timeout.c:
* src/kernel/dlmdk/clm_purge.c:
* src/kernel/dlmdk/clm_pti.c:
* src/kernel/dlmdk/clm_main.c:
* src/kernel/dlmdk/clm_locksw.c:
* src/kernel/dlmdk/clm_lock.c:
* src/kernel/dlmdk/clm_locallock.c:
* src/kernel/dlmdk/clm_libr.c:
* src/kernel/dlmdk/clm_group.c:
* src/kernel/dlmdk/clm_deadlock.c:
* src/kernel/dlmdk/clm_clmunlock.c:
* src/kernel/dlmdk/clm_clmlock.c:
* src/kernel/dlmdk/clm_batch.c:
* src/kernel/dlmdk/clm_alloc.c:
* src/kernel/dlmdk/dlm_recover.c (rc_barrier4):
(rc_resource_query):
(rc_rebuild_dir):
(rc_barrier1):
(clmr_restore_2):
* src/kernel/dlmdk/dlm_proc.c (dlm_proc_global_locks):
* src/kernel/dlmdk/clm_tune.c: (begin_glob_tune_op):
* src/kernel/dlmdk/clm_msg.c (clm_sync):
* src/kernel/dlmdk/clm_main.c (kern_main):
* src/kernel/dlmdk/clm_lock.c (purgelocks):
* src/kernel/dlmdk/clm_group.c (grp_proc_request):
* src/kernel/dlmdk/clm_deadlock.c (clmdd_primo):
* src/kernel/dlmdk/clm_clmlock.c (wake_all_locks):
(clm_reset_valueblocks):
fixed compiler warnings
* src/kernel/dlmdk/clm_alloc.h:
* src/kernel/dlmdk/clm_main.h:
* src/kernel/dlmdk/clm_migrate_local.h:
* src/kernel/dlmdk/clm_group.h:
* src/kernel/dlmdk/clm_msg.h:
* src/kernel/dlmdk/clm_pti.h:
* src/kernel/dlmdk/dlm_utilities.h:
* src/kernel/dlmdk/clm_tune.h:
* src/kernel/dlmdk/clm_scn.h:
* src/kernel/dlmdk/clm_purge.h:
* src/kernel/dlmdk/clm_lockid.h:
* src/kernel/dlmdk/dlm_kernel.h:
* src/kernel/dlmdk/clm_clmunlock.h:
* src/kernel/dlmdk/clm_rldb.h:
* src/kernel/dlmdk/clm_locallock.h:
* src/kernel/dlmdk/clm_cti.h:
* src/kernel/dlmdk/clm_direct.h:
* src/kernel/dlmdk/clm_clmlock.h:
* src/kernel/dlmdk/dlm_proc.h:
* src/kernel/dlmdk/clm_lock.h:
* src/kernel/dlmdk/clm_client.h:
* src/kernel/dlmdk/clm_batch.h:
* src/kernel/dlmdk/clm_libr.h:
* src/kernel/dlmdk/clm_compat.h:
added prototype files
* src/user/common/dlm_rsct.c:
* src/user/common/dlm_heartbeat.c:
don't compile anything if compiling with other clustering software
* src/api/api_vms.c:
* src/api/api_tune.c:
* src/api/api_scn.c:
* src/api/api_resource.c:
* src/api/api_purge.c:
* src/api/api_init.c:
* src/api/api_group.c:
* src/api/api_unix.c:
fixed compile warnings
* src/api/api_glue.h:
* src/api/api_init.h:
* src/api/api_resource.h:
added files
* **/*.c:
include config.h
* acinclude.m4:
* **/.cvsignore:
* **/Makefile.am:
* configure.ac:
* INSTALL.opendlm:
* README:
* NEWS:
* AUTHORS:
added files
* ChangeLog:
began this ChangeLog