dss.git
11 years agodss-0.1.3. v0.1.3
Andre Noll [Mon, 6 Jul 2009 13:55:13 +0000 (15:55 +0200)]
dss-0.1.3.

11 years agoChange copyright year from 2008 to 2009.
Andre Noll [Fri, 3 Jul 2009 15:03:39 +0000 (17:03 +0200)]
Change copyright year from 2008 to 2009.

A bit late, but better late than never.

11 years agoTry harder to avoid removing the reference snapshot.
Andre Noll [Mon, 29 Jun 2009 09:36:25 +0000 (11:36 +0200)]
Try harder to avoid removing the reference snapshot.

With the old code, it was possible that dss decided to remove the
snapshot which is currently being used as the hardlink directory for
the current rsync process. This patch changes the behaviour so that
reference snapshots are never removed.

The downside of this approach is of course that it is now easier to
fill up the disk..

11 years agoDon't remove the last snapshot unless disk space is low.
Andre Noll [Mon, 8 Jun 2009 06:15:18 +0000 (08:15 +0200)]
Don't remove the last snapshot unless disk space is low.

11 years agoDon't busy-loop if pre-create hook returns non-zero.
Andre Noll [Mon, 8 Jun 2009 05:57:30 +0000 (07:57 +0200)]
Don't busy-loop if pre-create hook returns non-zero.

Sleep at least one minute before retrying.

11 years agoFix removal of orphaned snapshots.
Andre Noll [Sun, 7 Jun 2009 19:44:50 +0000 (21:44 +0200)]
Fix removal of orphaned snapshots.

These were detected but not removed due to the goto jumping to the
wrong label.

11 years agoImprove documentation of the remove hooks.
Andre Noll [Sun, 7 Jun 2009 19:16:41 +0000 (21:16 +0200)]
Improve documentation of the remove hooks.

11 years agoClean up snapshot removal logic.
Andre Noll [Thu, 4 Jun 2009 11:47:35 +0000 (13:47 +0200)]
Clean up snapshot removal logic.

Replace the remove_xxx_snapshot() functions by find_xxx_snapshot()
and start the actual removal in the caller. This simplifies the
code a bit and makes it much more readable. It also simplifies the
--dry-run handling for com_prune().

11 years agoRemove orphaned snapshots first if disk space is low.
Andre Noll [Fri, 29 May 2009 20:09:06 +0000 (22:09 +0200)]
Remove orphaned snapshots first if disk space is low.

If the dss process gets killed, an orphaned snapshot might result.
Detect this case and prefer to remove such orphaned snapshots before
resorting to remove the oldest snapshot.

11 years agoFix some typos.
Andre Noll [Fri, 29 May 2009 20:03:19 +0000 (22:03 +0200)]
Fix some typos.

11 years agoRestart rsync also on exit value 12.
Andre Noll [Fri, 29 May 2009 11:49:13 +0000 (13:49 +0200)]
Restart rsync also on exit value 12.

An exit value of 12 means "Error in rsync protocol data stream",
and it happens regularly for rsync-3 without apparent reason. So
restart the rsync process also in this case.

11 years agoFix return value of remove_oldest_snapshot().
Andre Noll [Tue, 5 May 2009 08:53:43 +0000 (10:53 +0200)]
Fix return value of remove_oldest_snapshot().

We _must_ return non-zero if the remove was initiated. The old code
would exit with

try_to_free_disk_space: uhuhu: not enough disk space for a single snapshot

even though there are plenty of snapshots available that can be deleted.

11 years agoFix rm-hooks in case no post-remove hook was specified.
Andre Noll [Mon, 27 Apr 2009 18:19:11 +0000 (20:19 +0200)]
Fix rm-hooks in case no post-remove hook was specified.

Without the patch the following assertion was triggered upon
removal of the second snapshot:

dss: dss.c:229: pre_remove_hook: Assertion `!snapshot_currently_being_removed' failed.

Thanks to Sebastian Stark who pointed out the issue.

11 years agoImplement rm-hooks.
Andre Noll [Wed, 8 Apr 2009 13:23:01 +0000 (15:23 +0200)]
Implement rm-hooks.

This adds calls for the pre-remove and the post-remove hooks, similar to
the pre-create/post-create hooks. If the pre-remove hook fails, snapshot
deletion is deferred until the hook succeeds.

11 years agoRename hook_status enum.
Andre Noll [Tue, 7 Apr 2009 14:50:32 +0000 (16:50 +0200)]
Rename hook_status enum.

We'd like to use only one set of states for both creation/removal.

11 years agoMerge branch 'master' into rm_hook
Andre Noll [Tue, 7 Apr 2009 14:17:01 +0000 (16:17 +0200)]
Merge branch 'master' into rm_hook

11 years agocom_create: Abort if pre-create hook fails.
Andre Noll [Tue, 7 Apr 2009 14:15:01 +0000 (16:15 +0200)]
com_create: Abort if pre-create hook fails.

handle_pre_create_hook_exit() returns zero if the hook failed.

11 years agoAdd pre-remove and post-remove hooks to dss.ggo.
Andre Noll [Tue, 7 Apr 2009 13:23:34 +0000 (15:23 +0200)]
Add pre-remove and post-remove hooks to dss.ggo.

These are not yet used in the code.

11 years agoRename rm_pid to remove_pid.
Andre Noll [Tue, 7 Apr 2009 13:09:59 +0000 (15:09 +0200)]
Rename rm_pid to remove_pid.

This variable will contain the pid of rm-hooks or the rm process.

11 years agoMerge branch 'master' into rm_hook
Andre Noll [Tue, 7 Apr 2009 12:18:14 +0000 (14:18 +0200)]
Merge branch 'master' into rm_hook

11 years agoMerge commit 'meins/master'
Andre Noll [Mon, 30 Mar 2009 10:50:35 +0000 (12:50 +0200)]
Merge commit 'meins/master'

11 years agoFix the pre-create hook.
Andre Noll [Mon, 30 Mar 2009 10:49:03 +0000 (12:49 +0200)]
Fix the pre-create hook.

Returning non-zero from the pre-create hook caused dss to exit with
"unexpected exit code" rather than waiting until the hook returns
zero.

Fix this bug and also reduce the verbostity of the log messages caused
by executing the pre-create hook: It should be enough to tell the user
only once per hour that no more snapshots are going to be created.

11 years agoClarify usage of --rsync-option.
Andre Noll [Sun, 22 Mar 2009 02:42:07 +0000 (03:42 +0100)]
Clarify usage of --rsync-option.

11 years agoMerge commit 'fml/master'
Andre Noll [Mon, 16 Mar 2009 21:05:32 +0000 (22:05 +0100)]
Merge commit 'fml/master'

11 years agoBump version number to 0.1.2.
Andre Noll [Mon, 16 Mar 2009 16:30:01 +0000 (17:30 +0100)]
Bump version number to 0.1.2.

Oops, this should have been done just before tagging the 0.1.2 release..

11 years agoIntroduce the snapshot removal status.
Andre Noll [Thu, 5 Mar 2009 09:38:39 +0000 (10:38 +0100)]
Introduce the snapshot removal status.

It is not yet used, but we need something like that for the remove-hooks.

11 years agoTrivial typo fix.
Andre Noll [Mon, 16 Mar 2009 16:19:28 +0000 (17:19 +0100)]
Trivial typo fix.

11 years agoUse only one global variable for snapshot creation pids.
Andre Noll [Mon, 16 Mar 2009 15:57:56 +0000 (16:57 +0100)]
Use only one global variable for snapshot creation pids.

There's no need to have pre_create_hook_pid, rsync_pid and
post_create_hook_pid because only one of them can be running at
any point in time. We can always tell which it is by examining the
snapshot_creation_status.

So replace these three variables by the single create_pid variable.

Besides of killing two global variables, this change also fixes a
real bug: If the dss process catches SIGINT or SIGTERM, the old code
would only kill a running rsync process but not the pre-create or
post-create hook. However, the new code kills whatever create process
is currently running, which is the right thing to do.

11 years agoMerge commit 'meins/master'
Andre Noll [Fri, 13 Mar 2009 17:06:04 +0000 (18:06 +0100)]
Merge commit 'meins/master'

11 years agoMerge commit 'fml/master'
Andre Noll [Fri, 13 Mar 2009 08:24:21 +0000 (09:24 +0100)]
Merge commit 'fml/master'

11 years agoInclude the reason why a snapshot gets removed in the log message. v0.1.2
Andre Noll [Thu, 5 Mar 2009 09:16:10 +0000 (10:16 +0100)]
Include the reason why a snapshot gets removed in the log message.

11 years agoNever remove the snapshot that is currently being created.
Andre Noll [Thu, 5 Mar 2009 09:13:12 +0000 (10:13 +0100)]
Never remove the snapshot that is currently being created.

Thanks to Sebastian Stark for pointing out this bug.

11 years agoMerge commit 'fml/master'
Andre Noll [Wed, 11 Feb 2009 22:51:44 +0000 (23:51 +0100)]
Merge commit 'fml/master'

11 years agoMerge commit 'stark/master'
Andre Noll [Mon, 2 Feb 2009 18:23:33 +0000 (19:23 +0100)]
Merge commit 'stark/master'

11 years agoInvalidate all rsync options on SIGHUP.
Andre Noll [Mon, 2 Feb 2009 18:23:20 +0000 (19:23 +0100)]
Invalidate all rsync options on SIGHUP.

gengetopt's params->override option does not do what its name suggests,
see

http://www.opensubscriber.com/message/help-gengetopt@gnu.org/10980633.html

or
http://www.mail-archive.com/help-gengetopt@gnu.org/msg00507.html

11 years agofix post_create_hook: really pass full path to last complete snapshot
Sebastian Stark [Sat, 31 Jan 2009 09:04:28 +0000 (10:04 +0100)]
fix post_create_hook: really pass full path to last complete snapshot

11 years agoMerge commit 'fml/master'
Andre Noll [Tue, 23 Dec 2008 22:14:34 +0000 (23:14 +0100)]
Merge commit 'fml/master'

11 years agoAdd some comments to compute_next_snapshot_time().
Andre Noll [Thu, 11 Dec 2008 13:07:49 +0000 (14:07 +0100)]
Add some comments to compute_next_snapshot_time().

Also, move the call to gettimeofday() down to where it is needed.

11 years agoMerge commit 'sio/master'
Andre Noll [Mon, 8 Dec 2008 16:21:51 +0000 (17:21 +0100)]
Merge commit 'sio/master'

11 years agoFix check when to use rsync locally.
Andre Noll [Mon, 8 Dec 2008 16:17:50 +0000 (17:17 +0100)]
Fix check when to use rsync locally.

We can do this if (a) remote_host_arg is "localhost" and (b)
remote_user_arg is the same as logname. The old code only
looked at the logname and thus tried to use rsync locally even
if a remote_host_arg was specified.

11 years agoFix a typo in README.
Andre Noll [Mon, 1 Dec 2008 17:38:49 +0000 (18:38 +0100)]
Fix a typo in README.

11 years agoINSTALL: Mention "make man".
Andre Noll [Sat, 22 Nov 2008 22:41:59 +0000 (23:41 +0100)]
INSTALL: Mention "make man".

11 years agoClarify the --keep-redundant option.
Andre Noll [Sun, 16 Nov 2008 12:19:32 +0000 (13:19 +0100)]
Clarify the --keep-redundant option.

dss cares about the number of free inodes, not the inode ratio.

11 years agodss-0.1.1. v0.1.1
Andre Noll [Wed, 12 Nov 2008 16:52:20 +0000 (17:52 +0100)]
dss-0.1.1.

11 years agoPrevent busy loops on rsync exit code 13.
Andre Noll [Thu, 6 Nov 2008 09:32:01 +0000 (10:32 +0100)]
Prevent busy loops on rsync exit code 13.

We restart the rsync process in case it returned with exit code 13
which unfortunately happens for some unknown reasons even with a
valid configuration.

This may lead to a busy loop, so wait at least one minute before
restarting rsync.

11 years agoIgnore any snapshot directory with creation time > completion time.
Andre Noll [Thu, 6 Nov 2008 08:52:28 +0000 (09:52 +0100)]
Ignore any snapshot directory with creation time > completion time.

Without this fix, dss would abort du to an assertion in dss.c:

dss.c:171: compute_next_snapshot_time: Assertion `x >= 0' failed.

Thanks to Sebastian Stark for pointing out this flaw.

11 years agouse C99-compliant format strings for consistency reasons
Sebastian Stark [Wed, 22 Oct 2008 15:14:30 +0000 (17:14 +0200)]
use C99-compliant format strings for consistency reasons

11 years agoopen /dev/null for reading AND writing when executing rsync.
Sebastian Stark [Wed, 22 Oct 2008 12:59:11 +0000 (14:59 +0200)]
open /dev/null for reading AND writing when executing 

This is needed for child processes to be able to write to fd 2 without failing.

For example, rsync will not be able to write an error message because of "Bad
file descriptor" which in turn leads to rsync exiting with meaningless exit
code 13 ("Errors with program diagnostics"), masking the actual error and exit
code.

The fact that rsync uses exit code 13 in that case makes this bug particularly
painful since 13 is interpreted by dss as a temporary rsync error that can be
"fixed" by simply restarting rsync. This can lead to an infinite loop,
obviously.

11 years agoshow human readable snapshot creation duration when listing snapshots.
Sebastian Stark [Wed, 22 Oct 2008 11:31:42 +0000 (13:31 +0200)]
show human readable snapshot creation duration when listing snapshots.

The PRId64 macro is defined in the C99 standard. See

  http://www.opengroup.org/onlinepubs/009695399/basedefs/inttypes.h.html

12 years agoAdd dss.1 and dss.1.html to .gitignore.
Andre Noll [Mon, 7 Jul 2008 14:29:56 +0000 (16:29 +0200)]
Add dss.1 and dss.1.html to .gitignore.

12 years agoRestart the rsync process if it returned with exit code 13.
Andre Noll [Mon, 7 Jul 2008 14:29:38 +0000 (16:29 +0200)]
Restart the rsync process if it returned with exit code 13.

Unfortunately this happens frequently for no apparent reason.

12 years agoFix the exit hook.
Andre Noll [Wed, 21 May 2008 14:36:13 +0000 (16:36 +0200)]
Fix the exit hook.

As dss_exec_cmdline_pid() uses the space character as a separator
to split the command line, the words of the error message were
passed as separate parameters to the exit hook.

Use dss_exec() directly to avoid this flaw, i.e. to pass the full
error message as $1 to the exit hook.

12 years agoOffer a direct link to the automatically generated tarball.
Andre Noll [Fri, 16 May 2008 09:27:48 +0000 (11:27 +0200)]
Offer a direct link to the automatically generated tarball.

As suggested by Sebastian Stark.

12 years agoNAME section for manpage
Sebastian Stark [Wed, 14 May 2008 14:08:25 +0000 (16:08 +0200)]
NAME section for manpage

12 years agoadd SEE ALSO section to manpage
Sebastian Stark [Wed, 14 May 2008 14:03:31 +0000 (16:03 +0200)]
add SEE ALSO section to manpage

12 years agodss-0.1.0. v0.1.0
Andre Noll [Wed, 14 May 2008 13:16:08 +0000 (15:16 +0200)]
dss-0.1.0.

12 years agosnap.c: Add missing include to make it compile on FreeBSD.
Andre Noll [Wed, 14 May 2008 12:22:40 +0000 (14:22 +0200)]
snap.c: Add missing include to make it compile on FreeBSD.

12 years agoNetBSD Compile fixes.
Andre Noll [Wed, 14 May 2008 12:09:41 +0000 (14:09 +0200)]
NetBSD Compile fixes.

Add a missing include and the dss_isdigit macro.

12 years agoFix paths and URLs, improve INSTALL text.
Andre Noll [Tue, 13 May 2008 14:47:29 +0000 (16:47 +0200)]
Fix paths and URLs, improve INSTALL text.

12 years agoINSTALL: Fix a typo.
Andre Noll [Mon, 12 May 2008 22:32:51 +0000 (00:32 +0200)]
INSTALL: Fix a typo.

12 years agoREADME, INSTALL improvements.
Andre Noll [Mon, 12 May 2008 21:21:45 +0000 (23:21 +0200)]
README, INSTALL improvements.

Improve basic example usage and mention that dss provides an additional
level of data security.

12 years agoImplement exit-hooks.
Andre Noll [Mon, 12 May 2008 18:29:34 +0000 (20:29 +0200)]
Implement exit-hooks.

12 years agoClarify documentation of --run.
Andre Noll [Mon, 12 May 2008 18:28:58 +0000 (20:28 +0200)]
Clarify documentation of --run.

12 years agoAdd new option --keep-redundant.
Andre Noll [Mon, 12 May 2008 15:42:35 +0000 (17:42 +0200)]
Add new option --keep-redundant.

12 years agoFix the math in the description of the unit interval.
Andre Noll [Mon, 12 May 2008 15:42:14 +0000 (17:42 +0200)]
Fix the math in the description of the unit interval.

12 years agoClarify the difference between outdated and redundant snapshots.
Andre Noll [Mon, 12 May 2008 15:41:15 +0000 (17:41 +0200)]
Clarify the difference between outdated and redundant snapshots.

12 years agoAdd section "Commands" to dss help text.
Andre Noll [Mon, 12 May 2008 14:41:35 +0000 (16:41 +0200)]
Add section "Commands" to dss help text.

12 years agoindex.html.in: Remove Link to top of the page.
Andre Noll [Mon, 12 May 2008 14:41:13 +0000 (16:41 +0200)]
index.html.in: Remove Link to top of the page.

12 years agoAdd web page stuff.
Andre Noll [Mon, 12 May 2008 13:22:12 +0000 (15:22 +0200)]
Add web page stuff.

12 years agoAdd INSTALL -- installation and usage notes.
Andre Noll [Mon, 12 May 2008 13:19:27 +0000 (15:19 +0200)]
Add INSTALL -- installation and usage notes.

12 years agodss.c: Remove obsolete TODO item.
Andre Noll [Mon, 12 May 2008 12:35:35 +0000 (14:35 +0200)]
dss.c: Remove obsolete TODO item.

12 years agoMinor help text improvements/fixes.
Andre Noll [Mon, 12 May 2008 12:35:19 +0000 (14:35 +0200)]
Minor help text improvements/fixes.

12 years agoAdd GPL headers and COPYING file.
Andre Noll [Mon, 12 May 2008 08:56:35 +0000 (10:56 +0200)]
Add GPL headers and COPYING file.

12 years agodss-0.0.5. v0.0.5
Andre Noll [Thu, 24 Apr 2008 16:01:19 +0000 (18:01 +0200)]
dss-0.0.5.

12 years agoFix return value of try_to_free_disk_space().
Andre Noll [Thu, 24 Apr 2008 15:39:53 +0000 (17:39 +0200)]
Fix return value of try_to_free_disk_space().

We must never, ever return a system error without converting
it to a dss error code first.

12 years agoLoglevel adjustments.
Andre Noll [Thu, 24 Apr 2008 15:38:29 +0000 (17:38 +0200)]
Loglevel adjustments.

12 years agoFix select timeout.
root [Thu, 17 Apr 2008 15:58:20 +0000 (17:58 +0200)]
Fix select timeout.

Under Linux, select() modifies the timeval pointed to by the last
parameter; it contains the time that was not slept because an fd
in one of the given fd sets became ready.

It is hence necessary to reset the time to be slept in each iteration
off dss' select loop.

12 years agoMerge commit 'fml/master'
root [Mon, 14 Apr 2008 16:33:39 +0000 (18:33 +0200)]
Merge commit 'fml/master'

12 years agodss.c: Sleep at most 60 seconds.
Andre Noll [Mon, 14 Apr 2008 16:30:50 +0000 (18:30 +0200)]
dss.c: Sleep at most 60 seconds.

Otherwise we might miss to remove snapshots in time.

12 years agoMerge commit 'remotes/fml/master'
root [Mon, 31 Mar 2008 11:07:45 +0000 (13:07 +0200)]
Merge commit 'remotes/fml/master'

12 years agoKill --exclude-patterns option.
Andre Noll [Mon, 31 Mar 2008 11:05:52 +0000 (13:05 +0200)]
Kill --exclude-patterns option.

The same can be achieved by using the --rsync-option.

12 years agoMerge commit 'remotes/fml/master'
root [Fri, 28 Mar 2008 14:10:20 +0000 (15:10 +0100)]
Merge commit 'remotes/fml/master'

12 years agoFix a serious bug in deamon mode.
Andre Noll [Fri, 28 Mar 2008 14:01:09 +0000 (15:01 +0100)]
Fix a serious bug in deamon mode.

In daemon mode, we changed to dest_dir _before_ calling daemon_init(),
which changes the cwd to /.

Fix this rather embarrassing bug by changing cwd later. To this aim,
introduce change_to_dest_dir() which also logs some messages.

12 years agodss.ggo: Disable inode monitoring by default.
Andre Noll [Thu, 27 Mar 2008 16:59:22 +0000 (17:59 +0100)]
dss.ggo: Disable inode monitoring by default.

Not all file systems support inodes. For example reiserfs reports zero
for all inode-related fields in the statvfs structure. Even worse, on
windows file systems, the field contains some more or less arbitrary
large number.

12 years agoRemove some useless stuff from gcc-compat.h
root [Thu, 27 Mar 2008 10:22:36 +0000 (11:22 +0100)]
Remove some useless stuff from gcc-compat.h

12 years agoPrint config errors.
Andre Noll [Thu, 27 Mar 2008 10:15:15 +0000 (11:15 +0100)]
Print config errors.

Dooh. This broke in 9c4bc98761828cbe3997e071ad5b4d24eb52e599.

12 years agodss-0.0.4. v0.0.4
Andre Noll [Sat, 22 Mar 2008 20:55:48 +0000 (21:55 +0100)]
dss-0.0.4.

12 years agoAlso check for free inodes and start snapshot removal if necessary.
Andre Noll [Sat, 22 Mar 2008 20:54:59 +0000 (21:54 +0100)]
Also check for free inodes and start snapshot removal if necessary.

12 years agoAdd special rule to make cmdline.o.
Andre Noll [Sat, 22 Mar 2008 14:26:56 +0000 (15:26 +0100)]
Add special rule to make cmdline.o.

I got tired of the warnings gcc spits out when compiling cmdline.c.

12 years agoMakefile: Replace dependencies on cmdline.h by Makefile.
Andre Noll [Sat, 22 Mar 2008 14:24:46 +0000 (15:24 +0100)]
Makefile: Replace dependencies on cmdline.h by Makefile.

The dependencies on cmdline.h are mentioned in Makefile.deps
anyway. But everything depends on Makefile, so..

12 years agoMakefile: The linker does not need CPPFLAGS.
Andre Noll [Sat, 22 Mar 2008 14:22:50 +0000 (15:22 +0100)]
Makefile: The linker does not need CPPFLAGS.

12 years agostring.c: Include stdio instead of cmdline.h.
Andre Noll [Sat, 22 Mar 2008 14:19:27 +0000 (15:19 +0100)]
string.c: Include stdio instead of cmdline.h.

The string helper functions really should not depend on the
command line parser.

12 years agoAdd more source code documentation.
Andre Noll [Sat, 22 Mar 2008 14:06:12 +0000 (15:06 +0100)]
Add more source code documentation.

12 years agodss.c: Make functions and global variables static.
Andre Noll [Sat, 22 Mar 2008 13:43:32 +0000 (14:43 +0100)]
dss.c: Make functions and global variables static.

12 years agoMove snapshot helpers to new file snap.[ch].
Andre Noll [Sat, 22 Mar 2008 13:37:09 +0000 (14:37 +0100)]
Move snapshot helpers to new file snap.[ch].

12 years agoKill unused dss_error_txt.
Andre Noll [Sat, 22 Mar 2008 11:51:18 +0000 (12:51 +0100)]
Kill unused dss_error_txt.

12 years agoMove log_disk_space() to df.c.
Andre Noll [Sat, 22 Mar 2008 11:49:44 +0000 (12:49 +0100)]
Move log_disk_space() to df.c.

12 years agoKill struct edge_snapshot_data.
Andre Noll [Sat, 22 Mar 2008 11:45:28 +0000 (12:45 +0100)]
Kill struct edge_snapshot_data.

Just get the full snapshot list and take the last complete one instead.

12 years agoGet rid of make_err_msg() and log_err_msg().
Andre Noll [Sat, 22 Mar 2008 11:09:40 +0000 (12:09 +0100)]
Get rid of make_err_msg() and log_err_msg().

It's too error-prone to be useful.

12 years agoMakefile: use --detailed-help to produce the man page.
Andre Noll [Sat, 22 Mar 2008 10:01:52 +0000 (11:01 +0100)]
Makefile: use --detailed-help to produce the man page.