)]}'
{
  "commit": "f79e2abb9bd452d97295f34376dedbec9686b986",
  "tree": "56b9998caa11983556e842fb9a8143d86d765fa3",
  "parents": [
    "d6dfd1310d3562698fd7c3c086f6c239f96394ac"
  ],
  "author": {
    "name": "Andrew Morton",
    "email": "akpm@osdl.org",
    "time": "Fri Mar 31 02:30:42 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Mar 31 12:18:54 2006 -0800"
  },
  "message": "[PATCH] sys_sync_file_range()\n\nRemove the recently-added LINUX_FADV_ASYNC_WRITE and LINUX_FADV_WRITE_WAIT\nfadvise() additions, do it in a new sys_sync_file_range() syscall instead.\nReasons:\n\n- It\u0027s more flexible.  Things which would require two or three syscalls with\n  fadvise() can be done in a single syscall.\n\n- Using fadvise() in this manner is something not covered by POSIX.\n\nThe patch wires up the syscall for x86.\n\nThe sycall is implemented in the new fs/sync.c.  The intention is that we can\nmove sys_fsync(), sys_fdatasync() and perhaps sys_sync() into there later.\n\nDocumentation for the syscall is in fs/sync.c.\n\nA test app (sync_file_range.c) is in\nhttp://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz.\n\nThe available-to-GPL-modules do_sync_file_range() is for knfsd: \"A COMMIT can\nsay NFS_DATA_SYNC or NFS_FILE_SYNC.  I can skip the -\u003efsync call for\nNFS_DATA_SYNC which is hopefully the more common.\"\n\nNote: the `async\u0027 writeout mode SYNC_FILE_RANGE_WRITE will turn synchronous if\nthe queue is congested.  This is trivial to fix: add a new flag bit, set\nwbc-\u003enonblocking.  But I\u0027m not sure that we want to expose implementation\ndetails down to that level.\n\nNote: it\u0027s notable that we can sync an fd which wasn\u0027t opened for writing.\nSame with fsync() and fdatasync()).\n\nNote: the code takes some care to handle attempts to sync file contents\noutside the 16TB offset on 32-bit machines.  It makes such attempts appear to\nsucceed, for best 32-bit/64-bit compatibility.  Perhaps it should make such\nrequests fail...\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ce3ef4fa055190a8c366a64e8db8ce75fc37c9d0",
      "old_mode": 33188,
      "old_path": "arch/i386/kernel/syscall_table.S",
      "new_id": "4f58b9c0efe3cbb5f57a2bfda39371153b3eff2f",
      "new_mode": 33188,
      "new_path": "arch/i386/kernel/syscall_table.S"
    },
    {
      "type": "modify",
      "old_id": "f3a4f7077175484429b9b856f57e1419e84ab57b",
      "old_mode": 33188,
      "old_path": "fs/Makefile",
      "new_id": "83bf478e786b3f64f1d5a90826f5d92622077950",
      "new_mode": 33188,
      "new_path": "fs/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8616006d2094818b8796fe998dc72bc2627f8e96",
      "new_mode": 33188,
      "new_path": "fs/sync.c"
    },
    {
      "type": "modify",
      "old_id": "789e9bdd0a406188335d8da57e0625e7d84f6663",
      "old_mode": 33188,
      "old_path": "include/asm-i386/unistd.h",
      "new_id": "2e7f3e257fddf9cba326fab28d769db4bdfeb055",
      "new_mode": 33188,
      "new_path": "include/asm-i386/unistd.h"
    },
    {
      "type": "modify",
      "old_id": "b2913bba35d87dafbb042b086face216609cb107",
      "old_mode": 33188,
      "old_path": "include/linux/fadvise.h",
      "new_id": "e8e747139b9a1483897f8c4b0aa9e8b9f4a49588",
      "new_mode": 33188,
      "new_path": "include/linux/fadvise.h"
    },
    {
      "type": "modify",
      "old_id": "20a7afd4590c8337eaa609d122505a5ee72e4045",
      "old_mode": 33188,
      "old_path": "include/linux/fs.h",
      "new_id": "4ed7e602d70334cf1a2a8a8ec005fa48f800afb2",
      "new_mode": 33188,
      "new_path": "include/linux/fs.h"
    },
    {
      "type": "modify",
      "old_id": "e78ffc7d5b5613d5bf6270c3942f5388c0b636bd",
      "old_mode": 33188,
      "old_path": "include/linux/syscalls.h",
      "new_id": "5717147596b6c0918829bd5e48b2ea23d783ff5d",
      "new_mode": 33188,
      "new_path": "include/linux/syscalls.h"
    },
    {
      "type": "modify",
      "old_id": "907c39257ca06aea630915c9a46103518a4d631a",
      "old_mode": 33188,
      "old_path": "mm/fadvise.c",
      "new_id": "0a03357a1f8ed08277070275b494f3d2a7cc9c88",
      "new_mode": 33188,
      "new_path": "mm/fadvise.c"
    }
  ]
}
