)]}'
{
  "commit": "0d3e65d740a2462175d988f8795829f8869b888e",
  "tree": "6015ec0ee8963f051ca7c30be1218615f9b5e027",
  "parents": [
    "297a5ff74809119736ced0303cf380303dd88554"
  ],
  "author": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Mon Sep 16 12:19:57 2019 -0400"
  },
  "committer": {
    "name": "Barret Rhoden",
    "email": "brho@cs.berkeley.edu",
    "time": "Tue Oct 08 17:11:11 2019 -0400"
  },
  "message": "slab: fix alignment issues\n\nThis clarifies many of the issues around alignment and source quantum.\n\nPreviously, there were a lot of assumptions about source alignment\n(assumed PGSIZE, but it was actually quantum), object size (assumed big\nenough for a pointer), etc.  If you had an arena with quantum \u003e PGSIZE\nand made a slab / KC from it (e.g. a qcache), you\u0027d trip the assertion\ntoo.\n\nWe also didn\u0027t have any guarantees about carrying a source\u0027s\nquantum-multiple-alignment through to the slab, which matters for\nnon-power-of-two sources that want to use qcaches.  We use the \"if\nobj_size is a multiple of quantum, you\u0027ll get quantum-multiple-aligned\nallocations\" guarantee to solve the problem for qcaches.\n\nSlab align is a separate item from both arena quantum and arena align.\nThe object we get from a source gets aligned up (or is already the right\nalignment, for the pro-touch/non-bufctl case), which requires us to\ntrack the original address from the arena in the slab.  That\u0027s fine.\nMight as well use that for the pro-touch case.\n\nI considered getting rid of PGSIZE, but its usage in obj-\u003eslab lookups\nis pretty handy.\n\nSigned-off-by: Barret Rhoden \u003cbrho@cs.berkeley.edu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "182b2bcd6889b233b93795bd8e35bdf09fb1bb23",
      "old_mode": 33188,
      "old_path": "kern/include/slab.h",
      "new_id": "d625d927a9abe00916dce33fcd909d7b07821db3",
      "new_mode": 33188,
      "new_path": "kern/include/slab.h"
    },
    {
      "type": "modify",
      "old_id": "ff53d92fecf1747c59c6e901e89e9d25379955f1",
      "old_mode": 33188,
      "old_path": "kern/src/arena.c",
      "new_id": "3dd0084aaef120daf637860fe21bd00023707e88",
      "new_mode": 33188,
      "new_path": "kern/src/arena.c"
    },
    {
      "type": "modify",
      "old_id": "55b77766cc2ff417f7d25f781e25058da1a55be3",
      "old_mode": 33188,
      "old_path": "kern/src/slab.c",
      "new_id": "602cf2d529b275122d753068be0b59e679f778ff",
      "new_mode": 33188,
      "new_path": "kern/src/slab.c"
    }
  ]
}
