1. 21 Jun, 2016 1 commit
  2. 08 Aug, 2012 1 commit
    • David Teigland's avatar
      dlm: fix deadlock between dlm_send and dlm_controld · 36b71a8b
      David Teigland authored
      A deadlock sometimes occurs between dlm_controld closing
      a lowcomms connection through configfs and dlm_send looking
      up the address for a new connection in configfs.
      
      dlm_controld does a configfs rmdir which calls
      dlm_lowcomms_close which waits for dlm_send to
      cancel work on the workqueues.
      
      The dlm_send workqueue thread has called
      tcp_connect_to_sock which calls dlm_nodeid_to_addr
      which does a configfs lookup and blocks on a lock
      held by dlm_controld in the rmdir path.
      
      The solution here is to save the node addresses within
      the lowcomms code so that the lowcomms workqueue does
      not need to step through configfs to get a node address.
      
      dlm_controld:
      wait_for_completion+0x1d/0x20
      __cancel_work_timer+0x1b3/0x1e0
      cancel_work_sync+0x10/0x20
      dlm_lowcomms_close+0x4c/0xb0 [dlm]
      drop_comm+0x22/0x60 [dlm]
      client_drop_item+0x26/0x50 [configfs]
      configfs_rmdir+0x180/0x230 [configfs]
      vfs_rmdir+0xbd/0xf0
      do_rmdir+0x103/0x120
      sys_rmdir+0x16/0x20
      
      dlm_send:
      mutex_lock+0x2b/0x50
      get_comm+0x34/0x140 [dlm]
      dlm_nodeid_to_addr+0x18/0xd0 [dlm]
      tcp_connect_to_sock+0xf4/0x2d0 [dlm]
      process_send_sockets+0x1d2/0x260 [dlm]
      worker_thread+0x170/0x2a0
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      36b71a8b
  3. 16 Jul, 2012 1 commit
    • David Teigland's avatar
      dlm: use rsbtbl as resource directory · c04fecb4
      David Teigland authored
      Remove the dir hash table (dirtbl), and use
      the rsb hash table (rsbtbl) as the resource
      directory.  It has always been an unnecessary
      duplication of information.
      
      This improves efficiency by using a single rsbtbl
      lookup in many cases where both rsbtbl and dirtbl
      lookups were needed previously.
      
      This eliminates the need to handle cases of rsbtbl
      and dirtbl being out of sync.
      
      In many cases there will be memory savings because
      the dir hash table no longer exists.
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      c04fecb4
  4. 04 Jan, 2012 1 commit
    • David Teigland's avatar
      dlm: add recovery callbacks · 60f98d18
      David Teigland authored
      These new callbacks notify the dlm user about lock recovery.
      GFS2, and possibly others, need to be aware of when the dlm
      will be doing lock recovery for a failed lockspace member.
      
      In the past, this coordination has been done between dlm and
      file system daemons in userspace, which then direct their
      kernel counterparts.  These callbacks allow the same
      coordination directly, and more simply.
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      60f98d18
  5. 12 Jul, 2011 1 commit
    • David Teigland's avatar
      dlm: improve rsb searches · 3881ac04
      David Teigland authored
      By pre-allocating rsb structs before searching the hash
      table, they can be inserted immediately.  This avoids
      always having to repeat the search when adding the struct
      to hash list.
      
      This also adds space to the rsb struct for a max resource
      name, so an rsb allocation can be used by any request.
      The constant size also allows us to finally use a slab
      for the rsb structs.
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      3881ac04
  6. 11 Jul, 2011 1 commit
  7. 01 Apr, 2011 1 commit
  8. 21 Apr, 2008 1 commit
    • David Teigland's avatar
      dlm: recover nodes that are removed and re-added · d44e0fc7
      David Teigland authored
      If a node is removed from a lockspace, and then added back before the
      dlm is notified of the removal, the dlm will not detect the removal
      and won't clear the old state from the node.  This is fixed by using a
      list of added nodes so the membership recovery can detect when a newly
      added node is already in the member list.
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      d44e0fc7
  9. 09 Jul, 2007 1 commit
    • David Teigland's avatar
      [DLM] add lock timeouts and warnings [2/6] · 3ae1acf9
      David Teigland authored
      New features: lock timeouts and time warnings.  If the DLM_LKF_TIMEOUT
      flag is set, then the request/conversion will be canceled after waiting
      the specified number of centiseconds (specified per lock).  This feature
      is only available for locks requested through libdlm (can be enabled for
      kernel dlm users if there's a use for it.)
      
      If the new DLM_LSFL_TIMEWARN flag is set when creating the lockspace, then
      a warning message will be sent to userspace (using genetlink) after a
      request/conversion has been waiting for a given number of centiseconds
      (configurable per node).  The time warnings will be used in the future
      to do deadlock detection in userspace.
      Signed-off-by: 's avatarDavid Teigland <teigland@redhat.com>
      Signed-off-by: 's avatarSteven Whitehouse <swhiteho@redhat.com>
      3ae1acf9
  10. 01 May, 2007 1 commit
  11. 05 Feb, 2007 2 commits
  12. 18 Jan, 2006 1 commit