)]}'
{
  "commit": "5fe878ae7f82fbf0830dbfaee4c5ca18f3aee442",
  "tree": "7e7ad290cfb30705948d8ebeb46b013afa913f42",
  "parents": [
    "23aee091d804efa8cc732a31c1ae5d625e1ec886"
  ],
  "author": {
    "name": "Christoph Hellwig",
    "email": "hch@lst.de",
    "time": "Tue Dec 15 16:47:50 2009 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Wed Dec 16 07:20:13 2009 -0800"
  },
  "message": "direct-io: cleanup blockdev_direct_IO locking\n\nCurrently the locking in blockdev_direct_IO is a mess, we have three\ndifferent locking types and very confusing checks for some of them.  The\nmost complicated one is DIO_OWN_LOCKING for reads, which happens to not\nactually be used.\n\nThis patch gets rid of the DIO_OWN_LOCKING - as mentioned above the read\ncase is unused anyway, and the write side is almost identical to\nDIO_NO_LOCKING.  The difference is that DIO_NO_LOCKING always sets the\ncreate argument for the get_blocks callback to zero, but we can easily\nmove that to the actual get_blocks callbacks.  There are four users of the\nDIO_NO_LOCKING mode: gfs already ignores the create argument and thus is\nfine with the new version, ocfs2 only errors out if create were ever set,\nand we can remove this dead code now, the block device code only ever uses\ncreate for an error message if we are fully beyond the device which can\nnever happen, and last but not least XFS will need the new behavour for\nwrites.\n\nNow we can replace the lock_type variable with a flags one, where no flag\nmeans the DIO_NO_LOCKING behaviour and DIO_LOCKING is kept as the first\nflag.  Separate out the check for not allowing to fill holes into a\nseparate flag, although for now both flags always get set at the same\ntime.\n\nAlso revamp the documentation of the locking scheme to actually make\nsense.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9f34bb9b1ecb1ee919fddd5ad63fa768948a215b",
      "old_mode": 33188,
      "old_path": "fs/direct-io.c",
      "new_id": "4012885d027fd7bd054acb2ee0404b2b82f8eda2",
      "new_mode": 33188,
      "new_path": "fs/direct-io.c"
    },
    {
      "type": "modify",
      "old_id": "deb2b132ae5ed42b68fd11f58413f2ffa4779b83",
      "old_mode": 33188,
      "old_path": "fs/ocfs2/aops.c",
      "new_id": "3dae4a13f6e48c968dcad4ddcf28672c807068c6",
      "new_mode": 33188,
      "new_path": "fs/ocfs2/aops.c"
    },
    {
      "type": "modify",
      "old_id": "d798c54296ebee40d0fb8f65d337f01ac1fca3fb",
      "old_mode": 33188,
      "old_path": "fs/xfs/linux-2.6/xfs_aops.c",
      "new_id": "66abe36c1213e60ae49e483c82193c72a0d57758",
      "new_mode": 33188,
      "new_path": "fs/xfs/linux-2.6/xfs_aops.c"
    },
    {
      "type": "modify",
      "old_id": "a057f48eb156ca2fb015ddedabd3dbb1da473f1b",
      "old_mode": 33188,
      "old_path": "include/linux/fs.h",
      "new_id": "b23a7018eb901976fb3e0ff2f2a6869495512924",
      "new_mode": 33188,
      "new_path": "include/linux/fs.h"
    }
  ]
}
