David Teigland 4875647a08 dlm: fixes for nodir mode
The "nodir" mode (statically assign master nodes instead
of using the resource directory) has always been highly
experimental, and never seriously used.  This commit
fixes a number of problems, making nodir much more usable.

- Major change to recovery: recover all locks and restart
  all in-progress operations after recovery.  In some
  cases it's not possible to know which in-progess locks
  to recover, so recover all.  (Most require recovery
  in nodir mode anyway since rehashing changes most
  master nodes.)

- Change the way nodir mode is enabled, from a command
  line mount arg passed through gfs2, into a sysfs
  file managed by dlm_controld, consistent with the
  other config settings.

- Allow recovering MSTCPY locks on an rsb that has not
  yet been turned into a master copy.

- Ignore RCOM_LOCK and RCOM_LOCK_REPLY recovery messages
  from a previous, aborted recovery cycle.  Base this
  on the local recovery status not being in the state
  where any nodes should be sending LOCK messages for the
  current recovery cycle.

- Hold rsb lock around dlm_purge_mstcpy_locks() because it
  may run concurrently with dlm_recover_master_copy().

- Maintain highbast on process-copy lkb's (in addition to
  the master as is usual), because the lkb can switch
  back and forth between being a master and being a
  process copy as the master node changes in recovery.

- When recovering MSTCPY locks, flag rsb's that have
  non-empty convert or waiting queues for granting
  at the end of recovery.  (Rename flag from LOCKS_PURGED
  to RECOVER_GRANT and similar for the recovery function,
  because it's not only resources with purged locks
  that need grant a grant attempt.)

- Replace a couple of unnecessary assertion panics with
  error messages.

Signed-off-by: David Teigland <teigland@redhat.com>
2012-05-02 14:15:27 -05:00
..
2012-05-02 14:15:27 -05:00
2011-07-15 12:30:43 -05:00
2012-01-04 08:56:31 -06:00
2012-01-04 08:56:31 -06:00
2012-03-08 14:46:30 -06:00
2006-01-18 09:30:29 +00:00
2012-05-02 14:15:27 -05:00
2011-01-16 21:22:37 +00:00
2012-05-02 14:15:27 -05:00
2012-05-02 14:15:27 -05:00
2012-05-02 14:15:27 -05:00
2009-05-15 09:34:12 -05:00
2011-05-26 09:46:17 +02:00
2008-04-21 11:22:28 -05:00
2012-01-04 08:56:31 -06:00
2012-01-04 08:56:31 -06:00
2011-07-12 16:02:09 -05:00
2011-07-12 16:02:09 -05:00
2008-12-23 10:15:40 -06:00
2011-07-20 20:23:19 -04:00
2012-05-02 14:15:27 -05:00
2012-01-04 08:55:57 -06:00
2012-05-02 14:15:27 -05:00
2012-05-02 14:15:27 -05:00
2012-05-02 14:15:27 -05:00
2012-01-04 08:56:31 -06:00
2011-03-10 10:40:00 -06:00
2008-02-04 01:23:43 -06:00
2006-01-18 09:30:29 +00:00