)]}'
{
  "commit": "d3b49af78bf4628480211c81e4e49c452929bed2",
  "tree": "03077db25012bf88bad310c60162c5f7b104c6ba",
  "parents": [
    "54a6947e1a4c1bbf756ea990ccd980feb8fdf62e"
  ],
  "author": {
    "name": "Alistair Delva",
    "email": "adelva@google.com",
    "time": "Tue Mar 16 15:48:18 2021 -0700"
  },
  "committer": {
    "name": "Alistair Delva",
    "email": "adelva@google.com",
    "time": "Mon Apr 12 11:14:38 2021 -0700"
  },
  "message": "Introduce a new instance-specific composite disk\n\nWhen we originally designed the composite disk, it was our intention\nthat only the disk overlay.img would be instance-specific. The\ncomposite.img would refer to files that were effectively read-only and\nusable by all multi-tenant instances. This would minimize disk space\nrequirements and launch times. The composite disk, and the images it\nreferred to, could be shared by all instances.\n\nHowever, we quickly broke this when \"magic state\" that was being passed\nthrough crosvm\u0027s kernel cmdline feature stopped working, after landing\nthe Cuttlefish Bootloader. We had to repack at least one partition on\nevery launch, per instance, and that meant we needed a per-instance\ncomposite.img. For crosvm this has a small cost, because as long as the\ninstance-specific files are put into instance-specific locations, only\nthe composite.img meta file has to be rewritten. But for QEMU, it\u0027s very\nexpensive. It\u0027s also not a very high fidelity solution, and doesn\u0027t\nmatch how real device clusters would be provisioned.\n\nThe u-boot environment problem was later fixed to push the changing\nstate into vendor_boot.img cmdline or bootconfig, but this still\ninvolves composite disk modifications, and has all the same problems\nabove.\n\nThis change adds another hard disk which is explicitly for \"persistent\"\ninstance-specific data. This hard disk will not be overlayed, because\nthe partitions in the disk are not shared between instances, and writes\nare expected to persist powerwashing, factory reset, OTA, etc. This disk\nhouses the recently added FRP block, and the U-Boot environment, but\nlater we will add a \u0027factory partition\u0027 to replace the config_server.\n\nThis change does not fully remove the need for a per-instance composite\ndisk, because we still need to repack the vendor_boot images -- but once\nwe can pass an instance ID or other properties through the U-Boot env\nor factory partition, we can move composite.img back to the assembler\nstep.\n\nBug: 183006588\nChange-Id: I8e5332a1032b550cc93c797928e7cb202a30d2fb\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1350bb6da8b10cc5e833d1640be762d3a6c2be48",
      "old_mode": 33188,
      "old_path": "host/commands/assemble_cvd/assemble_cvd.cc",
      "new_id": "c249473a3e24f21b21cbe3b437d2e857718e6921",
      "new_mode": 33188,
      "new_path": "host/commands/assemble_cvd/assemble_cvd.cc"
    },
    {
      "type": "modify",
      "old_id": "10b080fd864671992af966cc09c2bdd51d6bdb43",
      "old_mode": 33188,
      "old_path": "host/commands/assemble_cvd/disk_flags.cc",
      "new_id": "96a4799a1f71ff4514916d765ef2f4994a632d83",
      "new_mode": 33188,
      "new_path": "host/commands/assemble_cvd/disk_flags.cc"
    },
    {
      "type": "modify",
      "old_id": "bfb856b7eabad4ddc88e16141b511ede40e35c00",
      "old_mode": 33188,
      "old_path": "host/commands/assemble_cvd/flags.cc",
      "new_id": "2d3f9da55d4ff7ad617d558bfebd236301ad7c74",
      "new_mode": 33188,
      "new_path": "host/commands/assemble_cvd/flags.cc"
    },
    {
      "type": "modify",
      "old_id": "54b5c1ce6435ceb535f480141c8167affd43ee23",
      "old_mode": 33188,
      "old_path": "host/libs/config/cuttlefish_config.h",
      "new_id": "2aafc84a4ebde84569b3fafc8f64799ea4093e99",
      "new_mode": 33188,
      "new_path": "host/libs/config/cuttlefish_config.h"
    },
    {
      "type": "modify",
      "old_id": "6ea73e812f0550161b09e05ccdfa35dceafd0637",
      "old_mode": 33188,
      "old_path": "host/libs/config/cuttlefish_config_instance.cpp",
      "new_id": "9bd8c8adeb421df4ae999163d5fe0778be0600c6",
      "new_mode": 33188,
      "new_path": "host/libs/config/cuttlefish_config_instance.cpp"
    },
    {
      "type": "modify",
      "old_id": "e2ec717fafe58e9932f8db19b7a23a863e0d196e",
      "old_mode": 33188,
      "old_path": "host/libs/vm_manager/crosvm_manager.cpp",
      "new_id": "4f136fdabe629ab83ba8dc1b9a5dd49eac374ab9",
      "new_mode": 33188,
      "new_path": "host/libs/vm_manager/crosvm_manager.cpp"
    },
    {
      "type": "modify",
      "old_id": "ed61c69fb327e1795ef8961811827177750da590",
      "old_mode": 33188,
      "old_path": "host/libs/vm_manager/qemu_manager.cpp",
      "new_id": "f26818a8660ba89a558e79f40ddceda353c5cb2c",
      "new_mode": 33188,
      "new_path": "host/libs/vm_manager/qemu_manager.cpp"
    },
    {
      "type": "modify",
      "old_id": "3a5a41d9d5e8222c7a2ff1162a1419e5861e0ce2",
      "old_mode": 33188,
      "old_path": "host/libs/vm_manager/vm_manager.cpp",
      "new_id": "8c2ef574539f8f2846ad6eb8206d1e60b7b823f6",
      "new_mode": 33188,
      "new_path": "host/libs/vm_manager/vm_manager.cpp"
    },
    {
      "type": "modify",
      "old_id": "2af2846c8932f6a79d5e0a959f78492d82618dfc",
      "old_mode": 33188,
      "old_path": "host/libs/vm_manager/vm_manager.h",
      "new_id": "b538e8f29d0949d6a693a1ca94453b0518f345f3",
      "new_mode": 33188,
      "new_path": "host/libs/vm_manager/vm_manager.h"
    },
    {
      "type": "modify",
      "old_id": "84d2806954803170aece4353cac27a938b3ccc8c",
      "old_mode": 33188,
      "old_path": "shared/config/ueventd.rc",
      "new_id": "3d5a219d0989d88e43db47c07ce8a38d1ad09b19",
      "new_mode": 33188,
      "new_path": "shared/config/ueventd.rc"
    },
    {
      "type": "modify",
      "old_id": "d375d23417b0013b7278b5538df49f2e000bd105",
      "old_mode": 33188,
      "old_path": "shared/device.mk",
      "new_id": "a14115573e29048e61de5ca12b0db3c93efd9d27",
      "new_mode": 33188,
      "new_path": "shared/device.mk"
    },
    {
      "type": "modify",
      "old_id": "2f743a8973df740cd8ba28a4e97092996f48cb4e",
      "old_mode": 33188,
      "old_path": "shared/sepolicy/vendor/file_contexts",
      "new_id": "23f3f60a14fecd244a6b42528480c613fe13318a",
      "new_mode": 33188,
      "new_path": "shared/sepolicy/vendor/file_contexts"
    }
  ]
}
