)]}'
{
  "log": [
    {
      "commit": "e0db72ca567b5142bb6a31d745b3bf78cd8eb53a",
      "tree": "9182fda3cfa5e5f407969f66d7ca01ff5dbd5734",
      "parents": [
        "16298986aba754618473fe7658f74c8ebe28ee7e"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Wed Jun 18 18:14:07 2025 +0000"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Wed Jun 25 15:37:52 2025 +0000"
      },
      "message": "osbase/blockdev: implement copy_file_range optimization\n\nThis change enables the use of the copy_file_range syscall on Linux when\ncopying from an os.File to a blockdev.File. This speeds up building of\nsystem images, especially with a file system which supports reflinks.\n\nThe implementation is partially based on the implementation in the Go\nstandard library for copy_file_range between two os.File in\nsrc/os/zero_copy_linux.go and src/internal/poll/copy_file_range_unix.go.\nWe can\u0027t use that implementation, because it only supports using the\nfile offset for both source and destination, but we want to provide the\ndestination offset as an argument. To support this, the ReaderFromAt\ninterface is introduced.\n\nWith these changes, copy_file_range is now used when building system\nimages, for both the rootfs and files on the FAT32 boot partition. If\nthe file system supports it (e.g. XFS), reflinks will be used for the\nrootfs, which means no data is copied. For files on the FAT32 partition,\nreflinks probably can\u0027t be used, because these are only aligned to 512\nbytes but would need to be aligned to 4096 bytes on my system for\nreflinking.\n\nChange-Id: Ie42b5834e6d3f63a5cc1f347d2681d8a6bb5c006\nReviewed-on: https://review.monogon.dev/c/monogon/+/4293\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "8eb0244ed3653b6bcb80a29acb4f9e6b66a272f4",
      "tree": "1d41385e553b8ab7b60e3dad8fc0bcfc8ab5cf29",
      "parents": [
        "2c3956750bb75b0d18ddd52565f998492b0f83f4"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 25 16:57:52 2025 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Tue Feb 25 21:03:14 2025 +0000"
      },
      "message": "o/blockdev: add options support\n\nAllow passing options to Open(). This resolves a TODO left from when\nblockdev was initially implemented and is now needed as Linux 6.12\nrejects opening mounted block devices read-write, so we needed at least\na read-only option.\n\nI also implemented the two options mentioned in the now-removed TODO\neven though we\u0027re not using them yet.\n\nThese options are implemented generically to facilitate their use in\ncross-platform code. Unsupported options are rejected at runtime. This\nis similar to how Go\u0027s own stdlib does this.\n\nChange-Id: I2548cb31e59a5c1198ca04537450bdf665878ca8\nReviewed-on: https://review.monogon.dev/c/monogon/+/3985\nReviewed-by: Jan Schär \u003cjan@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "6d33a4342a16200d628f30ff91b169927fc2867a",
      "tree": "e65ad23cb6d0b795420b5ec625a757784d4c3e3b",
      "parents": [
        "7887f758de8f9106a484ca59d9734304aa919e36"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue Feb 04 14:34:25 2025 +0100"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Feb 06 17:03:43 2025 +0000"
      },
      "message": "treewide: add license header and enable haslicense linter\n\nChange-Id: I873a8d4082d75e8f813d8a726a41187eea7a065e\nReviewed-on: https://review.monogon.dev/c/monogon/+/3825\nTested-by: Jenkins CI\nReviewed-by: Leopold Schabel \u003cleo@monogon.tech\u003e\n"
    },
    {
      "commit": "b69a71ca61b99fc68e83d5735eb449f638ef8b1e",
      "tree": "69aa2c20e8002355ca7657523b617923b2243e39",
      "parents": [
        "8f1254d1919c7cda42c611c9e1d83cf9a2ef8034"
      ],
      "author": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Dec 23 14:12:46 2024 +0100"
      },
      "committer": {
        "name": "Lorenz Brun",
        "email": "lorenz@monogon.tech",
        "time": "Mon Feb 03 14:05:23 2025 +0000"
      },
      "message": "o/t/ktest: switch to proper rule\n\nThis was previously implemented as a macro, lacking proper transitions.\nReimplement it as a proper test rule.\n\nChange-Id: I237a2fcc29ea6dfbb294ce6313c9ff457def12b8\nReviewed-on: https://review.monogon.dev/c/monogon/+/3722\nReviewed-by: Tim Windelschmidt \u003ctim@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "007d66e6b32db8080d37738b2986871729a48e03",
      "tree": "2f8e97539a365a16eab8c84a5be701c1303b07a6",
      "parents": [
        "83f0aa47b5e9c02cc6871760fcac29b31b344c48"
      ],
      "author": {
        "name": "Timon Stampfli",
        "email": "timon@timon.ch",
        "time": "Sun Dec 15 16:29:04 2024 +0100"
      },
      "committer": {
        "name": "Timon Stampfli",
        "email": "timon@timon.ch",
        "time": "Fri Dec 20 15:53:04 2024 +0000"
      },
      "message": "o/blockdev: add windows implementation\n\nThis adds a relatively bare bones, but working implementation of\nblockdev for Windows.  Has been manually tested on Windows 23H2.\n\nChange-Id: I7a2bf0a46e973f838506a321ad815629f62a3b35\nReviewed-on: https://review.monogon.dev/c/monogon/+/3696\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nVouch-Run-CI: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "5c82e0dc025c8df3328af3cffd64b830b3bdb2b4",
      "tree": "40ec1463d4bb7701806499010567c47c4a11bbc0",
      "parents": [
        "02d721702cd7bf12c2dbbc97221c3d70cc1dcc48"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Mon Aug 26 17:06:13 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Tue Sep 10 14:50:21 2024 +0000"
      },
      "message": "osbase/blockdev: add ResizePartition\n\nThis will be used for growing the Monogon OS data partition.\n\nChange-Id: I89fbf73f6452bd40991a182c185fc9c71e2f116b\nReviewed-on: https://review.monogon.dev/c/monogon/+/3359\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\nTested-by: Jenkins CI\n"
    },
    {
      "commit": "a6da17176a102f5755fd7289448ca5a9486d8a20",
      "tree": "1142b5acecc39da71fdc107b34e17933bd1935e1",
      "parents": [
        "6120f38e1a10a1389f9413209ea6b6f23be56258"
      ],
      "author": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Wed Aug 21 15:12:11 2024 +0200"
      },
      "committer": {
        "name": "Jan Schär",
        "email": "jan@monogon.tech",
        "time": "Tue Sep 10 14:50:21 2024 +0000"
      },
      "message": "osbase/blockdev: add tests, fix minor issues\n\nAdd a lot of bounds checks which should make BlockDev safer to use. Fix\na bug in the ReadWriteSeeker.Seek function with io.SeekEnd; the offset\nshould be added to, not subtracted from the size. Add the Sync()\nfunction to the BlockDev interface.\n\nChange-Id: I247095b3dbc6410064844b4ac7c6208d88a7abcd\nReviewed-on: https://review.monogon.dev/c/monogon/+/3338\nTested-by: Jenkins CI\nReviewed-by: Lorenz Brun \u003clorenz@monogon.tech\u003e\n"
    },
    {
      "commit": "9f21f5396aa18bc9f2f83c867ff883f49bbf02ae",
      "tree": "c232f42c84bd6b7ace576261a188134cb0c69771",
      "parents": [
        "f430fbfe35b70283090b6174cf5a920163c0148c"
      ],
      "author": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Tue May 07 15:14:20 2024 +0200"
      },
      "committer": {
        "name": "Tim Windelschmidt",
        "email": "tim@monogon.tech",
        "time": "Thu Jul 04 12:19:37 2024 +0000"
      },
      "message": "treewide: introduce osbase package and move things around\n\nAll except localregistry moved from metropolis/pkg to osbase,\nlocalregistry moved to metropolis/test as its only used there anyway.\n\nChange-Id: If1a4bf377364bef0ac23169e1b90379c71b06d72\nReviewed-on: https://review.monogon.dev/c/monogon/+/3079\nTested-by: Jenkins CI\nReviewed-by: Serge Bazanski \u003cserge@monogon.tech\u003e\n"
    }
  ]
}
