)]}'
{
  "commit": "ef0c2bb05f40f9a0cd2deae63e199bfa62faa7fa",
  "tree": "df73645f93cfec29fe5b854ff5990a69b03d5c1d",
  "parents": [
    "032067270295cfca11975c0f7b467244aa170c14"
  ],
  "author": {
    "name": "David Teigland",
    "email": "teigland@redhat.com",
    "time": "Wed Mar 28 09:56:46 2007 -0500"
  },
  "committer": {
    "name": "Steven Whitehouse",
    "email": "swhiteho@redhat.com",
    "time": "Tue May 01 09:11:00 2007 +0100"
  },
  "message": "[DLM] overlapping cancel and unlock\n\nFull cancel and force-unlock support.  In the past, cancel and force-unlock\nwouldn\u0027t work if there was another operation in progress on the lock.  Now,\nboth cancel and unlock-force can overlap an operation on a lock, meaning there\nmay be 2 or 3 operations in progress on a lock in parallel.  This support is\nimportant not only because cancel and force-unlock are explicit operations\nthat an app can use, but both are used implicitly when a process exits while\nholding locks.\n\nSummary of changes:\n\n- add-to and remove-from waiters functions were rewritten to handle situations\n  with more than one remote operation outstanding on a lock\n\n- validate_unlock_args detects when an overlapping cancel/unlock-force\n  can be sent and when it needs to be delayed until a request/lookup\n  reply is received\n\n- processing request/lookup replies detects when cancel/unlock-force\n  occured during the op, and carries out the delayed cancel/unlock-force\n\n- manipulation of the \"waiters\" (remote operation) state of a lock moved under\n  the standard rsb mutex that protects all the other lock state\n\n- the two recovery routines related to locks on the waiters list changed\n  according to the way lkb\u0027s are now locked before accessing waiters state\n\n- waiters recovery detects when lkb\u0027s being recovered have overlapping\n  cancel/unlock-force, and may not recover such locks\n\n- revert_lock (cancel) returns a value to distinguish cases where it did\n  nothing vs cases where it actually did a cancel; the cancel completion ast\n  should only be done when cancel did something\n\n- orphaned locks put on new list so they can be found later for purging\n\n- cancel must be called on a lock when making it an orphan\n\n- flag user locks (ENDOFLIFE) at the end of their useful life (to the\n  application) so we can return an error for any further cancel/unlock-force\n\n- we weren\u0027t setting COMP/BAST ast flags if one was already set, so we\u0027d lose\n  either a completion or blocking ast\n\n- clear an unread bast on a lock that\u0027s become unlocked\n\nSigned-off-by: David Teigland \u003cteigland@redhat.com\u003e\nSigned-off-by: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "61d93201e1b22c8783996d86c850d5ccbd1ee835",
      "old_mode": 33188,
      "old_path": "fs/dlm/dlm_internal.h",
      "new_id": "178931cca67c97c07d84d5ad3403fdc08f259b26",
      "new_mode": 33188,
      "new_path": "fs/dlm/dlm_internal.h"
    },
    {
      "type": "modify",
      "old_id": "e725005fafd024cd41de5bdb9c0271497a7d2e1f",
      "old_mode": 33188,
      "old_path": "fs/dlm/lock.c",
      "new_id": "b865a46059ddd27aac86dc05eec54c62865e00f6",
      "new_mode": 33188,
      "new_path": "fs/dlm/lock.c"
    },
    {
      "type": "modify",
      "old_id": "f40817b53c6fc33fd39e112a7b3d2a07e7089c16",
      "old_mode": 33188,
      "old_path": "fs/dlm/lockspace.c",
      "new_id": "f607ca2f0792d7a8e20005ba54da383113858951",
      "new_mode": 33188,
      "new_path": "fs/dlm/lockspace.c"
    },
    {
      "type": "modify",
      "old_id": "27a75ce571cf90f8bbb0272458b0353ef68f1892",
      "old_mode": 33188,
      "old_path": "fs/dlm/user.c",
      "new_id": "c978c67b1effd3958aab99d66247abde50d68111",
      "new_mode": 33188,
      "new_path": "fs/dlm/user.c"
    }
  ]
}
