)]}'
{
  "commit": "9fe79ad1e43d236bbbb8edb3cf634356de714c79",
  "tree": "91149cefa28baf692eb55f88f8c544a33e9126df",
  "parents": [
    "3f12070e27b4a213d62607d2bff139793089a77d"
  ],
  "author": {
    "name": "KaiGai Kohei",
    "email": "kaigai@ak.jp.nec.com",
    "time": "Sat Sep 29 02:20:55 2007 +0900"
  },
  "committer": {
    "name": "James Morris",
    "email": "jmorris@namei.org",
    "time": "Wed Oct 17 08:59:34 2007 +1000"
  },
  "message": "SELinux: improve performance when AVC misses.\n\n* We add ebitmap_for_each_positive_bit() which enables to walk on\n  any positive bit on the given ebitmap, to improve its performance\n  using common bit-operations defined in linux/bitops.h.\n  In the previous version, this logic was implemented using a combination\n  of ebitmap_for_each_bit() and ebitmap_node_get_bit(), but is was worse\n  in performance aspect.\n  This logic is most frequestly used to compute a new AVC entry,\n  so this patch can improve SELinux performance when AVC misses are happen.\n* struct ebitmap_node is redefined as an array of \"unsigned long\", to get\n  suitable for using find_next_bit() which is fasted than iteration of\n  shift and logical operation, and to maximize memory usage allocated\n  from general purpose slab.\n* Any ebitmap_for_each_bit() are repleced by the new implementation\n  in ss/service.c and ss/mls.c. Some of related implementation are\n  changed, however, there is no incompatibility with the previous\n  version.\n* The width of any new line are less or equal than 80-chars.\n\nThe following benchmark shows the effect of this patch, when we\naccess many files which have different security context one after\nanother. The number is more than /selinux/avc/cache_threshold, so\nany access always causes AVC misses.\n\n      selinux-2.6      selinux-2.6-ebitmap\nAVG:   22.763 [s]          8.750 [s]\nSTD:    0.265              0.019\n------------------------------------------\n1st:   22.558 [s]          8.786 [s]\n2nd:   22.458 [s]          8.750 [s]\n3rd:   22.478 [s]          8.754 [s]\n4th:   22.724 [s]          8.745 [s]\n5th:   22.918 [s]          8.748 [s]\n6th:   22.905 [s]          8.764 [s]\n7th:   23.238 [s]          8.726 [s]\n8th:   22.822 [s]          8.729 [s]\n\nSigned-off-by: KaiGai Kohei \u003ckaigai@ak.jp.nec.com\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce492a6b38ed64110e2f8b0db68510df12281782",
      "old_mode": 33188,
      "old_path": "security/selinux/ss/ebitmap.c",
      "new_id": "ae44c0c9401d8386cb10d3a3044c24439ba3f83d",
      "new_mode": 33188,
      "new_path": "security/selinux/ss/ebitmap.c"
    },
    {
      "type": "modify",
      "old_id": "1270e34b61c1a97bc3e2f5227efa845bb1d35c3b",
      "old_mode": 33188,
      "old_path": "security/selinux/ss/ebitmap.h",
      "new_id": "e38a327dd703aed9c9dab8a9f06bc7a32ca15ce8",
      "new_mode": 33188,
      "new_path": "security/selinux/ss/ebitmap.h"
    },
    {
      "type": "modify",
      "old_id": "4a8bab2f3c712445f020fbe3a42a8aa4f172442c",
      "old_mode": 33188,
      "old_path": "security/selinux/ss/mls.c",
      "new_id": "9a11deaaa9e71963f610829a908f9cf2bcf613ea",
      "new_mode": 33188,
      "new_path": "security/selinux/ss/mls.c"
    },
    {
      "type": "modify",
      "old_id": "03140edf97a3d54229bca7f48b3fe62deb92bb49",
      "old_mode": 33188,
      "old_path": "security/selinux/ss/services.c",
      "new_id": "d572dc908f313f7f1aa9db88042ba920982240b9",
      "new_mode": 33188,
      "new_path": "security/selinux/ss/services.c"
    }
  ]
}
