)]}'
{
  "log": [
    {
      "commit": "f9ba7179ce91fb77b2adf6eaab3676ab3a1f5a15",
      "tree": "2d02e7a4fd78083b78749d0c9c7466f0eb8e6f97",
      "parents": [
        "0b3e9f3f21c42d064f5f4088df4088e3d55755eb",
        "203627bbc90377c509e32450c67c5d957ba2d989"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 05 10:11:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 05 10:11:11 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\nPull fuse updates from Miklos Szeredi.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: fix blksize calculation\n  fuse: fix stat call on 32 bit platforms\n  fuse: optimize fallocate on permanent failure\n  fuse: add FALLOCATE operation\n  fuse: Convert to kstrtoul_from_user\n"
    },
    {
      "commit": "c3b2da314834499f34cba94f7053e55f6d6f92d8",
      "tree": "7012b569ee9e0781761a8eb388190979441583c7",
      "parents": [
        "033369d1af1264abc23bea2e174aa47cdd212f6f"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Mar 26 09:59:21 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 01 12:07:25 2012 -0400"
      },
      "message": "fs: introduce inode operation -\u003eupdate_time\n\nBtrfs has to make sure we have space to allocate new blocks in order to modify\nthe inode, so updating time can fail.  We\u0027ve gotten around this by having our\nown file_update_time but this is kind of a pain, and Christoph has indicated he\nwould like to make xfs do something different with atime updates.  So introduce\n-\u003eupdate_time, where we will deal with i_version an a/m/c time updates and\nindicate which changes need to be made.  The normal version just does what it\nhas always done, updates the time and marks the inode dirty, and then\nfilesystems can choose to do something different.\n\nI\u0027ve gone through all of the users of file_update_time and made them check for\nerrors with the exception of the fault code since it\u0027s complicated and I wasn\u0027t\nquite sure what to do there, also Jan is going to be pushing the file time\nupdates into page_mkwrite for those who have it so that should satisfy btrfs and\nmake it not a big deal to check the file_update_time() return code in the\ngeneric fault path. Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\n"
    },
    {
      "commit": "b0b0382bb4904965a9e9fca77ad87514dfda0d1c",
      "tree": "dc46873fa74e0d194e4a2571b16f0767e1919ae8",
      "parents": [
        "6d42e7e9f6d86ed4dfacde75a6cf515068f9749c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 02 14:34:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "-\u003eencode_fh() API change\n\npass inode + parent\u0027s inode or NULL instead of dentry + bool saying\nwhether we want the parent or not.\n\nNOTE: that needs ceph fix folded in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "90324cc1b11a211e37eabd8cb863e1a1561d6b1d",
      "tree": "c8b79c6850420a114ca6660c1b44fc486b1ba86d",
      "parents": [
        "fb8b00675eb6462aacab56bca31ed6107bda5314",
        "169ebd90131b2ffca74bb2dbe7eeacd39fb83714"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 28 09:54:45 2012 -0700"
      },
      "message": "Merge tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux\n\nPull writeback tree from Wu Fengguang:\n \"Mainly from Jan Kara to avoid iput() in the flusher threads.\"\n\n* tag \u0027writeback\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:\n  writeback: Avoid iput() from flusher thread\n  vfs: Rename end_writeback() to clear_inode()\n  vfs: Move waiting for inode writeback from end_writeback() to evict_inode()\n  writeback: Refactor writeback_single_inode()\n  writeback: Remove wb-\u003elist_lock from writeback_single_inode()\n  writeback: Separate inode requeueing after writeback\n  writeback: Move I_DIRTY_PAGES handling\n  writeback: Move requeueing when I_SYNC set to writeback_sb_inodes()\n  writeback: Move clearing of I_SYNC into inode_sync_complete()\n  writeback: initialize global_dirty_limit\n  fs: remove 8 bytes of padding from struct writeback_control on 64 bit builds\n  mm: page-writeback.c: local functions should not be exposed globally\n"
    },
    {
      "commit": "203627bbc90377c509e32450c67c5d957ba2d989",
      "tree": "69fbf5d277641ae3cb496e9afa64550f6b3c3a3f",
      "parents": [
        "45c72cd73c788dd18c8113d4a404d6b4a01decf1"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu May 10 19:49:38 2012 +0400"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon May 14 17:12:56 2012 +0200"
      },
      "message": "fuse: fix blksize calculation\n\nDon\u0027t use inode-\u003ei_blkbits which might be stale, instead calculate the blksize\ninformation from the freshly obtained attributes.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "45c72cd73c788dd18c8113d4a404d6b4a01decf1",
      "tree": "49e28ba927e9485b6feadad7b60ec05d9bb6cff7",
      "parents": [
        "519c6040ce04474bc893774f866fd8d907b20429"
      ],
      "author": {
        "name": "Pavel Shilovsky",
        "email": "piastry@etersoft.ru",
        "time": "Thu May 10 19:49:38 2012 +0400"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon May 14 17:06:42 2012 +0200"
      },
      "message": "fuse: fix stat call on 32 bit platforms\n\nNow we store attr-\u003eino at inode-\u003ei_ino, return attr-\u003eino at the\nfirst time and then return inode-\u003ei_ino if the attribute timeout\nisn\u0027t expired. That\u0027s wrong on 32 bit platforms because attr-\u003eino\nis 64 bit and inode-\u003ei_ino is 32 bit in this case.\n\nFix this by saving 64 bit ino in fuse_inode structure and returning\nit every time we call getattr. Also squash attr-\u003eino into inode-\u003ei_ino\nexplicitly.\n\nSigned-off-by: Pavel Shilovsky \u003cpiastry@etersoft.ru\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "dbd5768f87ff6fb0a4fe09c4d7b6c4a24de99430",
      "tree": "42ea94ea733538f797aa745945fc43c4d1b89217",
      "parents": [
        "7994e6f7254354e03028a11f98a27bd67dace9f1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu May 03 14:48:02 2012 +0200"
      },
      "committer": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@intel.com",
        "time": "Sun May 06 13:43:41 2012 +0800"
      },
      "message": "vfs: Rename end_writeback() to clear_inode()\n\nAfter we moved inode_sync_wait() from end_writeback() it doesn\u0027t make sense\nto call the function end_writeback() anymore. Rename it to clear_inode()\nwhich well says what the function really does - set I_CLEAR flag.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n"
    },
    {
      "commit": "519c6040ce04474bc893774f866fd8d907b20429",
      "tree": "0e114d545be1bc2c432f6256edfc28206a835d1e",
      "parents": [
        "05ba1f0823004e947748523782e9c2f07f3bff0d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Apr 26 10:56:36 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Thu Apr 26 10:56:36 2012 +0200"
      },
      "message": "fuse: optimize fallocate on permanent failure\n\nIf userspace filesystem doesn\u0027t support fallocate, remember this and don\u0027t send\nrequest next time.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "05ba1f0823004e947748523782e9c2f07f3bff0d",
      "tree": "3ec44b97f0725b0b9045152c31802a66aa62aec2",
      "parents": [
        "e2690695ce5085677b84fbf2e38d2ed57cad39cd"
      ],
      "author": {
        "name": "Anatol Pomozov",
        "email": "anatol.pomozov@gmail.com",
        "time": "Sun Apr 22 18:45:24 2012 -0700"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 25 12:25:05 2012 +0200"
      },
      "message": "fuse: add FALLOCATE operation\n\nfallocate filesystem operation preallocates media space for the given file.\nIf fallocate returns success then any subsequent write to the given range\nnever fails with \u0027not enough space\u0027 error.\n\nSigned-off-by: Anatol Pomozov \u003canatol.pomozov@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "e2690695ce5085677b84fbf2e38d2ed57cad39cd",
      "tree": "3e9f852e1590d15057bd46ec7cd640db27b04257",
      "parents": [
        "66f75a5d028beaf67c931435fdc3e7823125730c"
      ],
      "author": {
        "name": "Peter Huewe",
        "email": "peterhuewe@gmx.de",
        "time": "Sun Apr 15 02:20:27 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 25 12:25:05 2012 +0200"
      },
      "message": "fuse: Convert to kstrtoul_from_user\n\nThis patch replaces the code for getting an number from a\nuserspace buffer by a simple call to kstroul_from_user.\nThis makes it easier to read and less error prone.\n\nSigned-off-by: Peter Huewe \u003cpeterhuewe@gmx.de\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "dbfad21422f8d2c0866185b3e449c4a6ebaec4e2",
      "tree": "a30de27f59ddce92ba9b950d5bb1b20ff23191b4",
      "parents": [
        "743e89ebc0215900040b1c2d1563d70a22ac2cb0",
        "c628ee67fb15a0d8d48351aa2e487c5f14779785"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 18 17:29:05 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 18 17:29:05 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\nPull fuse updates from Miklos Szeredi.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: use flexible array in fuse.h\n  fuse: allow nanosecond granularity\n  fuse: O_DIRECT support for files\n  fuse: fix nlink after unlink\n"
    },
    {
      "commit": "0a2da9b2ef2ef76c09397597f260245b020e6522",
      "tree": "3ec4888a40ba27b6fbb25773663a64ed70873daf",
      "parents": [
        "4273b793ec68753cc3fcf5be7cbfd88c2be2058d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 11 11:45:06 2012 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Apr 11 11:45:06 2012 +0200"
      },
      "message": "fuse: allow nanosecond granularity\n\nDerrik Pates reports that an utimensat with a NULL argument results in the\ncurrent time being sent from the kernel with 1 second granularity.\n\nReported-by: Derrik Pates \u003cdemon@now.ai\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "e2a0883e4071237d09b604a342c28b96b44a04b3",
      "tree": "aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd",
      "parents": [
        "3a990a52f9f25f45469e272017a31e7a3fda60ed",
        "07c0c5d8b8c122b2f2df9ee574ac3083daefc981"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 21 13:36:41 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile 1 from Al Viro:\n \"This is _not_ all; in particular, Miklos\u0027 and Jan\u0027s stuff is not there\n  yet.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)\n  ext4: initialization of ext4_li_mtx needs to be done earlier\n  debugfs-related mode_t whack-a-mole\n  hfsplus: add an ioctl to bless files\n  hfsplus: change finder_info to u32\n  hfsplus: initialise userflags\n  qnx4: new helper - try_extent()\n  qnx4: get rid of qnx4_bread/qnx4_getblk\n  take removal of PF_FORKNOEXEC to flush_old_exec()\n  trim includes in inode.c\n  um: uml_dup_mmap() relies on -\u003emmap_sem being held, but activate_mm() doesn\u0027t hold it\n  um: embed -\u003estub_pages[] into mmu_context\n  gadgetfs: list_for_each_safe() misuse\n  ocfs2: fix leaks on failure exits in module_init\n  ecryptfs: make register_filesystem() the last potential failure exit\n  ntfs: forgets to unregister sysctls on register_filesystem() failure\n  logfs: missing cleanup on register_filesystem() failure\n  jfs: mising cleanup on register_filesystem() failure\n  make configfs_pin_fs() return root dentry on success\n  configfs: configfs_create_dir() has parent dentry in dentry-\u003ed_parent\n  configfs: sanitize configfs_create()\n  ...\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2408f6ef6bf58620f8330b37181d2bdca2e7c7c5",
      "tree": "80093a2bd67a78f17de1cc8bdad2e6bc6e3b50c0",
      "parents": [
        "d4a23aee23710dabeaa44c30950b87d33bf104be"
      ],
      "author": {
        "name": "Cong Wang",
        "email": "amwang@redhat.com",
        "time": "Fri Nov 25 23:14:30 2011 +0800"
      },
      "committer": {
        "name": "Cong Wang",
        "email": "xiyou.wangcong@gmail.com",
        "time": "Tue Mar 20 21:48:22 2012 +0800"
      },
      "message": "fuse: remove the second argument of k[un]map_atomic()\n\nSigned-off-by: Cong Wang \u003camwang@redhat.com\u003e\n"
    },
    {
      "commit": "4273b793ec68753cc3fcf5be7cbfd88c2be2058d",
      "tree": "b00b18e0c50d9c2f1a93077307c8c2e9dac1ae9b",
      "parents": [
        "ac45d61357e86b9a0cf14e45e8e09dfb626970ef"
      ],
      "author": {
        "name": "Anand Avati",
        "email": "avati@redhat.com",
        "time": "Fri Feb 17 12:46:25 2012 -0500"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 05 15:48:11 2012 +0100"
      },
      "message": "fuse: O_DIRECT support for files\n\nImplement -\u003edirect_IO() method in aops. The -\u003edirect_IO() method combines\nthe existing fuse_direct_read/fuse_direct_write methods to implement\nO_DIRECT functionality.\n\nReaching -\u003edirect_IO() in the read path via generic_file_aio_read ensures\nproper synchronization with page cache with its existing framework.\n\nReaching -\u003edirect_IO() in the write path via fuse_file_aio_write is made\nto come via generic_file_direct_write() which makes it play nice with\nthe page cache w.r.t other mmap pages etc.\n\nOn files marked \u0027direct_io\u0027 by the filesystem server, IO always follows\nthe fuse_direct_read/write path. There is no effect of fcntl(O_DIRECT)\nand it always succeeds.\n\nOn files not marked with \u0027direct_io\u0027 by the filesystem server, the IO\npath depends on O_DIRECT flag by the application. This can be passed\nat the time of open() as well as via fcntl().\n\nNote that asynchronous O_DIRECT iocb jobs are completed synchronously\nalways (this has been the case with FUSE even before this patch)\n\nSigned-off-by: Anand Avati \u003cavati@redhat.com\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "ac45d61357e86b9a0cf14e45e8e09dfb626970ef",
      "tree": "e560d3a8f26d1530780ed62f2a4bd3f16a20ac55",
      "parents": [
        "192cfd58774b4d17b2fe8bdc77d89c2ef4e0591d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 05 15:48:11 2012 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 05 15:48:11 2012 +0100"
      },
      "message": "fuse: fix nlink after unlink\n\nAnand Avati reports that the following sequence of system calls fail on a fuse\nfilesystem:\n\n\n \tcreate(\"filename\") \u003d\u003e 0\n \tlink(\"filename\", \"linkname\") \u003d\u003e 0\n \tunlink(\"filename\") \u003d\u003e 0\n \tlink(\"linkname\", \"filename\") \u003d\u003e -ENOENT ### BUG ###\n\nvfs_link() fails with ENOENT if i_nlink is zero, this is done to prevent\nresurrecting already deleted files.\n\nFuse clears i_nlink on unlink even if there are other links pointing to the\nfile.\n\nReported-by: Anand Avati \u003cavati@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "6733e54b669c600eb8e451939ad55130db664fed",
      "tree": "2a8c24c856fa3f5d7d58a3eb39da943ca1c57e65",
      "parents": [
        "bcf8a3dfcb274cf6654a19e12e244f3af8c0d355",
        "451d0f599934fd97faf54a5d7954b518e66192cb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 12:39:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 12:39:21 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  FUSE: Notifying the kernel of deletion.\n  fuse: support ioctl on directories\n  fuse: Use kcalloc instead of kzalloc to allocate array\n  fuse: llseek optimize SEEK_CUR and SEEK_SET\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "541af6a07474352e2143a0527c2b62b732439815",
      "tree": "fd52fd528264926d42804676278b43baac97e300",
      "parents": [
        "632861f05a8e5878a267d173000880ceb608b56e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 03:17:33 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:07 2012 -0500"
      },
      "message": "fuse: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "30aaca4582eac20a52ac7b2ec35bdb908133e5b1",
      "tree": "ddc71661851922ba75dbeb0e6f272e9c2a0895fb",
      "parents": [
        "ddb360778a86bcf55d856bc15df3ebd2e77afff1",
        "73104b6e37f75f822e3dcf016147c322d1f6dad9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 14 18:23:35 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 14 18:23:35 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: llseek fix race\n  fuse: fix llseek bug\n  fuse: fix fuse_retrieve\n"
    },
    {
      "commit": "988f032567eaba3c5896c5de05270b9ff71b2a9d",
      "tree": "a16354eaba93f15682efb6b02a8a4f770edb1e1f",
      "parents": [
        "5cc361e3b8241989d8240014dbbe6214c9292541"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 13 12:25:27 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Dec 13 12:35:14 2011 -0500"
      },
      "message": "fuse: register_filesystem() called too early\n\nsame story as with ubifs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "451d0f599934fd97faf54a5d7954b518e66192cb",
      "tree": "6dd7a6fcdc8ff3bc50dec37b114c447b3b1d7ba1",
      "parents": [
        "b18da0c56e9ff43a007b6c8e302c62e720964151"
      ],
      "author": {
        "name": "John Muir",
        "email": "john@jmuir.com",
        "time": "Tue Dec 06 21:50:06 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:49 2011 +0100"
      },
      "message": "FUSE: Notifying the kernel of deletion.\n\nAllows a FUSE file-system to tell the kernel when a file or directory is\ndeleted. If the specified dentry has the specified inode number, the kernel will\nunhash it.\n\nThe current \u0027fuse_notify_inval_entry\u0027 does not cause the kernel to clean up\ndirectories that are in use properly, and as a result the users of those\ndirectories see incorrect semantics from the file-system. The error condition\nseen when \u0027fuse_notify_inval_entry\u0027 is used to notify of a deleted directory is\navoided when \u0027fuse_notify_delete\u0027 is used instead.\n\nThe following scenario demonstrates the difference:\n1. User A chdirs into \u0027testdir\u0027 and starts reading \u0027testfile\u0027.\n2. User B rm -rf \u0027testdir\u0027.\n3. User B creates \u0027testdir\u0027.\n4. User C chdirs into \u0027testdir\u0027.\n\nIf you run the above within the same machine on any file-system (including fuse\nfile-systems), there is no problem: user C is able to chdir into the new\ntestdir. The old testdir is removed from the dentry tree, but still open by user\nA.\n\nIf operations 2 and 3 are performed via the network such that the fuse\nfile-system uses one of the notify functions to tell the kernel that the nodes\nare gone, then the following error occurs for user C while user A holds the\noriginal directory open:\n\nmuirj@empacher:~\u003e ls /test/testdir\nls: cannot access /test/testdir: No such file or directory\n\nThe issue here is that the kernel still has a dentry for testdir, and so it is\nrequesting the attributes for the old directory, while the file-system is\nresponding that the directory no longer exists.\n\nIf on the other hand, if the file-system can notify the kernel that the\ndirectory is deleted using the new \u0027fuse_notify_delete\u0027 function, then the above\nls will find the new directory as expected.\n\nSigned-off-by: John Muir \u003cjohn@jmuir.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b18da0c56e9ff43a007b6c8e302c62e720964151",
      "tree": "dca57bc1042c576474529768533d6efb88716f35",
      "parents": [
        "c411cc88d873b3f68635a04691f7f115c46bc39e"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:49 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:49 2011 +0100"
      },
      "message": "fuse: support ioctl on directories\n\nMultiplexing filesystems may want to support ioctls on the underlying\nfiles and directores (e.g. FS_IOC_{GET,SET}FLAGS).\n\nIoctl support on directories was missing so add it now.\n\nReported-by: Antonio SJ Musumeci \u003cbile@landofbile.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "c411cc88d873b3f68635a04691f7f115c46bc39e",
      "tree": "388469bbd475b0411bbf4868c2fe8f3c803737fe",
      "parents": [
        "c07c3d193412bbf4e9f405e75dc84e35e77fac28"
      ],
      "author": {
        "name": "Thomas Meyer",
        "email": "thomas@m3y3r.de",
        "time": "Tue Nov 29 22:08:00 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:49 2011 +0100"
      },
      "message": "fuse: Use kcalloc instead of kzalloc to allocate array\n\nThe advantage of kcalloc is, that will prevent integer overflows which could\nresult from the multiplication of number of elements and size and it is also\na bit nicer to read.\n\nThe semantic patch that makes this change is available\nin https://lkml.org/lkml/2011/11/25/107\n\nSigned-off-by: Thomas Meyer \u003cthomas@m3y3r.de\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "c07c3d193412bbf4e9f405e75dc84e35e77fac28",
      "tree": "79991f1fed4184e7bea8fa98f7de4faf9853bb02",
      "parents": [
        "73104b6e37f75f822e3dcf016147c322d1f6dad9"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:48 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:58:48 2011 +0100"
      },
      "message": "fuse: llseek optimize SEEK_CUR and SEEK_SET\n\nUse generic_file_llseek() instead of open coding the seek function.\n\ni_mutex protection is only necessary for SEEK_END (and SEEK_HOLE, SEEK_DATA), so\nmove SEEK_CUR and SEEK_SET out from under i_mutex.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "73104b6e37f75f822e3dcf016147c322d1f6dad9",
      "tree": "07e8021e78af4237f645fef86ffe887aee5b4ea1",
      "parents": [
        "b48c6af2086ab2ba8a9c9b6ce9ecb34592ce500c"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:40:59 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 11:40:59 2011 +0100"
      },
      "message": "fuse: llseek fix race\n\nFix race between lseek(fd, 0, SEEK_CUR) and read/write.  This was fixed in\ngeneric code by commit 5b6f1eb97d (vfs: lseek(fd, 0, SEEK_CUR) race condition).\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b48c6af2086ab2ba8a9c9b6ce9ecb34592ce500c",
      "tree": "674ca20427f0a77a8f3e332302983e97c30a9f2a",
      "parents": [
        "48706d0a91583d08c56e7ef2a7602d99c8d4133f"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Tue Dec 13 10:37:00 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 10:37:00 2011 +0100"
      },
      "message": "fuse: fix llseek bug\n\nThe test in fuse_file_llseek() \"not SEEK_CUR or not SEEK_SET\" always evaluates\nto true.\n\nThis was introduced in 3.1 by commit 06222e49 (fs: handle SEEK_HOLE/SEEK_DATA\nproperly in all fs\u0027s that define their own llseek) and changed the behavior of\nSEEK_CUR and SEEK_SET to always retrieve the file attributes.  This is a\nperformance regression.\n\nFix the test so that it makes sense.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@vger.kernel.org\nCC: Josef Bacik \u003cjosef@redhat.com\u003e\nCC: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48706d0a91583d08c56e7ef2a7602d99c8d4133f",
      "tree": "6eaee92bf61ef49c43d43b811289f6989375e3f6",
      "parents": [
        "dc47ce90c3a822cd7c9e9339fe4d5f61dcb26b50"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 10:36:59 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 13 10:36:59 2011 +0100"
      },
      "message": "fuse: fix fuse_retrieve\n\nFix two bugs in fuse_retrieve():\n\n - retrieving more than one page would yield repeated instances of the\n   first page\n\n - if more than FUSE_MAX_PAGES_PER_REQ pages were requested than the\n   request page array would overflow\n\nfuse_retrieve() was added in 2.6.36 and these bugs had been there since the\nbeginning.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@vger.kernel.org\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "143cb494cb6662e37c4020b7fe9839837f718e56",
      "tree": "249abcf5afe251a9244a414f9d66c73b9458274e",
      "parents": [
        "afeacc8c1f38b7bb93d4bc7b4ba04c2605061ef0"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri Jul 01 14:23:34 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:30:31 2011 -0400"
      },
      "message": "fs: add module.h to files that were implicitly using it\n\nSome files were using the complete module.h infrastructure without\nactually including the header at all.  Fix them up in advance so\nonce the implicit presence is removed, we won\u0027t get failures like this:\n\n  CC [M]  fs/nfsd/nfssvc.o\nfs/nfsd/nfssvc.c: In function \u0027nfsd_create_serv\u0027:\nfs/nfsd/nfssvc.c:335: error: \u0027THIS_MODULE\u0027 undeclared (first use in this function)\nfs/nfsd/nfssvc.c:335: error: (Each undeclared identifier is reported only once\nfs/nfsd/nfssvc.c:335: error: for each function it appears in.)\nfs/nfsd/nfssvc.c: In function \u0027nfsd\u0027:\nfs/nfsd/nfssvc.c:555: error: implicit declaration of function \u0027module_put_and_exit\u0027\nmake[3]: *** [fs/nfsd/nfssvc.o] Error 1\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "5dfcc87fd79dfb96ed155b524337dbd0da4f5993",
      "tree": "619808e5a371e3055ff6388c98eacddea88fb089",
      "parents": [
        "24114504c4d585ec4aae7a2b2acb81bf741f8c8a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Sep 12 09:38:03 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:10 2011 -0700"
      },
      "message": "fuse: fix memory leak\n\nkmemleak is reporting that 32 bytes are being leaked by FUSE:\n\n  unreferenced object 0xe373b270 (size 32):\n  comm \"fusermount\", pid 1207, jiffies 4294707026 (age 2675.187s)\n  hex dump (first 32 bytes):\n    01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................\n    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................\n  backtrace:\n    [\u003cb05517d7\u003e] kmemleak_alloc+0x27/0x50\n    [\u003cb0196435\u003e] kmem_cache_alloc+0xc5/0x180\n    [\u003cb02455be\u003e] fuse_alloc_forget+0x1e/0x20\n    [\u003cb0245670\u003e] fuse_alloc_inode+0xb0/0xd0\n    [\u003cb01b1a8c\u003e] alloc_inode+0x1c/0x80\n    [\u003cb01b290f\u003e] iget5_locked+0x8f/0x1a0\n    [\u003cb0246022\u003e] fuse_iget+0x72/0x1a0\n    [\u003cb02461da\u003e] fuse_get_root_inode+0x8a/0x90\n    [\u003cb02465cf\u003e] fuse_fill_super+0x3ef/0x590\n    [\u003cb019e56f\u003e] mount_nodev+0x3f/0x90\n    [\u003cb0244e95\u003e] fuse_mount+0x15/0x20\n    [\u003cb019d1bc\u003e] mount_fs+0x1c/0xc0\n    [\u003cb01b5811\u003e] vfs_kern_mount+0x41/0x90\n    [\u003cb01b5af9\u003e] do_kern_mount+0x39/0xd0\n    [\u003cb01b7585\u003e] do_mount+0x2e5/0x660\n    [\u003cb01b7966\u003e] sys_mount+0x66/0xa0\n\nThis leak report is consistent and happens once per boot on\n3.1.0-rc5-dirty.\n\nThis happens if a FORGET request is queued after the fuse device was\nreleased.\n\nReported-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Sitsofe Wheeler \u003csitsofe@yahoo.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "24114504c4d585ec4aae7a2b2acb81bf741f8c8a",
      "tree": "52b9668b53f7d12342984be55b96e5784383a4ae",
      "parents": [
        "87adf1c66cacbc4acd0e696c896755a5091a9d3d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Sep 12 09:31:49 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 12 11:47:10 2011 -0700"
      },
      "message": "fuse: fix flock breakage\n\nCommit 37fb3a30b4 (\"fuse: fix flock\") added in 3.1-rc4 caused flock() to\nfail with ENOSYS with the kernel ABI version 7.16 or earlier.\n\nFix by falling back to testing FUSE_POSIX_LOCKS for ABI versions 7.16\nand earlier.\n\nReported-by: Martin Ziegler \u003cziegler@email.mathematik.uni-freiburg.de\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Martin Ziegler \u003cziegler@email.mathematik.uni-freiburg.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "051732bcbe3cff3fea04dc9042266562fe8b0859",
      "tree": "1c709cd8a65747fde8363ce593b77e040c14e3e4",
      "parents": [
        "2983573e491d1e201e802eafa3553ba33d1fd50b",
        "c2183d1e9b3f313dd8ba2b1b0197c8d9fb86a7ae"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 24 09:14:42 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 24 09:14:42 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message\n  fuse: mark pages accessed when written to\n  fuse: delete dead .write_begin and .write_end aops\n  fuse: fix flock\n  fuse: fix non-ANSI void function notation\n"
    },
    {
      "commit": "c2183d1e9b3f313dd8ba2b1b0197c8d9fb86a7ae",
      "tree": "fd9e12ce069012b60e5bdcd15627ccf4912d9ef1",
      "parents": [
        "478e0841b3dce3edc2c67bf0fc51af30f582e9e2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 24 10:20:17 2011 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Aug 24 10:20:17 2011 +0200"
      },
      "message": "fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message\n\nFUSE_NOTIFY_INVAL_ENTRY didn\u0027t check the length of the write so the\nmessage processing could overrun and result in a \"kernel BUG at\nfs/fuse/dev.c:629!\"\n\nReported-by: Han-Wen Nienhuys \u003chanwenn@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: stable@kernel.org\n"
    },
    {
      "commit": "478e0841b3dce3edc2c67bf0fc51af30f582e9e2",
      "tree": "496f32d81640425d83cae9c4c764f1246a591ca1",
      "parents": [
        "b40cdd56dfa065c0832905e266b39f79419e6914"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Jul 25 22:35:35 2011 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Aug 08 16:08:08 2011 +0200"
      },
      "message": "fuse: mark pages accessed when written to\n\nAs fuse does not use the page cache library functions when userspace\nwrites to a file, it did not benefit from \u0027c8236db mm: mark page\naccessed before we write_end()\u0027 that made sure pages are properly\nmarked accessed when written to.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b40cdd56dfa065c0832905e266b39f79419e6914",
      "tree": "38ea1fa5cd6c49a9baedfc92309e8478d5cc32ae",
      "parents": [
        "37fb3a30b46237f23cfdf7ee09d49f9888dd13bf"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Mon Jul 25 22:35:34 2011 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Aug 08 16:08:08 2011 +0200"
      },
      "message": "fuse: delete dead .write_begin and .write_end aops\n\nEver since \u0027ea9b990 fuse: implement perform_write\u0027, the .write_begin\nand .write_end aops have been dead code.\n\nTheir task - acquiring a page from the page cache, sending out a write\nrequest and releasing the page again - is now done batch-wise to\nmaximize the number of pages send per userspace request.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "37fb3a30b46237f23cfdf7ee09d49f9888dd13bf",
      "tree": "c36910e300ade812159d12218fdf122b3d2ef3de",
      "parents": [
        "a2daff6803a384ce065e3681a2affea1da59c5f5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Aug 08 16:08:08 2011 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Aug 08 16:08:08 2011 +0200"
      },
      "message": "fuse: fix flock\n\nCommit a9ff4f87 \"fuse: support BSD locking semantics\" overlooked a\nnumber of issues with supporing flock locks over existing POSIX\nlocking infrastructure:\n\n  - it\u0027s not backward compatible, passing flock(2) calls to userspace\n    unconditionally (if userspace sets FUSE_POSIX_LOCKS)\n\n  - it doesn\u0027t cater for the fact that flock locks are automatically\n    unlocked on file release\n\n  - it doesn\u0027t take into account the fact that flock exclusive locks\n    (write locks) don\u0027t need an fd opened for write.\n\nThe last one invalidates the original premise of the patch that flock\nlocks can be emulated with POSIX locks.\n\nThis patch fixes the first two issues.  The last one needs to be fixed\nin userspace if the filesystem assumed that a write lock will happen\nonly on a file operned for write (as in the case of the current fuse\nlibrary).\n\nReported-by: Sebastian Pipping \u003cwebmaster@hartwork.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "2dad3206db5c3832cde1f58650027fea3ff7adf3",
      "tree": "96314a554afdab5904a939793156d4ae23ec11c1",
      "parents": [
        "84635d68be4b846ba984a89f386524153330c597",
        "0c12eaffdf09466f36a9ffe970dda8f4aeb6efc0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 22:49:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 22:49:19 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-3.1\u0027 of git://linux-nfs.org/~bfields/linux:\n  nfsd: don\u0027t break lease on CLAIM_DELEGATE_CUR\n  locks: rename lock-manager ops\n  nfsd4: update nfsv4.1 implementation notes\n  nfsd: turn on reply cache for NFSv4\n  nfsd4: call nfsd4_release_compoundargs from pc_release\n  nfsd41: Deny new lock before RECLAIM_COMPLETE done\n  fs: locks: remove init_once\n  nfsd41: check the size of request\n  nfsd41: error out when client sets maxreq_sz or maxresp_sz too small\n  nfsd4: fix file leak on open_downgrade\n  nfsd4: remember to put RW access on stateid destruction\n  NFSD: Added TEST_STATEID operation\n  NFSD: added FREE_STATEID operation\n  svcrpc: fix list-corrupting race on nfsd shutdown\n  rpc: allow autoloading of gss mechanisms\n  svcauth_unix.c: quiet sparse noise\n  svcsock.c: include sunrpc.h to quiet sparse noise\n  nfsd: Remove deprecated nfsctl system call and related code.\n  NFSD: allow OP_DESTROY_CLIENTID to be only op in COMPOUND\n\nFix up trivial conflicts in Documentation/feature-removal-schedule.txt\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06222e491e663dac939f04b125c9dc52126a75c4",
      "tree": "99636fd666c8148a5bf58ea4844263d4b3a36310",
      "parents": [
        "c334b1138bd44bea578eab7971c59bd9212a1093"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:38 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:58 2011 -0400"
      },
      "message": "fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n\nThis converts everybody to handle SEEK_HOLE/SEEK_DATA properly.  In some cases\nwe just return -EINVAL, in others we do the normal generic thing, and in others\nwe\u0027re simply making sure that the properly due-dilligence is done.  For example\nin NFS/CIFS we need to make sure the file size is update properly for the\nSEEK_HOLE and SEEK_DATA case, but since it calls the generic llseek stuff itself\nthat is all we have to do.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8fb47a4fbf858a164e973b8ea8ef5e83e61f2e50",
      "tree": "d3b55fbce0e7ba5708a55b91b1ab4079ad192db6",
      "parents": [
        "c46556c6be057da79f51b1a8325ec4c27938bd49"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:21:59 2011 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Wed Jul 20 20:23:19 2011 -0400"
      },
      "message": "locks: rename lock-manager ops\n\nBoth the filesystem and the lock manager can associate operations with a\nlock.  Confusingly, one of them (fl_release_private) actually has the\nsame name in both operation structures.\n\nIt would save some confusion to give the lock-manager ops different\nnames.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    },
    {
      "commit": "dd7dd556e45133ef13f2c4bddc0e0b1ac23bc0e4",
      "tree": "4884b6af570a2a0cb01d11f39a38a3a9c73e49ba",
      "parents": [
        "bf6c7f6c7bd0ea779757d35b5fdc9f9157f056b3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 21:17:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:56 2011 -0400"
      },
      "message": "no need to check for LOOKUP_OPEN in -\u003ecreate() instances\n\n... it will be set in nd-\u003eflag for all cases with non-NULL nd\n(i.e. when called from do_last()).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8a5e929dd2e05ab4d3d89f58c5e8fca596af8f3a",
      "tree": "8cbed05fcd99d24e881e5ea12d8a954865e31085",
      "parents": [
        "554a8b9f54cd7ca2b89f5dc227df08be082fae0d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jun 25 19:15:54 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:52 2011 -0400"
      },
      "message": "don\u0027t transliterate lower bits of -\u003eintent.open.flags to FMODE_...\n\n-\u003ecreate() instances are much happier that way...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "10556cb21a0d0b24d95f00ea6df16f599a3345b2",
      "tree": "3d7d8dfba807805a55c154f1850717bf3b49f343",
      "parents": [
        "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:28:19 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:24 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003epermission()\n\nnot used by the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2830ba7f34ebb27c4e5b8b6ef408cd6d74860890",
      "tree": "bbcebc14bffd000f1dfcbf37e64f56d2f49581ac",
      "parents": [
        "7e40145eb111a5192e6d819f764db9d6828d1abb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:16:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:22 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to generic_permission()\n\nredundant; all callers get it duplicated in mask \u0026 MAY_NOT_BLOCK and none of\nthem removes that bit.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "178ea73521d64ba41d7aa5488fb9f549c6d4507d",
      "tree": "7fb6bfb6483577752e307a5bb2e3905658d44294",
      "parents": [
        "07b8ce1ee87d291ff564c02cf878fae973317a52"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 11:31:30 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:16 2011 -0400"
      },
      "message": "kill check_acl callback of generic_permission()\n\nits value depends only on inode and does not change; we might as\nwell store it in -\u003ei_op-\u003echeck_acl and be done with that.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9e1f1de02c2275d7172e18dc4e7c2065777611bf",
      "tree": "15e9d202e64275cdbff6ed1d54804da5966d7d8d",
      "parents": [
        "1fa7b6a29c61358cc2ca6f64cef4aa0e1a7ca74c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 18:24:58 2011 -0400"
      },
      "message": "more conservative S_NOSEC handling\n\nCaching \"we have already removed suid/caps\" was overenthusiastic as merged.\nOn network filesystems we might have had suid/caps set on another client,\nsilently picked by this client on revalidate, all of that *without* clearing\nthe S_NOSEC flag.\n\nAFAICS, the only reasonably sane way to deal with that is\n\t* new superblock flag; unless set, S_NOSEC is not going to be set.\n\t* local block filesystems set it in their -\u003emount() (more accurately,\nmount_bdev() does, so does btrfs -\u003emount(), users of mount_bdev() other than\nlocal block ones clear it)\n\t* if any network filesystem (or a cluster one) wants to use S_NOSEC,\nit\u0027ll need to set MS_NOSEC in sb-\u003es_flags *AND* take care to clear S_NOSEC when\ninode attribute changes are picked from other clients.\n\nIt\u0027s not an earth-shattering hole (anybody that can set suid on another client\nwill almost certainly be able to write to the file before doing that anyway),\nbut it\u0027s a bug that needs fixing.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a2daff6803a384ce065e3681a2affea1da59c5f5",
      "tree": "bd21bf2592cd95b1e3e83a927a25eed6ca3ea2ad",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 31 14:09:00 2011 -0700"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Jun 01 16:09:32 2011 +0200"
      },
      "message": "fuse: fix non-ANSI void function notation\n\nFix void function parameter list sparse warning:\n\nfs/fuse/inode.c:74:44: warning: non-ANSI function declaration of function \u0027fuse_alloc_forget\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "526e7ce5528c8addcf154acec41b615f71dce7e1",
      "tree": "d3cadaaa5dec5b7c9d851d59b6ed595c1ca5eb7e",
      "parents": [
        "42b850b2806f8f55f5c3a0e3c78af738d5054fdc"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 27 13:42:15 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 01:02:53 2011 -0400"
      },
      "message": "fuse: remove unnecessary dentry_unhash on rmdir, dir rename\n\nFuse has no problems with references to unlinked directories.\n\nCC: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCC: fuse-devel@lists.sourceforge.net\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "32e51f141fd8d880f57b6a2eb53ce72856254d4a",
      "tree": "d8d7a0d503533a03fb07b2ebd5eccd9043f2d228",
      "parents": [
        "ca16d140af91febe25daeb9e032bf8bd46b8c31f",
        "b6ff24a333267a6810e28ee5b9fc539d149c52f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:52:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:52:14 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (25 commits)\n  cifs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ocfs2: remove unnecessary dentry_unhash on rmdir/rename_dir\n  exofs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  nfs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext2: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext3: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext4: remove unnecessary dentry_unhash on rmdir/rename_dir\n  btrfs: remove unnecessary dentry_unhash in rmdir/rename_dir\n  ceph: remove unnecessary dentry_unhash calls\n  vfs: clean up vfs_rename_other\n  vfs: clean up vfs_rename_dir\n  vfs: clean up vfs_rmdir\n  vfs: fix vfs_rename_dir for FS_RENAME_DOES_D_MOVE filesystems\n  libfs: drop unneeded dentry_unhash\n  vfs: update dentry_unhash() comment\n  vfs: push dentry_unhash on rename_dir into file systems\n  vfs: push dentry_unhash on rmdir into file systems\n  vfs: remove dget() from dentry_unhash()\n  vfs: dentry_unhash immediately prior to rmdir\n  vfs: Block mmapped writes while the fs is frozen\n  ...\n"
    },
    {
      "commit": "e4eaac06bcccb2a70bca6a2de9871882dce2aa14",
      "tree": "ca6736d96294cd6e65a1c3055718bfd5adc7336e",
      "parents": [
        "79bf7c732b5ff75b96022ed9d29181afd3d2509c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:07 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:48 2011 -0400"
      },
      "message": "vfs: push dentry_unhash on rename_dir into file systems\n\nOnly a few file systems need this.  Start by pushing it down into each\nrename method (except gfs2 and xfs) so that it can be dealt with on a\nper-fs basis.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79bf7c732b5ff75b96022ed9d29181afd3d2509c",
      "tree": "74b8cc690f9a37fff02d0685464e1c695a25ef94",
      "parents": [
        "64252c75a2196a0cf1e0d3777143ecfe0e3ae650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:06 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:47 2011 -0400"
      },
      "message": "vfs: push dentry_unhash on rmdir into file systems\n\nOnly a few file systems need this.  Start by pushing it down into each\nfs rmdir method (except gfs2 and xfs) so it can be dealt with on a per-fs\nbasis.\n\nThis does not change behavior for any in-tree file systems.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d24339059d640f108c08ba99ef30e3bafa10f8e4",
      "tree": "934d3c4f2abcddbfdbb52904d0b96c5a1915acd1",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 10 17:35:58 2011 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 10 17:35:58 2011 +0200"
      },
      "message": "fuse: fix oops in revalidate when called with NULL nameidata\n\nSome cases (e.g. ecryptfs) can call -\u003edentry_revalidate with NULL\nnameidata.\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id\u003d34732\n\nTyler Hicks pointed out that this bug was introduced by commit\ne7c0a16786 \"fuse: make fuse_dentry_revalidate() RCU aware\"\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "ef6a3c63112e865d632ff7c478ba7c7160cad0d1",
      "tree": "d0bd3ee2b79674e22b8dd3f318814cd4789697b8",
      "parents": [
        "318b275fbca1ab9ec0862de71420e0e92c3d1aa7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Mar 22 16:30:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:02 2011 -0700"
      },
      "message": "mm: add replace_page_cache_page() function\n\nThis function basically does:\n\n     remove_from_page_cache(old);\n     page_cache_release(old);\n     add_to_page_cache_locked(new);\n\nExcept it does this atomically, so there\u0027s no possibility for the \"add\" to\nfail because of a race.\n\nIf memory cgroups are enabled, then the memory cgroup charge is also moved\nfrom the old page to the new.\n\nThis function is currently used by fuse to move pages into the page cache\non read, instead of copying the page contents.\n\n[minchan.kim@gmail.com: add freepage() hook to replace_page_cache_page()]\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f741a79e982cf56d7584435bad663553ffe6715f",
      "tree": "491f0a8a05d9add4c0338ee8af4a18f3508503cd",
      "parents": [
        "73d5a8675f32b8e22e11773b314324316f920192",
        "e7c0a167860620bd2938366896964f729ddaeaaa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 10:42:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 10:42:43 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: make fuse_dentry_revalidate() RCU aware\n  fuse: make fuse_permission() RCU aware\n  fuse: wakeup pollers on connection release/abort\n  fuse: reduce size of struct fuse_request\n"
    },
    {
      "commit": "e7c0a167860620bd2938366896964f729ddaeaaa",
      "tree": "478680f3a309283e5e401cd0867cb7543d7318ff",
      "parents": [
        "19690ddb65dbfc7be1b411fce12d3332acefbfb5"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:06 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:06 2011 +0100"
      },
      "message": "fuse: make fuse_dentry_revalidate() RCU aware\n\nOnly bail out of fuse_dentry_revalidate() on LOOKUP_RCU when blocking\nis actually necessary.\n\nCC: Nick Piggin \u003cnpiggin@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "19690ddb65dbfc7be1b411fce12d3332acefbfb5",
      "tree": "a906399000efeb5221e9a496fc85668243238d49",
      "parents": [
        "357ccf2b69bcefa650a54db83702381d1c9d6959"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:06 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:06 2011 +0100"
      },
      "message": "fuse: make fuse_permission() RCU aware\n\nOnly bail out of fuse_permission() on IPERM_FLAG_RCU when blocking is\nactually necessary.\n\nCC: Nick Piggin \u003cnpiggin@gmail.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "357ccf2b69bcefa650a54db83702381d1c9d6959",
      "tree": "0bbcbb308b0a28a489d38177a4ad7b84b1ae36d5",
      "parents": [
        "07d5f69b457019eda4ca568923b1d62b7ada89e1"
      ],
      "author": {
        "name": "Bryan Green",
        "email": "bryan@grid-net.com",
        "time": "Tue Mar 01 16:43:52 2011 -0800"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:05 2011 +0100"
      },
      "message": "fuse: wakeup pollers on connection release/abort\n\nIf a fuse dev connection is broken, wake up any\nprocesses that are blocking, in a poll system call,\non one of the files in the now defunct filesystem.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "07d5f69b457019eda4ca568923b1d62b7ada89e1",
      "tree": "b0509b12d9edc0586cc6778d7d4102c62bf6d5ab",
      "parents": [
        "521cb40b0c44418a4fd36dc633f575813d59a43d"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:05 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Mar 21 13:58:05 2011 +0100"
      },
      "message": "fuse: reduce size of struct fuse_request\n\nReduce the size of struct fuse_request by removing cuse_init_out from\nthe request structure and allocating it dinamically instead.\n\nCC: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "e16b396ce314b2bcdfe6c173fe075bf8e3432368",
      "tree": "640f0f56f2ea676647af4eb42d32fa56be2ee549",
      "parents": [
        "7fd23a24717a327a66f3c32d11a20a2f169c824f",
        "e6e8dd5055a974935af1398c8648d4a9359b0ecb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 18 10:37:40 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 18 10:37:40 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (47 commits)\n  doc: CONFIG_UNEVICTABLE_LRU doesn\u0027t exist anymore\n  Update cpuset info \u0026 webiste for cgroups\n  dcdbas: force SMI to happen when expected\n  arch/arm/Kconfig: remove one to many l\u0027s in the word.\n  asm-generic/user.h: Fix spelling in comment\n  drm: fix printk typo \u0027sracth\u0027\n  Remove one to many n\u0027s in a word\n  Documentation/filesystems/romfs.txt: fixing link to genromfs\n  drivers:scsi Change printk typo initate -\u003e initiate\n  serial, pch uart: Remove duplicate inclusion of linux/pci.h header\n  fs/eventpoll.c: fix spelling\n  mm: Fix out-of-date comments which refers non-existent functions\n  drm: Fix printk typo \u0027failled\u0027\n  coh901318.c: Change initate to initiate.\n  mbox-db5500.c Change initate to initiate.\n  edac: correct i82975x error-info reported\n  edac: correct i82975x mci initialisation\n  edac: correct commented info\n  fs: update comments to point correct document\n  target: remove duplicate include of target/target_core_device.h from drivers/target/target_core_hba.c\n  ...\n\nTrivial conflict in fs/eventpoll.c (spelling vs addition)\n"
    },
    {
      "commit": "5fe0c2378884e68beb532f5890cc0e3539ac747b",
      "tree": "be25414052184e146049ea6466854366559d5528",
      "parents": [
        "c8b91accfa1059d5565443193d89572eca2f5dd6"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:25 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:28 2011 -0400"
      },
      "message": "exportfs: Return the minimum required handle size\n\nThe exportfs encode handle function should return the minimum required\nhandle size. This helps user to find out the handle size by passing 0\nhandle size in the first step and then redoing to the call again with\nthe returned handle size value.\n\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "529c5f958f9e60abaa7407986034b17d17536bf2",
      "tree": "3e946687f07c6738b9695224fd6492ceb8236e1e",
      "parents": [
        "0eb980e31770cfeff6e27760b4692d595b8dbf28"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:31 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 10 03:44:31 2011 -0500"
      },
      "message": "fuse: fix d_revalidate oopsen on NFS exports\n\ncan\u0027t blindly check nd-\u003eflags in -\u003ed_revalidate()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4c63f5646e405b5010cc9499419060bf2e838f5b",
      "tree": "df91ba315032c8ec4aafeb3ab96fdfa7c6c656e1",
      "parents": [
        "cafb0bfca1a73efd6d8a4a6a6a716e6134b96c24",
        "69d60eb96ae8a73cf9b79cf28051caf973006011"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:58:35 2011 +0100"
      },
      "message": "Merge branch \u0027for-2.6.39/stack-plug\u0027 into for-2.6.39/core\n\nConflicts:\n\tblock/blk-core.c\n\tblock/blk-flush.c\n\tdrivers/md/raid1.c\n\tdrivers/md/raid10.c\n\tdrivers/md/raid5.c\n\tfs/nilfs2/btnode.c\n\tfs/nilfs2/mdt.c\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7eaceaccab5f40bbfda044629a6298616aeaed50",
      "tree": "33954d12f63e25a47eb6d86ef3d3d0a5e62bf752",
      "parents": [
        "73c101011926c5832e6e141682180c4debe2cf45"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:07 2011 +0100"
      },
      "message": "block: remove per-queue plugging\n\nCode has been converted over to the new explicit on-stack plugging,\nand delay users have been converted to use the new API for that.\nSo lets kill off the old plugging along with aops-\u003esync_page().\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "8d56addd70c7c0626502569e22cc8fce49ae39f5",
      "tree": "43e5e51dfa7a1b7e566cb235d44d5991e0c806d0",
      "parents": [
        "5a18ec176c934ca1bc9dc61580a5e0e90a9b5733"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 25 14:44:58 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 25 14:44:58 2011 +0100"
      },
      "message": "fuse: fix truncate after open\n\nCommit e1181ee6 \"vfs: pass struct file to do_truncate on O_TRUNC\nopens\" broke the behavior of open(O_TRUNC|O_RDONLY) in fuse.  Fuse\nassumed that when called from open, a truncate() will be done, not an\nftruncate().\n\nFix by restoring the old behavior, based on the ATTR_OPEN flag.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "5a18ec176c934ca1bc9dc61580a5e0e90a9b5733",
      "tree": "6995509f59166fff90ce240ce72e3858f61ac101",
      "parents": [
        "4662db446190ddef8fbab024f72dee77dd04b8f2"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 25 14:44:58 2011 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Feb 25 14:44:58 2011 +0100"
      },
      "message": "fuse: fix hang of single threaded fuseblk filesystem\n\nSingle threaded NTFS-3G could get stuck if a delayed RELEASE reply\ntriggered a DESTROY request via path_put().\n\nFix this by\n\n a) making RELEASE requests synchronous, whenever possible, on fuseblk\n filesystems\n\n b) if not possible (triggered by an asynchronous read/write) then do\n the path_put() in a separate thread with schedule_work().\n\nReported-by: Oliver Neukum \u003coneukum@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "8272f4c9c5a46049a66dad5924850de5d1ef2269",
      "tree": "d3420c88ba1a2c04a55cc051664be366b052fba4",
      "parents": [
        "1752a373c4c567445057f1f51d8558ec8cf5d641"
      ],
      "author": {
        "name": "Paul Bolle",
        "email": "pebolle@tiscali.nl",
        "time": "Tue Feb 15 00:05:34 2011 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Tue Feb 15 10:26:38 2011 +0100"
      },
      "message": "fuse/cuse: fix comment typo initilaization\n\nSigned-off-by: Paul Bolle \u003cpebolle@tiscali.nl\u003e\nReviewed-by: Jesper Juhl \u003cjj@chaosbits.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "c35eebe9939f55b9d51631d03301a7af19090dcc",
      "tree": "aad58e63dea9f62baa295db12078de1e00754409",
      "parents": [
        "d93e34faf924bd98f158712d63085662e648e389"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 11:15:22 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:44 2011 -0500"
      },
      "message": "switch fuse\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7d44b0440147d83a65270205b22e7d365de28948",
      "tree": "0adc818f569f45912a19482773dabbf71b191b9d",
      "parents": [
        "0dc1488527a3c01383a50e5df7187219567586a3",
        "1baa26b2be92fe9917e2f7ef46d423b5dfa4da71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 07:43:54 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 07:43:54 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:\n  fuse: fix ioctl ABI\n  fuse: allow batching of FORGET requests\n  fuse: separate queue for FORGET requests\n  fuse: ioctl cleanup\n\nFix up trivial conflict in fs/fuse/inode.c due to RCU lookup having done\nthe RCU-freeing of the inode in fuse_destroy_inode().\n"
    },
    {
      "commit": "b74c79e99389cd79b31fcc08f82c24e492e63c7e",
      "tree": "763c6b412517306670bc625e90035f2d16bb739f",
      "parents": [
        "34286d6662308d82aed891852d04c7c3a2649b16"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:58 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: provide rcu-walk aware permission i_ops\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "34286d6662308d82aed891852d04c7c3a2649b16",
      "tree": "c4b7311404d302e7cb94df7a4690298e1059910a",
      "parents": [
        "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:57 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:29 2011 +1100"
      },
      "message": "fs: rcu-walk aware d_revalidate method\n\nRequire filesystems be aware of .d_revalidate being called in rcu-walk\nmode (nd-\u003eflags \u0026 LOOKUP_RCU). For now do a simple push down, returning\n-ECHILD from all implementations.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fb045adb99d9b7c562dc7fef834857f78249daa1",
      "tree": "1fd6a4024fffeec568abe100d730589bfdb81c38",
      "parents": [
        "5f57cbcc02cf18f6b22ef4066bb10afeb8f930ff"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:55 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: dcache reduce branches in lookup path\n\nReduce some branches and memory accesses in dcache lookup by adding dentry\nflags to indicate common d_ops are set, rather than having to check them.\nThis saves a pointer memory access (dentry-\u003ed_op) in common path lookup\nsituations, and saves another pointer load and branch in cases where we\nhave d_op but not the particular operation.\n\nPatched with:\n\ngit grep -E \u0027[.\u003e]([[:space:]])*d_op([[:space:]])*\u003d\u0027 | xargs sed -e \u0027s/\\([^\\t ]*\\)-\u003ed_op \u003d \\(.*\\);/d_set_d_op(\\1, \\2);/\u0027 -e \u0027s/\\([^\\t ]*\\)\\.d_op \u003d \\(.*\\);/d_set_d_op(\\\u0026\\1, \\2);/\u0027 -i\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "1baa26b2be92fe9917e2f7ef46d423b5dfa4da71",
      "tree": "1b4f24c149a01e74c17cb0c290952dd09778ca1d",
      "parents": [
        "02c048b919455aaa38628563cdcc2e691c8a9f53"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "message": "fuse: fix ioctl ABI\n\nIn kernel ABI version 7.16 and later FUSE_IOCTL_RETRY reply from a\nunrestricted IOCTL request shall return with an array of \u0027struct\nfuse_ioctl_iovec\u0027 instead of \u0027struct iovec\u0027.  This fixes the ABI\nambiguity of 32bit vs. 64bit.\n\nReported-by: \"ccmail111\" \u003cccmail111@yahoo.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "02c048b919455aaa38628563cdcc2e691c8a9f53",
      "tree": "1f98cd9fab564b6df8869a60f36e82d5d20f14f3",
      "parents": [
        "07e77dca8a1f17a724a9b7449f0ca02e70e9d057"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "message": "fuse: allow batching of FORGET requests\n\nTerje Malmedal reports that a fuse filesystem with 32 million inodes\non a machine with lots of memory can take up to 30 minutes to process\nFORGET requests when all those inodes are evicted from the icache.\n\nTo solve this, create a BATCH_FORGET request that allows up to about\n8000 FORGET requests to be sent in a single message.\n\nThis request is only sent if userspace supports interface version 7.16\nor later, otherwise fall back to sending individual FORGET messages.\n\nReported-by: Terje Malmedal \u003cterje.malmedal@usit.uio.no\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "07e77dca8a1f17a724a9b7449f0ca02e70e9d057",
      "tree": "69186be641145fd997ce15e17a22598d9a264119",
      "parents": [
        "8ac835056ca39b242d98332f46e4d65428a8b7db"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "message": "fuse: separate queue for FORGET requests\n\nTerje Malmedal reports that a fuse filesystem with 32 million inodes\non a machine with lots of memory can go unresponsive for up to 30\nminutes when all those inodes are evicted from the icache.\n\nThe reason is that FORGET messages, sent when the inode is evicted,\nare queued up together with regular filesystem requests, and while the\nhuge queue of FORGET messages are processed no other filesystem\noperation can proceed.\n\nSince a full fuse request structure is allocated for each inode, these\ntake up quite a bit of memory as well.\n\nTo solve these issues, create a slim \u0027fuse_forget_link\u0027 structure\ncontaining just the minimum of information required to send the FORGET\nrequest and chain these on a separate queue.\n\nWhen userspace is asking for a request make sure that FORGET and\nnon-FORGET requests are selected fairly: for each 8 non-FORGET allow\n16 FORGET requests.  This will make sure FORGETs do not pile up, yet\nother requests are also allowed to proceed while the queued FORGETs\nare processed.\n\nReported-by: Terje Malmedal \u003cterje.malmedal@usit.uio.no\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "8ac835056ca39b242d98332f46e4d65428a8b7db",
      "tree": "c35c2644c9bfce1dcf1b5298b00c03bd1c8d2f9a",
      "parents": [
        "7572777eef78ebdee1ecb7c258c0ef94d35bad16"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Dec 07 20:16:56 2010 +0100"
      },
      "message": "fuse: ioctl cleanup\n\nGet rid of unnecessary page_address()-es.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\n"
    },
    {
      "commit": "7572777eef78ebdee1ecb7c258c0ef94d35bad16",
      "tree": "04bb06d75688912ac14855146dc013703529403d",
      "parents": [
        "d9d318d39dd5cb686660504a3565aac453709ccc"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Nov 30 16:39:27 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Nov 30 16:39:27 2010 +0100"
      },
      "message": "fuse: verify ioctl retries\n\nVerify that the total length of the iovec returned in FUSE_IOCTL_RETRY\ndoesn\u0027t overflow iov_length().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\nCC: \u003cstable@kernel.org\u003e         [2.6.31+]\n"
    },
    {
      "commit": "d9d318d39dd5cb686660504a3565aac453709ccc",
      "tree": "ff818170ca69976ad2cfaa77ed788e645c4d80c9",
      "parents": [
        "e8a7e48bb248a1196484d3f8afa53bded2b24e71"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Nov 30 16:39:27 2010 +0100"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Nov 30 16:39:27 2010 +0100"
      },
      "message": "fuse: fix ioctl when server is 32bit\n\nIf a 32bit CUSE server is run on 64bit this results in EIO being\nreturned to the caller.\n\nThe reason is that FUSE_IOCTL_RETRY reply was defined to use \u0027struct\niovec\u0027, which is different on 32bit and 64bit archs.\n\nWork around this by looking at the size of the reply to determine\nwhich struct was used.  This is only needed if CONFIG_COMPAT is\ndefined.\n\nA more permanent fix for the interface will be to use the same struct\non both 32bit and 64bit.\n\nReported-by: \"ccmail111\" \u003cccmail111@yahoo.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCC: Tejun Heo \u003ctj@kernel.org\u003e\nCC: \u003cstable@kernel.org\u003e         [2.6.31+]\n"
    },
    {
      "commit": "a0822c55779d9319939eac69f00bb729ea9d23da",
      "tree": "a12ff25e7718bb04ac2f85c672c9f9c370a8b167",
      "parents": [
        "c22c7aeff69796f46ae0fcec141538e28f50b24e"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Nov 24 12:57:00 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 25 06:50:41 2010 +0900"
      },
      "message": "fuse: fix attributes after open(O_TRUNC)\n\nThe attribute cache for a file was not being cleared when a file is opened\nwith O_TRUNC.\n\nIf the filesystem\u0027s open operation truncates the file (\"atomic_o_trunc\"\nfeature flag is set) then the kernel should invalidate the cached st_mtime\nand st_ctime attributes.\n\nAlso i_size should be explicitly be set to zero as it is used sometimes\nwithout refreshing the cache.\n\nSigned-off-by: Ken Sumrall \u003cksumrall@android.com\u003e\nCc: Anfei \u003canfei.zhou@gmail.com\u003e\nCc: \"Anand V. Avati\" \u003cavati@gluster.com\u003e\nSigned-off-by: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c26ff6e499ee7e6f9f2bc7da5f2f30d80862ecf",
      "tree": "bd758d7f15f24aed225a64de77cc535785c50f96",
      "parents": [
        "fc14f2fef682df677d64a145256dbd263df2aa7b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 11:46:36 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:31 2010 -0400"
      },
      "message": "convert get_sb_nodev() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "fc14f2fef682df677d64a145256dbd263df2aa7b",
      "tree": "74f6b939fbad959a43c04ec646cd0adc8af5f53a",
      "parents": [
        "848b83a59b772b8f102bc5e3f1187c2fa5676959"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 01:48:30 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:28 2010 -0400"
      },
      "message": "convert get_sb_single() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "152a08366671080f27b32e0c411ad620c5f88b57",
      "tree": "d13d16028f74839c678bce355ba8aac75d939fa8",
      "parents": [
        "c96e41e92b4aaf11e1f9775ecf0d1c8cbff829ed"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 00:46:55 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:13 2010 -0400"
      },
      "message": "new helper: mount_bdev()\n\n... and switch of the obvious get_sb_bdev() users to -\u003emount()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0be8557bcd34887d5a42c01c5659cab5ecf99f13",
      "tree": "80d211221be1583303818cf201d6e40cc0674608",
      "parents": [
        "d57af9b2142f31a39dcfdeb30776baadfc802827"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Oct 27 15:34:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 27 18:03:17 2010 -0700"
      },
      "message": "fuse: use release_pages()\n\nReplace iterated page_cache_release() with release_pages(), which is\nfaster and shorter.\n\nNeeds release_pages() to be exported to modules.\n\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "426e1f5cec4821945642230218876b0e89aafab1",
      "tree": "2728ace018d0698886989da586210ef1543a7098",
      "parents": [
        "9e5fca251f44832cb996961048ea977f80faf6ea",
        "63997e98a3be68d7cec806d22bf9b02b2e1daabb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 17:58:44 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)\n  split invalidate_inodes()\n  fs: skip I_FREEING inodes in writeback_sb_inodes\n  fs: fold invalidate_list into invalidate_inodes\n  fs: do not drop inode_lock in dispose_list\n  fs: inode split IO and LRU lists\n  fs: switch bdev inode bdi\u0027s correctly\n  fs: fix buffer invalidation in invalidate_list\n  fsnotify: use dget_parent\n  smbfs: use dget_parent\n  exportfs: use dget_parent\n  fs: use RCU read side protection in d_validate\n  fs: clean up dentry lru modification\n  fs: split __shrink_dcache_sb\n  fs: improve DCACHE_REFERENCED usage\n  fs: use percpu counter for nr_dentry and nr_dentry_unused\n  fs: simplify __d_free\n  fs: take dcache_lock inside __d_path\n  fs: do not assign default i_ino in new_inode\n  fs: introduce a per-cpu last_ino allocator\n  new helper: ihold()\n  ...\n"
    },
    {
      "commit": "b6777c40c79168d938c30b5b7471fbd64bca109c",
      "tree": "866d965ba77a47fd81b69883194ec9c7238a48d5",
      "parents": [
        "3ecb01df3261d3b1f02ccfcf8384e2a255d2a1d0"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Oct 26 14:22:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:13 2010 -0700"
      },
      "message": "fuse: use clear_highpage() and KM_USER0 instead of KM_USER1\n\nCommit 7909b1c640 (\"fuse: don\u0027t use atomic kmap\") removed KM_USER0 usage\nfrom fuse/dev.c.  Switch KM_USER1 uses to KM_USER0 for clarity.  Also\nreplace open coded clear_highpage().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3ecb01df3261d3b1f02ccfcf8384e2a255d2a1d0",
      "tree": "1fe91114d8829a511db48d757c787cfede3b929c",
      "parents": [
        "b6472776816af1ed52848c93d26e3edb3b17adab"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@novell.com",
        "time": "Tue Oct 26 14:22:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 26 16:52:13 2010 -0700"
      },
      "message": "use clear_page()/copy_page() in favor of memset()/memcpy() on whole pages\n\nAfter all that\u0027s what they are intended for.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "0157443c56bcc50be4933ebdff3ece723dfd535c",
      "tree": "248063d1c23491548e078b242600f7f9cb6c369b",
      "parents": [
        "899611ee7d373e5eeda08e9a8632684e1ebbbf00"
      ],
      "author": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Thu Sep 30 22:06:21 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Mon Oct 04 10:45:32 2010 +0200"
      },
      "message": "fuse: Initialize total_len in fuse_retrieve()\n\nfs/fuse/dev.c:1357: warning: ‘total_len’ may be used uninitialized in this\nfunction\n\nInitialize total_len to zero, else its value will be undefined.\n\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "b9ca67b2ddf021491a3741d9555e8ff59b2175ba",
      "tree": "170010fef4f0b36ff01f1f9375d9beb9677178c7",
      "parents": [
        "595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "committer": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Sep 07 13:42:41 2010 +0200"
      },
      "message": "fuse: fix lock annotations\n\nSparse doesn\u0027t understand lock annotations of the form\n__releases(\u0026foo-\u003elock).  Change them to __releases(foo-\u003elock).  Same\nfor __acquires().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    }
  ],
  "next": "595afaf9e6ee1b48e13ec4b8bcc8c7dee888161a"
}
