)]}'
{
  "commit": "91e6a0e5ca973c7183f638987b67aa370e9b484c",
  "tree": "734c8c74baaaa6d3c303928b4f6d1d35d3394115",
  "parents": [
    "4ba4fc857685bfe31c7127826652012a750367c5"
  ],
  "author": {
    "name": "Dinesh Dutt",
    "email": "ddutt@cumulusnetworks.com",
    "time": "Tue Dec 04 10:46:37 2012 -0800"
  },
  "committer": {
    "name": "Scott Feldman",
    "email": "sfeldma@cumulusnetworks.com",
    "time": "Mon Jan 07 09:59:43 2013 -0800"
  },
  "message": "ospf: Convert MAX_AGE LSA list to tree\n\nStore the MaxAge LSA list in a tree instead of a linked list for efficient access.\nWalking the list can be quite inefficient in some large systems and under certain tests.\n\nospfd maintains the list of LSA\u0027s that have been MaxAge\u0027d out in a separate\nlinked list for removal by a remover/walker thread. When a new LSA is to be\ninstalled, the old LSA is ejected and when it is ejected, the MaxAge LSA list\nis traversed to ensure that the old LSA is also removed from this list if it\nexists on this list.\n\nWhen a large number (\u003e 5K) MaxAge LSAs are bombarding the system, walking this\nlist takes a significant time causing timers to fire and actions to be taken\nsuch as expiring neighbors due to expiry of DeadInterval (especially when timer\nis really low, \u003c\u003d 12s), creating a spiral of instability.\n\nBy making this MaxAge LSA list be a tree, this problem is mitigated.\n\nSigned-off-by: Dinesh Dutt \u003cddutt@cumulusnetworks.com\u003e\nReviewed-by: Ayan Banerjee \u003cayan@cumulusnetworks.com\u003e\nReviewed-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\nReviewed-by: Shrijeet Mukherjee \u003cshm@cumulusnetworks.com\u003e\nSigned-off-by: Scott Feldman \u003csfeldma@cumulusnetworks.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e778251caace226ba47668818e9043a671957bc1",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsa.c",
      "new_id": "66c7e1c0cce5cdef5fba2d024533cfee22550afb",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsa.c"
    },
    {
      "type": "modify",
      "old_id": "ea9a35284439c44ce294129d3c340c1dd9dac63e",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsdb.c",
      "new_id": "aad979a742ec1e1f6691f913a5d446b3d34725d6",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsdb.c"
    },
    {
      "type": "modify",
      "old_id": "4157b685608a47150d55665e01bba7f8f142e77e",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_lsdb.h",
      "new_id": "51ae45bf5b62670370035b47ef88adb36ebe5b4f",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_lsdb.h"
    },
    {
      "type": "modify",
      "old_id": "a880714153b9e362cd4ebb9043e67a2489ccd0e2",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_vty.c",
      "new_id": "3655cfe1819851dc30ac302f9d9364981b8dff17",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_vty.c"
    },
    {
      "type": "modify",
      "old_id": "11a2dc5c1b1b5463b5da9e182dbc75209e9a8a4a",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.c",
      "new_id": "d1de29d5eaf5bf7f81cf8609cac947b7b1cc37e4",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.c"
    },
    {
      "type": "modify",
      "old_id": "dfaef1d42e5b6493be8ca96a6d2a44dab8ae579a",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.h",
      "new_id": "cc27f66ed0e4c02073aaffb70589858aee67e85e",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.h"
    }
  ]
}
