)]}'
{
  "commit": "9637a5efd4fbe36164c5ce7f6a0ee68b2bf22b7f",
  "tree": "38b86e3e2151e78f952076e36bee4fd7d77e3baf",
  "parents": [
    "bd96b9eb7cfd6ab24ba244360a09980a720874d2"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Fri Jun 23 02:03:43 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Fri Jun 23 07:42:51 2006 -0700"
  },
  "message": "[PATCH] add page_mkwrite() vm_operations method\n\nAdd a new VMA operation to notify a filesystem or other driver about the\nMMU generating a fault because userspace attempted to write to a page\nmapped through a read-only PTE.\n\nThis facility permits the filesystem or driver to:\n\n (*) Implement storage allocation/reservation on attempted write, and so to\n     deal with problems such as ENOSPC more gracefully (perhaps by generating\n     SIGBUS).\n\n (*) Delay making the page writable until the contents have been written to a\n     backing cache. This is useful for NFS/AFS when using FS-Cache/CacheFS.\n     It permits the filesystem to have some guarantee about the state of the\n     cache.\n\n (*) Account and limit number of dirty pages. This is one piece of the puzzle\n     needed to make shared writable mapping work safely in FUSE.\n\nNeeded by cachefs (Or is it cachefiles?  Or fscache? \u003chead spins\u003e).\n\nAt least four other groups have stated an interest in it or a desire to use\nthe functionality it provides: FUSE, OCFS2, NTFS and JFFS2.  Also, things like\nEXT3 really ought to use it to deal with the case of shared-writable mmap\nencountering ENOSPC before we permit the page to be dirtied.\n\nFrom: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n\n  get_user_pages(.write\u003d1, .force\u003d1) can generate COW hits on read-only\n  shared mappings, this patch traps those as mkpage_write candidates and fails\n  to handle them the old way.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\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": "697c6bf248c2c047abb0449646c4feff1d7e7ea6",
      "old_mode": 33188,
      "old_path": "include/linux/mm.h",
      "new_id": "3b09444121d926376c3d24ca06a76e83802697f1",
      "new_mode": 33188,
      "new_path": "include/linux/mm.h"
    },
    {
      "type": "modify",
      "old_id": "11673c5d2c20236fcdc7f514ad91ac0131cb2a94",
      "old_mode": 33188,
      "old_path": "mm/memory.c",
      "new_id": "247b5c312b9b073d1c76769a67e73d39ee8bdd39",
      "new_mode": 33188,
      "new_path": "mm/memory.c"
    },
    {
      "type": "modify",
      "old_id": "e6ee12344b139274325a1db834da1de6cf334da1",
      "old_mode": 33188,
      "old_path": "mm/mmap.c",
      "new_id": "6446c6134b04d8a8a10993e774b2bbe8bbcbd663",
      "new_mode": 33188,
      "new_path": "mm/mmap.c"
    },
    {
      "type": "modify",
      "old_id": "14f93e62270f7b2ad38fa0846c0275e8aeccf231",
      "old_mode": 33188,
      "old_path": "mm/mprotect.c",
      "new_id": "638edabaff7118206b379c0436ffd6aa3e2fda40",
      "new_mode": 33188,
      "new_path": "mm/mprotect.c"
    }
  ]
}
