)]}'
{
  "commit": "62f1d3680947e1d78bacf2a7277fb4b2007ebacb",
  "tree": "38c2fe1d57b68788f79ae018075b246f228310cc",
  "parents": [
    "60461b2b23eb57319525a3e00d7ae57e51598ebc"
  ],
  "author": {
    "name": "Lorenz Brun",
    "email": "lorenz@monogon.tech",
    "time": "Tue Nov 14 16:18:24 2023 +0100"
  },
  "committer": {
    "name": "Lorenz Brun",
    "email": "lorenz@monogon.tech",
    "time": "Tue Nov 14 16:44:03 2023 +0000"
  },
  "message": "treewide: stop using LZ4 for initrd compression\n\nThere are two issues at play here: One is a bug in pierrec/lz4 when\nusing the legacy framing format [1]. This bit us when we hit a broken\nsize region with CL:2130, taking hours to debug.\n\nThe other is the fact that the Linux LZ4 frame format has significant\ndesign issues [2], especially with concatenanted initrds.\n\nThe first issue could be fixed by switching to a different LZ4\nimplementation (we do even have the reference impl in the monorepo) but\nthere is no API to generate the legacy frame format and things like [3],\na patch carried by Ubuntu to fix more edge cases just do not inspire\nconfidence in such a solution.\n\nThus, this CL switches over to using zstd for compressing initrds.\n\nZstd is slower than LZ4 for decompressing, but it still decompresses at\nmultiple GB/s per core while having a much better compression ratio.\nIt also doesn\u0027t have any Linux-specific bits and Linux uses the\nreference implementation for decoding, which should make it much more\nrobust. So overall I think this is a good tradeoff.\n\n[1] https://github.com/pierrec/lz4/issues/156\n[2] https://github.com/lz4/lz4/issues/956#issuecomment-736705712\n[3] https://launchpadlibrarian.net/507407918/0001-unlz4-Handle-0-size-chunks-discard-trailing-padding-.patch\n\nChange-Id: I69cf69f2f361de325f4b39f2d3644ee729643716\nReviewed-on: https://review.monogon.dev/c/monogon/+/2313\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2ed2ad56fcb77a891b4540a72e58e3e624ca43a9",
      "old_mode": 33188,
      "old_path": "cloud/agent/e2e/BUILD.bazel",
      "new_id": "fa03d66b7d72575bbf8e72489b417b97e549318c",
      "new_mode": 33188,
      "new_path": "cloud/agent/e2e/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "27bcd03938c3682a968231f6624800fb656651d8",
      "old_mode": 33188,
      "old_path": "cloud/agent/e2e/main_test.go",
      "new_id": "277cc5535fd19a0d9ce9cf73b4c7ba01affe21f4",
      "new_mode": 33188,
      "new_path": "cloud/agent/e2e/main_test.go"
    },
    {
      "type": "modify",
      "old_id": "21b891a86c5524d221b25036fb0d8447ecbd4af9",
      "old_mode": 33188,
      "old_path": "cloud/takeover/BUILD.bazel",
      "new_id": "103ea2db1443faf87f5b4bb8aff970e38f374fe9",
      "new_mode": 33188,
      "new_path": "cloud/takeover/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9de39f5209952e08487725fa2ded0517eb29f08a",
      "old_mode": 33188,
      "old_path": "cloud/takeover/takeover.go",
      "new_id": "e265b302998019b16d9ac94a44c3cb28e87025b2",
      "new_mode": 33188,
      "new_path": "cloud/takeover/takeover.go"
    },
    {
      "type": "modify",
      "old_id": "cc88cd0b983bd72edc2c594d19bb27779fa63b50",
      "old_mode": 33188,
      "old_path": "go.mod",
      "new_id": "9de22c8548a04f49e14dc0cbd49899fd23034da6",
      "new_mode": 33188,
      "new_path": "go.mod"
    },
    {
      "type": "modify",
      "old_id": "929e7c9087441e183443c52e12ef2100744650df",
      "old_mode": 33188,
      "old_path": "go.sum",
      "new_id": "264395c61e670b3d2bc11a102305bfe13ec164eb",
      "new_mode": 33188,
      "new_path": "go.sum"
    },
    {
      "type": "modify",
      "old_id": "d71279c973185f8fef47a3f4618cf181575db28d",
      "old_mode": 33188,
      "old_path": "metropolis/node/build/def.bzl",
      "new_id": "4f0e30d8ccd28365573cb03c5f33338cdfbfa4b8",
      "new_mode": 33188,
      "new_path": "metropolis/node/build/def.bzl"
    },
    {
      "type": "modify",
      "old_id": "f0bb7790b3ee2a4ad2cfc8ffab1d3e1ee98474ea",
      "old_mode": 33188,
      "old_path": "metropolis/node/build/mkcpio/BUILD.bazel",
      "new_id": "3ea98ae877176bb694d9864e8d274d2b0c79e9ec",
      "new_mode": 33188,
      "new_path": "metropolis/node/build/mkcpio/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1c9b39f4bcb500031e87166287ac1193c40c9c93",
      "old_mode": 33188,
      "old_path": "metropolis/node/build/mkcpio/main.go",
      "new_id": "b8f99b9e75c306a8537e6df6c049e679e140e73b",
      "new_mode": 33188,
      "new_path": "metropolis/node/build/mkcpio/main.go"
    },
    {
      "type": "modify",
      "old_id": "a312e86897bf9fb1598f34d55bed3ecb823fef59",
      "old_mode": 33188,
      "old_path": "metropolis/test/launch/cluster/cluster.go",
      "new_id": "1066d4df09aca016720ccf82f82648f7909e2598",
      "new_mode": 33188,
      "new_path": "metropolis/test/launch/cluster/cluster.go"
    },
    {
      "type": "modify",
      "old_id": "abfdfe4e61af3ff13e1fa7312e36c31e08b73093",
      "old_mode": 33188,
      "old_path": "third_party/go/repositories.bzl",
      "new_id": "2811cfbf5a046b44dc9d35616a6c9c7b4cf5afe5",
      "new_mode": 33188,
      "new_path": "third_party/go/repositories.bzl"
    }
  ]
}
