Commit Graph

829 Commits

Author SHA1 Message Date
Thomas Schoebel-Theuer e9035548a4 marsadm: split {{at,de}tach,up,down} into phases 2013-06-20 15:08:27 +02:00
Thomas Schoebel-Theuer 62dd9c64dd light: fix logfile replication when trans_logger is not running 2013-06-03 09:05:47 +02:00
Thomas Schoebel-Theuer bdb6aaef1f light: fix detach operation 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 59d706ba54 infra: replace brick_version by kill_round 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer bf7c0c9f3b infra: remove superfluous parameter is_server 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer dfe2dc5b1c infra: remove recursive button operations
All buttons should be switched step-by-step in future.
The previous patch should ensure that no harm can occur.
2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 726bbe17fc infra: don't switch off if predecessors are working 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer ce110eb52b infra: disallow forbidden brick states
Switch on only when all predecessor bricks are also on.
Failing to do so can result in fatal errors.
Similarly, switch only off if no successor exists any more.
2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 326ed48da2 light: remove superfluous timeout parameter
The concept was broken.
2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer e3c10d31a9 net: decrease trigger turnaround time 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 0e15b38457 marsadm: add new commands 'wait-{cluster,resource}' 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 359c039445 marsadm: add new command 'wait-umount' 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 0953801a6e marsadm: fix primary detection
The actual-*/is-primary symlink may race with the appearance
of the device. Use both conditions to be sure.
2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 2dd3033ff4 marsadm: split command "primary" into phases 2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer dab60da817 marsadm: allow calling multiple functions in phases
Add infrastructure for splitting commands in multiple phases.
Usually, phase0 will check for some preconditions, while
phase1 will execute the command. The final result will only
be committed if nothing fails.

The difference to the old behaviour will only show up when combined
with 'all' resources. If anything fails in phase0, nothing will be
touched in phase1. The old behaviour could touch some resources,
but omit others when something failed.

The new behaviour is more transactional-like.
2013-06-03 09:05:46 +02:00
Thomas Schoebel-Theuer 14e9582e93 marsadm: fix join-resource 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 4690deb873 marsadm: check attach state 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 0bab62f434 marsadm: fix detection of incompatible versions 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer b7c1900820 marsadm: use Lamport time for symlink creation 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer db8e4caacf proc: fix query of lamport clock 2013-05-13 12:50:29 +02:00
Frank Liepold 57b8d173ff light: correct error code OOM 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 30f97cd23f light: fix symlink deletion 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer ca07c9a763 marsadm: fix log-delete{,-all} 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer a1caef264c aio: avoid cluttering the log messages 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 77fdc4cc1a marsadm: improve check_* routines 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 6964573aa3 marsadm: disallow resize to smaller size 2013-05-13 12:50:29 +02:00
Thomas Schoebel-Theuer 54a8eb31f5 infra: add CONFIG_MARS_CHECKS 2013-04-27 21:59:41 +02:00
Thomas Schoebel-Theuer b0c09061e9 marsadm: allow only multiples of 4k as size arguments 2013-04-25 22:32:37 +02:00
Thomas Schoebel-Theuer c411a6f243 aio: fix local replay
side effect / regression from 814b92ba19
2013-04-25 16:28:48 +02:00
Thomas Schoebel-Theuer 46f815f54e marsadm: add optional size argument to resize command 2013-04-25 16:06:18 +02:00
Thomas Schoebel-Theuer 803a1c8419 infra: fix race on deletion of say channels 2013-04-25 16:03:48 +02:00
Thomas Schoebel-Theuer 8d93439dcb marsadm: add new command 'set-replay' 2013-04-22 14:40:24 +02:00
Thomas Schoebel-Theuer 22f75b9d71 marsadm: rewrite / correct symlink faking 2013-04-22 14:40:24 +02:00
Thomas Schoebel-Theuer 03f418c2c7 marsadm: improve message texts and parameter semantics 2013-04-22 11:50:07 +02:00
Thomas Schoebel-Theuer 8f081105fd marsadm: fix distinction _get_{designated,actual}_primary 2013-04-22 11:48:50 +02:00
Thomas Schoebel-Theuer 109eed06f3 marsadm: fix and unify readlink() usage 2013-04-22 11:48:50 +02:00
Thomas Schoebel-Theuer 78c7c307ea marsadm: fix primary checks 2013-04-22 11:48:50 +02:00
Thomas Schoebel-Theuer 20166b6c01 infra: better optimization of memory allocations 2013-04-22 11:48:50 +02:00
Thomas Schoebel-Theuer 1202f2ae8e trans_logger: fix emergency mode (cease_logging) 2013-04-22 11:48:50 +02:00
Thomas Schoebel-Theuer 0c7bb9d00f if: fix bio flags for newer kernels
The old code was just bullshit.
2013-04-19 09:30:15 +02:00
Thomas Schoebel-Theuer e4e9308310 if: improve performance of big bio requests
Writethrough of bio requests having more than one biovec should
only sync the last one. The others will be written to the transaction
log anyway. No need to wait for each of them to be committed one
by one.
2013-04-18 18:38:03 +02:00
Thomas Schoebel-Theuer 8f6054b0cc trans_logger: call _flush_inputs() more often
The old behaviour could lead to starvation effects.
In particular, direct IO writes were affected.
2013-04-18 18:31:38 +02:00
Daniel Hermann 92951e491b marsadm: improve primary/secondary command behaviour
Previously, the 'marsadm primary' and 'marsadm secondary' commands
were successful as soon as the target primary was successfully set
to the new primary or '(none)', respectively.  This commit appends
a check to wait until the primary is really changed (actual state).

Changes in marsadm:
- Added check_primary_settled() function
- Do not use local variable named '$host' in _primary_res() since
  a global variable with same name exists.
- Do not use/set global variable '$host' in primary_res().  Use
  local variable '$new' initially set to '$host' instead.
- Make 'secondary' command idempotent ("is already secondary")
- Call trigger() and check_primary_settled() in primary_res()

Related minor changes:
- marsadm: Added optional parameter 'sleeptime' to sleep_timeout()
- Removed debug output in check_file_aged()

Signed-off-by: Thomas Schoebel-Theuer <tst@1und1.de>
2013-04-18 10:09:15 +02:00
Thomas Schoebel-Theuer f2b8256fcd marsadm: categorize commands correctly 2013-04-17 12:03:00 +02:00
Thomas Schoebel-Theuer e02c06e265 marsadm: disallow --force on 'all' resources 2013-04-17 12:03:00 +02:00
Thomas Schoebel-Theuer 9187bf210d marsadm: check for matching version numbers 2013-04-17 11:03:13 +02:00
Thomas Schoebel-Theuer 67b322d600 trans_logger: report replay errors separately 2013-04-16 11:31:42 +02:00
Thomas Schoebel-Theuer 5a5ea9bc52 infra: initialize IO transfer metadata correctly 2013-04-16 10:42:16 +02:00
Thomas Schoebel-Theuer 27fd43cb31 infra: remove obsolete black interface
The backing file should not be exposed from the brick blackbox.
2013-04-16 10:42:16 +02:00
Thomas Schoebel-Theuer 814b92ba19 aio: fix race on file length (workaround)
It appears that concurrent reads and writes on AIO seem to
result in inconsistent reads in some very rare cases, due to
races. Sometimes, the inode claims that the file has been already
appended by a write operation, but the data has not actually hit
the page cache, such that a concurrent read gets NULL blocks.

This is a workaround by "misusing" the mapfree infrastructure.
It depends on uniqueness of file names, which is not the right thing
to do.

Best fix would be in the kernel.
2013-04-16 10:42:16 +02:00