)]}'
{
  "commit": "c7820e653ece6b16760ef26a86b583cceb867c4c",
  "tree": "ab79e24ec3caa4cf0effe5037e7e27443d0901cd",
  "parents": [
    "deeaa17317bc8376aec84669fc3fe6b229d00243"
  ],
  "author": {
    "name": "Christopher Haster",
    "email": "chaster@utexas.edu",
    "time": "Thu Dec 24 18:44:14 2020 -0600"
  },
  "committer": {
    "name": "Christopher Haster",
    "email": "chaster@utexas.edu",
    "time": "Thu Dec 24 23:10:24 2020 -0600"
  },
  "message": "Introduced the LFS_O_SNAPSHOT flag\n\nLFS_O_SNAPSHOT brings back some of littlefs\u0027s idiosyncratic behavior\nremoved in the changes to open file syncing in a form that may be more\nuseful for users.\n\nLFS_O_SNAPSHOT allows you to open a \"snapshot\" of a file. This is a cheap,\nlocal copy of a file who\u0027s changes are not reflected on disk.\n\nInternally, snapshot files use the same mechanism as pending writes. A\nseparate, copy-on-write CTZ skip-list is created, with read-only\nreferences to the existing data blocks until a write occurs. The\ndifference is that snapshot files are not enrolled in the mlist, meaning\nthey won\u0027t get updates from open file syncs, and during close their\ncontents are simply discarded.\n\nAs an extra benefit, LFS_O_CREAT | LFS_O_SNAPSHOT is equivalent to\nLinux\u0027s O_TMPFILE, making it easy to create temporary, unnamed files.\n\nThis may be useful for embedded development, where unnamed flash-backed\nbuffers may provide a slower, but larger, alternative to RAM-backed\nbuffers.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "536bad69830be76276815947a7ff852e02cb0c65",
      "old_mode": 33188,
      "old_path": "lfs.c",
      "new_id": "f582902e525b1891f0eddeadbc383d72f488343e",
      "new_mode": 33188,
      "new_path": "lfs.c"
    },
    {
      "type": "modify",
      "old_id": "4fa3c970b2dc981871339ea3a52be4f13b90cb69",
      "old_mode": 33188,
      "old_path": "lfs.h",
      "new_id": "8a8fa4166b09c47958aecfeac68cdde031f13280",
      "new_mode": 33188,
      "new_path": "lfs.h"
    },
    {
      "type": "modify",
      "old_id": "1dc828b5897aa13d8669aae5f6a9537fa0752a0c",
      "old_mode": 33188,
      "old_path": "tests/test_attrs.toml",
      "new_id": "dad40606fd705731e8a293429cfac5e3ca808244",
      "new_mode": 33188,
      "new_path": "tests/test_attrs.toml"
    },
    {
      "type": "modify",
      "old_id": "2e042fb428a47955df4a602575a2221c7d7cccbc",
      "old_mode": 33188,
      "old_path": "tests/test_interspersed.toml",
      "new_id": "9d35dfbc34f423abdfc339229e2d5830eb4919fe",
      "new_mode": 33188,
      "new_path": "tests/test_interspersed.toml"
    }
  ]
}
