)]}'
{
  "log": [
    {
      "commit": "3ddcd0569cd68f00f3beae9a7959b72918bb91f4",
      "tree": "3f7c591316560b1c22e2cc0700fbcd29aa3fbd7f",
      "parents": [
        "830c0f0edca67403d361fe976a25b17356c11f19"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 06 22:45:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 06 22:53:23 2011 -0700"
      },
      "message": "vfs: optimize inode cache access patterns\n\nThe inode structure layout is largely random, and some of the vfs paths\nreally do care.  The path lookup in particular is already quite D$\nintensive, and profiles show that accessing the \u0027inode-\u003ei_op-\u003exyz\u0027\nfields is quite costly.\n\nWe already optimized the dcache to not unnecessarily load the d_op\nstructure for members that are often NULL using the DCACHE_OP_xyz bits\nin dentry-\u003ed_flags, and this does something very similar for the inode\nops that are used during pathname lookup.\n\nIt also re-orders the fields so that the fields accessed by \u0027stat\u0027 are\ntogether at the beginning of the inode structure, and roughly in the\norder accessed.\n\nThe effect of this seems to be in the 1-2% range for an empty kernel\n\"make -j\" run (which is fairly kernel-intensive, mostly in filename\nlookup), so it\u0027s visible.  The numbers are fairly noisy, though, and\nlikely depend a lot on exact microarchitecture.  So there\u0027s more tuning\nto be done.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f2ee7abf4c40c8e6bffced923a7c01ea2d1f6c97",
      "tree": "3c7ec119cf89f82737c55235ff7881ebeed9408f",
      "parents": [
        "b12362bdb61a230a67daa77bcd2a11e59b2802e1"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Jul 28 06:41:09 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 01 01:41:17 2011 -0400"
      },
      "message": "vfs: avoid taking inode_hash_lock on pipes and sockets\n\nSome inodes (pipes, sockets, ...) are not hashed, no need to take\ncontended inode_hash_lock at dismantle time.\n\nnice speedup on SMP machines on socket intensive workloads.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e371d46ae45488bcb112a99a7de462e9e3aa6764",
      "tree": "9e2eceb292018e52304053bd8013cdb0a7f31dcc",
      "parents": [
        "b0189cd087aa82bd23277cb5c8960ab030e13e5c",
        "e57712ebebbb9db7d8dcef216437b3171ddcf115"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 18:30:20 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:\n  merge fchmod() and fchmodat() guts, kill ancient broken kludge\n  xfs: fix misspelled S_IS...()\n  xfs: get rid of open-coded S_ISREG(), etc.\n  vfs: document locking requirements for d_move, __d_move and d_materialise_unique\n  omfs: fix (mode \u0026 S_IFDIR) abuse\n  btrfs: S_ISREG(mode) is not mode \u0026 S_IFREG...\n  ima: fmode_t misspelled as mode_t...\n  pci-label.c: size_t misspelled as mode_t\n  jffs2: S_ISLNK(mode \u0026 S_IFMT) is pointless\n  snd_msnd -\u003emode is fmode_t, not mode_t\n  v9fs_iop_get_acl: get rid of unused variable\n  vfs: dont chain pipe/anon/socket on superblock s_inodes list\n  Documentation: Exporting: update description of d_splice_alias\n  fs: add missing unlock in default_llseek()\n"
    },
    {
      "commit": "a209dfc7b0d94bd6fa94553c097836a2e6d0f0ba",
      "tree": "7dacc92b08264c675a0dfcbae83982b7d3ad5135",
      "parents": [
        "5b9f4567726513a359e70f85029482c7c3714dbd"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Tue Jul 26 11:36:34 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 12:57:09 2011 -0400"
      },
      "message": "vfs: dont chain pipe/anon/socket on superblock s_inodes list\n\nWorkloads using pipes and sockets hit inode_sb_list_lock contention.\n\nsuperblock s_inodes list is needed for quota, dirty, pagecache and\nfsnotify management. pipe/anon/socket fs are clearly not candidates for\nthese.\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "d3ec4844d449cf7af9e749f73ba2052fb7b72fc2",
      "tree": "c515913e85f7e50878c83da2a88bc5a7269d087c",
      "parents": [
        "0003230e8200699860f0b10af524dc47bf8aecad",
        "df2e301fee3c2c2a87592151397ad7699bb14c37"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 13:56:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 13:56:39 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: (43 commits)\n  fs: Merge split strings\n  treewide: fix potentially dangerous trailing \u0027;\u0027 in #defined values/expressions\n  uwb: Fix misspelling of neighbourhood in comment\n  net, netfilter: Remove redundant goto in ebt_ulog_packet\n  trivial: don\u0027t touch files that are removed in the staging tree\n  lib/vsprintf: replace link to Draft by final RFC number\n  doc: Kconfig: `to be\u0027 -\u003e `be\u0027\n  doc: Kconfig: Typo: square -\u003e squared\n  doc: Konfig: Documentation/power/{pm \u003d\u003e apm-acpi}.txt\n  drivers/net: static should be at beginning of declaration\n  drivers/media: static should be at beginning of declaration\n  drivers/i2c: static should be at beginning of declaration\n  XTENSA: static should be at beginning of declaration\n  SH: static should be at beginning of declaration\n  MIPS: static should be at beginning of declaration\n  ARM: static should be at beginning of declaration\n  rcu: treewide: Do not use rcu_read_lock_held when calling rcu_dereference_check\n  Update my e-mail address\n  PCIe ASPM: forcedly -\u003e forcibly\n  gma500: push through device driver tree\n  ...\n\nFix up trivial conflicts:\n - arch/arm/mach-ep93xx/dma-m2p.c (deleted)\n - drivers/gpio/gpio-ep93xx.c (renamed and context nearby)\n - drivers/net/r8169.c (just context changes)\n"
    },
    {
      "commit": "0003230e8200699860f0b10af524dc47bf8aecad",
      "tree": "8addb0c889b32111d6973c46cd3d0a5b5c17606c",
      "parents": [
        "4b478cedcdc1b2d131170f22bd3f916e53472f52",
        "4e34e719e457f2e031297175410fc0bd4016a085"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 12:53:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 12:53:15 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:\n  fs: take the ACL checks to common code\n  bury posix_acl_..._masq() variants\n  kill boilerplates around posix_acl_create_masq()\n  generic_acl: no need to clone acl just to push it to set_cached_acl()\n  kill boilerplate around posix_acl_chmod_masq()\n  reiserfs: cache negative ACLs for v1 stat format\n  xfs: cache negative ACLs if there is no attribute fork\n  9p: do no return 0 from -\u003echeck_acl without actually checking\n  vfs: move ACL cache lookup into generic code\n  CIFS: Fix oops while mounting with prefixpath\n  xfs: Fix wrong return value of xfs_file_aio_write\n  fix devtmpfs race\n  caam: don\u0027t pass bogus S_IFCHR to debugfs_create_...()\n  get rid of create_proc_entry() abuses - proc_mkdir() is there for purpose\n  asus-wmi: -\u003eis_visible() can\u0027t return negative\n  fix jffs2 ACLs on big-endian with 16bit mode_t\n  9p: close ACL leaks\n  ocfs2_init_acl(): fix a leak\n  VFS : mount lock scalability for internal mounts\n"
    },
    {
      "commit": "4e34e719e457f2e031297175410fc0bd4016a085",
      "tree": "ab969a371e0d2efc6bfbf503ca6cdfce3af3bf6c",
      "parents": [
        "edde854e8bb34a7f32fa993d721f1da0faf64165"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Jul 23 17:37:31 2011 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 14:30:23 2011 -0400"
      },
      "message": "fs: take the ACL checks to common code\n\nReplace the -\u003echeck_acl method with a -\u003eget_acl method that simply reads an\nACL from disk after having a cache miss.  This means we can replace the ACL\nchecking boilerplate code with a single implementation in namei.c.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "096a705bbc080a4041636d07514560da8d78acbe",
      "tree": "38c3c01225709ffa53419083ea6332f8a72610de",
      "parents": [
        "fea80311a939a746533a6d7e7c3183729d6a3faf",
        "5757a6d76cdf6dda2a492c09b985c015e86779b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 25 10:33:36 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.1/core\u0027 of git://git.kernel.dk/linux-block: (24 commits)\n  block: strict rq_affinity\n  backing-dev: use synchronize_rcu_expedited instead of synchronize_rcu\n  block: fix patch import error in max_discard_sectors check\n  block: reorder request_queue to remove 64 bit alignment padding\n  CFQ: add think time check for group\n  CFQ: add think time check for service tree\n  CFQ: move think time check variables to a separate struct\n  fixlet: Remove fs_excl from struct task.\n  cfq: Remove special treatment for metadata rqs.\n  block: document blk_plug list access\n  block: avoid building too big plug list\n  compat_ioctl: fix make headers_check regression\n  block: eliminate potential for infinite loop in blkdev_issue_discard\n  compat_ioctl: fix warning caused by qemu\n  block: flush MEDIA_CHANGE from drivers on close(2)\n  blk-throttle: Make total_nr_queued unsigned\n  block: Add __attribute__((format(printf...) and fix fallout\n  fs/partitions/check.c: make local symbols static\n  block:remove some spare spaces in genhd.c\n  block:fix the comment error in blkdev.h\n  ...\n"
    },
    {
      "commit": "423e0ab086ad8b33626e45fa94ac7613146b7ffa",
      "tree": "249c9337a02254fe5dbede7436f78dfcc1ec508f",
      "parents": [
        "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff"
      ],
      "author": {
        "name": "Tim Chen",
        "email": "tim.c.chen@linux.intel.com",
        "time": "Tue Jul 19 09:32:38 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 10:08:32 2011 -0400"
      },
      "message": "VFS : mount lock scalability for internal mounts\n\nFor a number of file systems that don\u0027t have a mount point (e.g. sockfs\nand pipefs), they are not marked as long term. Therefore in\nmntput_no_expire, all locks in vfs_mount lock are taken instead of just\nlocal cpu\u0027s lock to aggregate reference counts when we release\nreference to file objects.  In fact, only local lock need to have been\ntaken to update ref counts as these file systems are in no danger of\ngoing away until we are ready to unregister them.\n\nThe attached patch marks file systems using kern_mount without\nmount point as long term.  The contentions of vfs_mount lock\nis now eliminated.  Before un-registering such file system,\nkern_unmount should be called to remove the long term flag and\nmake the mount point ready to be freed.\n\nSigned-off-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ed70afcd6e795e3de98df56f1cd0f898fbf641a7",
      "tree": "7d81e3e3e6b30fe8025d45aa6b81ea553095e701",
      "parents": [
        "295cc522c2b2834b302424e41ebb5846df6d61bd"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Thu Jul 21 13:55:37 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jul 22 19:41:19 2011 -0400"
      },
      "message": "mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n\nFix build error when CONFIG_BLOCK is not enabled by providing a stub\ninode_dio_wait() function.\n\nmm/truncate.c:612: error: implicit declaration of function \u0027inode_dio_wait\u0027\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "295cc522c2b2834b302424e41ebb5846df6d61bd",
      "tree": "b96c1f81f5f10695dc24ea54ec5bc12a94c844be",
      "parents": [
        "86c98e8cdb21ff4628f4d48559ab6e006380fa4b"
      ],
      "author": {
        "name": "Wanlong Gao",
        "email": "gaowanlong@cn.fujitsu.com",
        "time": "Tue Jul 19 09:48:39 2011 +0800"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:48:05 2011 -0400"
      },
      "message": "fs:update the NOTE of the file_operations structure\n\nBig kernel lock had been removed and setlease now use the lock_flocks()\nto hold a special spin lock file_lock_lock by Matthew.\nSo just remove the out-of-date NOTE.\n\nSigned-off-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\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": "982d816581eeeacfe5b2b7c6d47d13a157616eff",
      "tree": "1f1cb5725646e9de13969c8894b26ab3d5e3102e",
      "parents": [
        "b4d5b10fb2e3a4327838c07d8ebd9e350fcc133d"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Mon Jul 18 13:21:35 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:56 2011 -0400"
      },
      "message": "fs: add SEEK_HOLE and SEEK_DATA flags\n\nThis just gets us ready to support the SEEK_HOLE and SEEK_DATA flags.  Turns out\nusing fiemap in things like cp cause more problems than it solves, so lets try\nand give userspace an interface that doesn\u0027t suck.  We need to match solaris\nhere, and the definitions are\n\n*o* If /whence/ is SEEK_HOLE, the offset of the start of the\nnext hole greater than or equal to the supplied offset\nis returned. The definition of a hole is provided near\nthe end of the DESCRIPTION.\n\n*o* If /whence/ is SEEK_DATA, the file pointer is set to the\nstart of the next non-hole file region greater than or\nequal to the supplied offset.\n\nSo in the generic case the entire file is data and there is a virtual hole at\nthe end.  That means we will just return i_size for SEEK_HOLE and will return\nthe same offset for SEEK_DATA.  This is how Solaris does it so we have to do it\nthe same way.\n\nThanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aacfc19c626ebd3daa675652457d71019a1f583f",
      "tree": "9c1cfb5945e939f1ba56b4c0101c211e84e544c0",
      "parents": [
        "df2d6f26586f12a24f3ae5df4e236dc5c08d6eb4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:47 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:49 2011 -0400"
      },
      "message": "fs: simplify the blockdev_direct_IO prototype\n\nSimple filesystems always pass inode-\u003ei_sb_bdev as the block device\nargument, and never need a end_io handler.  Let\u0027s simply things for\nthem and for my grepping activity by dropping these arguments.  The\nonly thing not falling into that scheme is ext4, which passes and\nend_io handler without needing special flags (yet), but given how\nmessy the direct I/O code there is use of __blockdev_direct_IO\nin one instead of two out of three cases isn\u0027t going to make a large\ndifference anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "bd5fe6c5eb9c548d7f07fe8f89a150bb6705e8e3",
      "tree": "ef5341c7747f809aec7ae233f6e3ef90af39be5f",
      "parents": [
        "f9b5570d7fdedff32a2e78102bfb54cd1b12b289"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Jun 24 14:29:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:46 2011 -0400"
      },
      "message": "fs: kill i_alloc_sem\n\ni_alloc_sem is a rather special rw_semaphore.  It\u0027s the last one that may\nbe released by a non-owner, and it\u0027s write side is always mirrored by\nreal exclusion.  It\u0027s intended use it to wait for all pending direct I/O\nrequests to finish before starting a truncate.\n\nReplace it with a hand-grown construct:\n\n - exclusion for truncates is already guaranteed by i_mutex, so it can\n   simply fall way\n - the reader side is replaced by an i_dio_count member in struct inode\n   that counts the number of pending direct I/O requests.  Truncate can\u0027t\n   proceed as long as it\u0027s non-zero\n - when i_dio_count reaches non-zero we wake up a pending truncate using\n   wake_up_bit on a new bit in i_flags\n - new references to i_dio_count can\u0027t appear while we are waiting for\n   it to read zero because the direct I/O count always needs i_mutex\n   (or an equivalent like XFS\u0027s i_iolock) for starting a new operation.\n\nThis scheme is much simpler, and saves the space of a spinlock_t and a\nstruct list_head in struct inode (typically 160 bits on a non-debug 64-bit\nsystem).\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0e1fdafd93980eac62e778798549ce0f6073905c",
      "tree": "a8b21525d195d436fa738e9a470e64eaa21e6736",
      "parents": [
        "4f8c19fdf3f97402b68f058b1c72a6c7166c9e59"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:44 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:41 2011 -0400"
      },
      "message": "superblock: add filesystem shrinker operations\n\nNow we have a per-superblock shrinker implementation, we can add a\nfilesystem specific callout to it to allow filesystem internal\ncaches to be shrunk by the superblock shrinker.\n\nRather than perpetuate the multipurpose shrinker callback API (i.e.\nnr_to_scan \u003d\u003d 0 meaning \"tell me how many objects freeable in the\ncache), two operations will be added. The first will return the\nnumber of objects that are freeable, the second is the actual\nshrinker call.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0d40c92adafde7c2d81203ce7c1c69275f41140",
      "tree": "f75a19dcd1a37aff23dc43323b58f014b1297c6b",
      "parents": [
        "12ad3ab66103e6582ca69c0c9de18b13487eaaef"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:42 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:10 2011 -0400"
      },
      "message": "superblock: introduce per-sb cache shrinker infrastructure\n\nWith context based shrinkers, we can implement a per-superblock\nshrinker that shrinks the caches attached to the superblock. We\ncurrently have global shrinkers for the inode and dentry caches that\nsplit up into per-superblock operations via a coarse proportioning\nmethod that does not batch very well.  The global shrinkers also\nhave a dependency - dentries pin inodes - so we have to be very\ncareful about how we register the global shrinkers so that the\nimplicit call order is always correct.\n\nWith a per-sb shrinker callout, we can encode this dependency\ndirectly into the per-sb shrinker, hence avoiding the need for\nstrictly ordering shrinker registrations. We also have no need for\nany proportioning code for the shrinker subsystem already provides\nthis functionality across all shrinkers. Allowing the shrinker to\noperate on a single superblock at a time means that we do less\nsuperblock list traversals and locking and reclaim should batch more\neffectively. This should result in less CPU overhead for reclaim and\npotentially faster reclaim of items from each filesystem.\n\nSigned-off-by: Dave Chinner \u003cdchinner@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": "09cc9fc7a7c3d872065426d7fb0f0ad6d3eb90fc",
      "tree": "79f6f835dd009ac34bd35ee3ee61e616ec2b255a",
      "parents": [
        "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:40 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:36 2011 -0400"
      },
      "message": "inode: move to per-sb LRU locks\n\nWith the inode LRUs moving to per-sb structures, there is no longer\na need for a global inode_lru_lock. The locking can be made more\nfine-grained by moving to a per-sb LRU lock, isolating the LRU\noperations of different filesytsems completely from each other.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "98b745c647a5a90c3c21ea43cbfad9a47b0dfad7",
      "tree": "08917a620b6d15076223c1ef75996a1a76a13abd",
      "parents": [
        "fcb94f72d3e0f4f34b326c2986da8e5996daf72c"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Fri Jul 08 14:14:39 2011 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:35 2011 -0400"
      },
      "message": "inode: Make unused inode LRU per superblock\n\nThe inode unused list is currently a global LRU. This does not match\nthe other global filesystem cache - the dentry cache - which uses\nper-superblock LRU lists. Hence we have related filesystem object\ntypes using different LRU reclaimation schemes.\n\nTo enable a per-superblock filesystem cache shrinker, both of these\ncaches need to have per-sb unused object LRU lists. Hence this patch\nconverts the global inode LRU to per-sb LRUs.\n\nThe patch only does rudimentary per-sb propotioning in the shrinker\ninfrastructure, as this gets removed when the per-sb shrinker\ncallouts are introduced later on.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0ee5dc676a5f8fadede608c7281dfedb1ae714ea",
      "tree": "887896f0e1b51f39e9be21a1e8d960ec50a817a7",
      "parents": [
        "fb408e6ccc32404a05783911b6f3fed56bd17b06"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jul 07 15:44:25 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:44:20 2011 -0400"
      },
      "message": "btrfs: kill magical embedded struct superblock\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "729cdb3a1ee03a4363f9c7e66ddd979727e99e1f",
      "tree": "6b2e6947e1f58ebcb1aaa2a0f0710ae1fb2d6a1d",
      "parents": [
        "76fe3276be26cff2e609cdcfbc1265cf1dd72b2c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 21 01:01:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:36 2011 -0400"
      },
      "message": "kill IPERM_FLAG_RCU\n\nnot used anymore\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": "7e40145eb111a5192e6d819f764db9d6828d1abb",
      "tree": "3249952a751de12465e8d66c63328445e9242f3a",
      "parents": [
        "9c2c703929e4c41210cfa6e3f599514421bab8dc"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 19:12:17 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:21 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: don\u0027t pass flags to -\u003echeck_acl()\n\nnot used in the instances anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1fc0f78ca9f311c6277e2f1b7655bb4d43ceb311",
      "tree": "9c6a5879558b7a189f94eae97ac80268e63fe29b",
      "parents": [
        "178ea73521d64ba41d7aa5488fb9f549c6d4507d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 18:59:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:18 2011 -0400"
      },
      "message": "-\u003epermission() sanitizing: MAY_NOT_BLOCK\n\nDuplicate the flags argument into mask bitmap.\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": "07b8ce1ee87d291ff564c02cf878fae973317a52",
      "tree": "94f07ed2b5d18aef71f1b28193375f88c0c947bc",
      "parents": [
        "f4d6ff89d8e54b68a4322388d26d518d6133fa4e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:52:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:14 2011 -0400"
      },
      "message": "lockless get_write_access/deny_write_access\n\nnew helpers: atomic_inc_unless_negative()/atomic_dec_unless_positive()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3bfa784a6539f91a27d7ffdd408efdb638e3bebd",
      "tree": "2fb293076c98a4bbc18fd2ddad7fdc4cea08c384",
      "parents": [
        "1b5d783c94c328d406e801566f161adcfb018dda"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 19 12:55:10 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:11 2011 -0400"
      },
      "message": "kill file_permission() completely\n\nconvert the last remaining caller to inode_permission()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "43e15cdbefea4ce6d68113de98d4f61c0cf45687",
      "tree": "75676aae179fc56bbb9d861c0ab656a9edaa7ca4",
      "parents": [
        "44396f4b5cb8566f7118aec55eeac99be7ad94cb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jun 03 20:16:57 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 01:43:04 2011 -0400"
      },
      "message": "new helper: iterate_supers_type()\n\nCall the given function for all superblocks of given type.  Function\ngets a superblock (with s_umount locked shared) and (void *) argument\nsupplied by caller of iterator.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4aede84b33d6beb401136a3deca0651ae07c5e99",
      "tree": "831266dbb15227584da5011ae4bb1e5038a69677",
      "parents": [
        "a07405b7802691d29ab3b23bdc76ee6d006aad0b"
      ],
      "author": {
        "name": "Justin TerAvest",
        "email": "teravest@google.com",
        "time": "Tue Jul 12 08:31:45 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Jul 12 08:35:10 2011 +0200"
      },
      "message": "fixlet: Remove fs_excl from struct task.\n\nfs_excl is a poor man\u0027s priority inheritance for filesystems to hint to\nthe block layer that an operation is important. It was never clearly\nspecified, not widely adopted, and will not prevent starvation in many\ncases (like across cgroups).\n\nfs_excl was introduced with the time sliced CFQ IO scheduler, to\nindicate when a process held FS exclusive resources and thus needed\na boost.\n\nIt doesn\u0027t cover all file systems, and it was never fully complete.\nLets kill it.\n\nSigned-off-by: Justin TerAvest \u003cteravest@google.com\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "b7e9c223be8ce335e30f2cf6ba588e6a4092275c",
      "tree": "2d1e3b75606abc18df7ad65e51ac3f90cd68b38d",
      "parents": [
        "c172d82500a6cf3c32d1e650722a1055d72ce858",
        "e3bbfa78bab125f58b831b5f7f45b5a305091d72"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Jul 11 14:15:48 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Jul 11 14:15:55 2011 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n\nSync with Linus\u0027 tree to be able to apply pending patches that\nare based on newer code already present upstream.\n"
    },
    {
      "commit": "08142579b6ca35883c1ed066a2681de6f6917062",
      "tree": "00735ed37753533f3b645714770b4fb036b5f7e0",
      "parents": [
        "9b679320a5fbf46454011e5c62e0b8991b0956d1"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Jun 27 16:18:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 27 18:00:13 2011 -0700"
      },
      "message": "mm: fix assertion mapping-\u003enrpages \u003d\u003d 0 in end_writeback()\n\nUnder heavy memory and filesystem load, users observe the assertion\nmapping-\u003enrpages \u003d\u003d 0 in end_writeback() trigger.  This can be caused by\npage reclaim reclaiming the last page from a mapping in the following\nrace:\n\n\tCPU0\t\t\t\tCPU1\n  ...\n  shrink_page_list()\n    __remove_mapping()\n      __delete_from_page_cache()\n        radix_tree_delete()\n\t\t\t\t\tevict_inode()\n\t\t\t\t\t  truncate_inode_pages()\n\t\t\t\t\t    truncate_inode_pages_range()\n\t\t\t\t\t      pagevec_lookup() - finds nothing\n\t\t\t\t\t  end_writeback()\n\t\t\t\t\t    mapping-\u003enrpages !\u003d 0 -\u003e BUG\n        page-\u003emapping \u003d NULL\n        mapping-\u003enrpages--\n\nFix the problem by doing a reliable check of mapping-\u003enrpages under\nmapping-\u003etree_lock in end_writeback().\n\nAnalyzed by Jay \u003cjinshan.xiong@whamcloud.com\u003e, lost in LKML, and dug out\nby Miklos Szeredi \u003cmszeredi@suse.de\u003e.\n\nCc: Jay \u003cjinshan.xiong@whamcloud.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\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": "79568f5be06c91071697c065f01f3ebfbeb25a61",
      "tree": "81fc2bb54bebffc7ef22390bfc37c7ba818a30df",
      "parents": [
        "f5fc5567dd24c15b1d95aa9ee2aaada04d835a0c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 20 20:13:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jun 20 20:13:49 2011 -0700"
      },
      "message": "vfs: i_state needs to be \u0027unsigned long\u0027 for now\n\nCommit 13e12d14e2dc (\"vfs: reorganize \u0027struct inode\u0027 layout a bit\")\nmoved things around a bit changed i_state to be unsigned int instead of\nunsigned long.  That was to help structure layout for the 64-bit case,\nand shrink \u0027struct inode\u0027 a bit (admittedly that only happened when\nspinlock debugging was on and i_flags didn\u0027t pack with i_lock).\n\nHowever, Meelis Roos reports that this results in unaligned exceptions\non sprc, and it turns out that the bit-locking primitives that we use\nfor the I_NEW bit want to use the bitops.  Which want \u0027unsigned long\u0027,\nnot \u0027unsigned int\u0027.\n\nWe really should fix the bit locking code to not have that kind of\nrequirement, but that\u0027s a much bigger change.  So for now, revert that\nfield back to \u0027unsigned long\u0027 (but keep the other re-ordering changes\nfrom the commit that caused this).\n\nAndi points out that we have played games with this in \u0027struct page\u0027, so\nit\u0027s solvable with other hacks too, but since right now the struct inode\nsize advantage only happens with some rare config options, it\u0027s not\nworth fighting.\n\nIt _would_ be worth fixing the bitlocking code, though.  Especially\nsince there is no type safety in the bitlocking code (this never caused\nany warnings, and worked fine on x86-64, because the bitlocks take a\n\u0027void *\u0027 and x86-64 doesn\u0027t care that deeply about alignment).  So it\u0027s\ncurrently a very easy problem to trigger by mistake and never notice.\n\nReported-by: Meelis Roos \u003cmroos@linux.ee\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e44ba033c5654dbfda53461c9b1f7dd9bd1d198f",
      "tree": "92654523983a855e466a332e104c0e51550a642d",
      "parents": [
        "1816315b10862277a961a70ec394b6607983041d"
      ],
      "author": {
        "name": "Vitaliy Ivanov",
        "email": "vitalivanov@gmail.com",
        "time": "Mon Jun 20 16:08:07 2011 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Jun 20 16:08:19 2011 +0200"
      },
      "message": "treewide: remove duplicate includes\n\nMany stupid corrections of duplicated includes based on the output of\nscripts/checkincludes.pl.\n\nSigned-off-by: Vitaliy Ivanov \u003cvitalivanov@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "13e12d14e2dccc7995b8f15a5678a338ab4e6a8c",
      "tree": "d0fc2752fc71d30710a909516d5317b2c7bb8b96",
      "parents": [
        "95f4efb2d78661065aaf0be57f5bf00e4d2aea1d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 08 15:18:19 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 08 15:18:19 2011 -0700"
      },
      "message": "vfs: reorganize \u0027struct inode\u0027 layout a bit\n\nThis tries to make the \u0027struct inode\u0027 accesses denser in the data cache\nby moving a commonly accessed field (i_security) closer to other fields\nthat are accessed often.\n\nIt also makes \u0027i_state\u0027 just an \u0027unsigned int\u0027 rather than \u0027unsigned\nlong\u0027, since we only use a few bits of that field, and moves it next to\nthe existing \u0027i_flags\u0027 so that we potentially get better structure\nlayout (although depending on config options, i_flags may already have\npacked in the same word as i_lock, so this improves packing only for the\ncase of spinlock debugging)\n\nOut \u0027struct inode\u0027 is still way too big, and we should probably move\nsome other fields around too (the acl fields in particular) for better\ndata cache access density.  Other fields (like the inode hash) are\nlikely to be entirely irrelevant under most loads.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\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": "69b4573296469fd3f70cf7044693074980517067",
      "tree": "aea41eacb2a0f32748145a59bb8dc300b4485f36",
      "parents": [
        "d76ee18a8551e33ad7dbd55cac38bc7b094f3abb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Sat May 28 08:25:51 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 12:02:09 2011 -0400"
      },
      "message": "Cache xattr security drop check for write v2\n\nSome recent benchmarking on btrfs showed that a major scaling bottleneck\non large systems on btrfs is currently the xattr lookup on every write.\n\nWhy xattr lookup on every write I hear you ask?\n\nwrite wants to drop suid and security related xattrs that could set o\ncapabilities for executables.  To do that it currently looks up\nsecurity.capability on EVERY write (even for non executables) to decide\nwhether to drop it or not.\n\nIn btrfs this causes an additional tree walk, hitting some per file system\nlocks and quite bad scalability. In a simple read workload on a 8S\nsystem I saw over 90% CPU time in spinlocks related to that.\n\nChris Mason tells me this is also a problem in ext4, where it hits\nthe global mbcache lock.\n\nThis patch adds a simple per inode to avoid this problem.  We only\ndo the lookup once per file and then if there is no xattr cache\nthe decision. All xattr changes clear the flag.\n\nI also used the same flag to avoid the suid check, although\nthat one is pretty cheap.\n\nA file system can also set this flag when it creates the inode,\nif it has a cheap way to do so.  This is done for some common file systems\nin followon patches.\n\nWith this patch a major part of the lock contention disappears\nfor btrfs. Some testing on smaller systems didn\u0027t show significant\nperformance changes, but at least it helps the larger systems\nand is generally more efficient.\n\nv2: Rename is_sgid. add file system helper.\nCc: chris.mason@oracle.com\nCc: josef@redhat.com\nCc: viro@zeniv.linux.org.uk\nCc: agruen@linbit.com\nCc: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8d613e2a665bf1be9628a3c3f9bafe7599b32c0",
      "tree": "98d4da8d0e1a5fb1d9064626b4b96d95ccf26375",
      "parents": [
        "8a0599dd2471f2a2e409498c08a0ab339057ad06",
        "5bc20fc59706214d9591c11e1938a629d3538c12"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 10:50:56 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djm/tmem:\n  xen: cleancache shim to Xen Transcendent Memory\n  ocfs2: add cleancache support\n  ext4: add cleancache support\n  btrfs: add cleancache support\n  ext3: add cleancache support\n  mm/fs: add hooks to support cleancache\n  mm: cleancache core ops functions and config\n  fs: add field to superblock to support cleancache\n  mm/fs: cleancache documentation\n\nFix up trivial conflict in fs/btrfs/extent_io.c due to includes\n"
    },
    {
      "commit": "9fdfdcf17151e8326c4d18cc133abc6e58f47568",
      "tree": "585277f9a112ccf0c7527d4c302f17d3c852814b",
      "parents": [
        "4fe4746ab694690af9f2ccb80184f5c575917c7f"
      ],
      "author": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:19 2011 -0600"
      },
      "committer": {
        "name": "Dan Magenheimer",
        "email": "dan.magenheimer@oracle.com",
        "time": "Thu May 26 10:01:19 2011 -0600"
      },
      "message": "fs: add field to superblock to support cleancache\n\nThis second patch of eight in this cleancache series adds a field to\nthe generic superblock to squirrel away a pool identifier that is\ndynamically provided by cleancache-enabled filesystems at mount time\nto uniquely identify files and pages belonging to this mounted filesystem.\n\nDetails and a FAQ can be found in Documentation/vm/cleancache.txt\n\n[v8: trivial merge conflict update]\nSigned-off-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\nReviewed-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik Van Riel \u003criel@redhat.com\u003e\nCc: Jan Beulich \u003cJBeulich@novell.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Ted Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\n"
    },
    {
      "commit": "0ac1ee0bfec2a4ad118f907ce586d0dfd8db7641",
      "tree": "630d3fead5040b26bfdb1328a18fc0ad3b09f88b",
      "parents": [
        "db271cf03f5fe39feab8e1b1818c0880c7290c5c"
      ],
      "author": {
        "name": "Tim Gardner",
        "email": "tim.gardner@canonical.com",
        "time": "Tue May 24 17:13:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:43 2011 -0700"
      },
      "message": "ulimit: raise default hard ulimit on number of files to 4096\n\nApps are increasingly using more than 1024 file descriptors.  See\ndiscussion in several distro bug trackers, e.g.  BugLink:\nhttp://bugs.launchpad.net/bugs/663090\nhttps://issues.rpath.com/browse/RPL-2054\n\nYou don\u0027t want to raise the default soft limit, since that might break\napps that use select(), but it\u0027s safe to raise the default hard limit;\nthat way, apps that know they need lots of file descriptors can raise\ntheir soft limit without needing root, and without user intervention.\n\nUbuntu is doing this with a kernel change because they have a policy of\nnot changing kernel defaults in userland.\n\nWhile 4096 might not be enough for *all* apps, it seems to be plenty for\nthe apps I\u0027ve seen lately that are unhappy with 1024.\n\nSigned-off-by: Tim Gardner \u003ctim.gardner@canonical.com\u003e\nCc: Dan Kegel \u003cdank@kegel.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d48ae45e72390ddf8cc5256ac32ed6f7a19cbea",
      "tree": "1f46db3a8424090dd8e0b58991fa5acc1a73e680",
      "parents": [
        "97a894136f29802da19a15541de3c019e1ca147e"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:12:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:18 2011 -0700"
      },
      "message": "mm: Convert i_mmap_lock to a mutex\n\nStraightforward conversion of i_mmap_lock to a mutex.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "97a894136f29802da19a15541de3c019e1ca147e",
      "tree": "1fd3f92ba92a37d5d8527a1f41458091d0a944dc",
      "parents": [
        "e4c70a6629f9c74c4b0de258a3951890e9047c82"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 24 17:12:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 25 08:39:17 2011 -0700"
      },
      "message": "mm: Remove i_mmap_lock lockbreak\n\nHugh says:\n \"The only significant loser, I think, would be page reclaim (when\n  concurrent with truncation): could spin for a long time waiting for\n  the i_mmap_mutex it expects would soon be dropped? \"\n\nCounter points:\n - cpu contention makes the spin stop (need_resched())\n - zap pages should be freeing pages at a higher rate than reclaim\n   ever can\n\nI think the simplification of the truncate code is definitely worth it.\n\nEffectively reverts: 2aa15890f3c (\"mm: prevent concurrent\nunmap_mapping_range() on the same inode\") and takes out the code that\ncaused its problem.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Tony Luck \u003ctony.luck@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@kernel.dk\u003e\nCc: Namhyung Kim \u003cnamhyung@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": "eed631e0d741d1a1067cfc6d709fdf2363126f9c",
      "tree": "31ba02472a8d5ef2d7780274a7663258c09a9acf",
      "parents": [
        "bd1a643e10eb8782b36b47c3602300319dd2fb00",
        "ebcb904dfe31644857422e3bb62e50f76fe86255"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 15 10:22:10 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: fix FS_IOC_SETFLAGS ioctl\n  Btrfs: fix FS_IOC_GETFLAGS ioctl\n  fs: remove FS_COW_FL\n  Btrfs: fix easily get into ENOSPC in mixed case\n  Prevent oopsing in posix_acl_valid()\n"
    },
    {
      "commit": "e1e8fb6a1ff3f9487e03a4cbf85b81d1316068ce",
      "tree": "a7cd1ba1f93d163e2ca02b8172888f43e444713f",
      "parents": [
        "1aba86d67f340a8001d67183ec32e8a62e3ec658"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Apr 15 03:02:49 2011 +0000"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Sat May 14 16:10:26 2011 -0400"
      },
      "message": "fs: remove FS_COW_FL\n\nFS_COW_FL and FS_NOCOW_FL were newly introduced to control per file\nCOW in btrfs, but FS_NOCOW_FL is sufficient.\n\nThe fact is we don\u0027t have corresponding BTRFS_INODE_COW flag.\n\nCOW is default, and FS_NOCOW_FL can be used to switch off COW for\na single file.\n\nIf we mount btrfs with nodatacow, a newly created file will be set with\nthe FS_NOCOW_FL flag. So to turn on COW for it, we can just clear the\nFS_NOCOW_FL flag.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "0bba01695b74fdd2f9286243bb39f88544d81401",
      "tree": "dc5d4af6a7930138c09598a81a64dd3e57344f7c",
      "parents": [
        "e328f05dd6c528fcc9eb6da157dd865dfe611352"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 12 15:21:04 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 12 15:21:04 2011 -0700"
      },
      "message": "vfs: Re-introduce s_uuid in the superblock\n\nGaah.  When commit be85bccaa5aa reverted the export of file system uuid\nvia /proc/\u003cpid\u003e/mountinfo, it also unintentionally removed the s_uuid\nfield in struct super_block.\n\nI didn\u0027t mean to do that, since filesystems have been taught to fill it\nin (and we want to keep it for future re-introduction in the mountinfo\nfile).\n\nStupid of me. This adds it back in.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "be85bccaa5aa5a11dcaf85f9e945ffefd253f631",
      "tree": "342a0c1529d077ec499f62dfa01ff4697387f1ab",
      "parents": [
        "16ad56972ca3161eb97583897f17c1ead0c4ebd0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 12 13:35:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 12 13:35:56 2011 -0700"
      },
      "message": "Revert \"vfs: Export file system uuid via /proc/\u003cpid\u003e/mountinfo\"\n\nThis reverts commit 93f1c20bc8cdb757be50566eff88d65c3b26881f.\n\nIt turns out that libmount misparses it because it adds a \u0027-\u0027 character\nin the uuid string, which libmount then incorrectly confuses with the\nseparator string (\" - \") at the end of all the optional arguments.\n\nUpstream libmount (in the util-linux tree) has been fixed, but until\nthat fix actually percolates up to users, we\u0027d better not expose this\nchange in the kernel.\n\nLet\u0027s revisit this later (possibly by exposing the UUID without any \u0027-\u0027\ncharacters in it, avoiding the user-space bug).\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Karel Zak \u003ckzak@redhat.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "7dcda1c96d7c643101d4a05579ef4512a4baa7ef",
      "tree": "62051d63c47a3df7381cdc294815e79da5ebdc93",
      "parents": [
        "929e27252e8ca69363f81f26af5eaba62cb4c572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "message": "fs: export empty_aops\n\nWith the -\u003esync_page() hook gone, we have a few users that\nadd their own static address_space_operations without any\nfunctions defined.\n\nfs/inode.c already has an empty_aops that it uses for init\npurposes. Lets export that and use it in the places where\nan otherwise empty aops was defined.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\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": "212a17ab878305600e607f637d2d8a49d9f7ef25",
      "tree": "64ad97fcc3d5c49ebd735f5508643c798aeecddf",
      "parents": [
        "baaca1a61497d97cec595fedce03b0a23b983e64",
        "d9d04879321af570ea7285c6dad92d9c3cd108a1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 28 15:31:05 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* \u0027for-linus-unmerged\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: (45 commits)\n  Btrfs: fix __btrfs_map_block on 32 bit machines\n  btrfs: fix possible deadlock by clearing __GFP_FS flag\n  btrfs: check link counter overflow in link(2)\n  btrfs: don\u0027t mess with i_nlink of unlocked inode in rename()\n  Btrfs: check return value of btrfs_alloc_path()\n  Btrfs: fix OOPS of empty filesystem after balance\n  Btrfs: fix memory leak of empty filesystem after balance\n  Btrfs: fix return value of setflags ioctl\n  Btrfs: fix uncheck memory allocations\n  btrfs: make inode ref log recovery faster\n  Btrfs: add btrfs_trim_fs() to handle FITRIM\n  Btrfs: adjust btrfs_discard_extent() return errors and trimmed bytes\n  Btrfs: make btrfs_map_block() return entire free extent for each device of RAID0/1/10/DUP\n  Btrfs: make update_reserved_bytes() public\n  btrfs: return EXDEV when linking from different subvolumes\n  Btrfs: Per file/directory controls for COW and compression\n  Btrfs: add datacow flag in inode flag\n  btrfs: use GFP_NOFS instead of GFP_KERNEL\n  Btrfs: check return value of read_tree_block()\n  btrfs: properly access unaligned checksum buffer\n  ...\n\nFix up trivial conflicts in fs/btrfs/volumes.c due to plug removal in\nthe block layer.\n"
    },
    {
      "commit": "32471f6e1983922473573da62cbee58699574aa4",
      "tree": "64f17f694f86f72c6d847d6dceb9eb5f78c20a45",
      "parents": [
        "fc0e4a314e361af3b13d9320e92c64118f9a3e61"
      ],
      "author": {
        "name": "liubo",
        "email": "liubo2009@cn.fujitsu.com",
        "time": "Mon Mar 21 08:54:27 2011 +0000"
      },
      "committer": {
        "name": "root",
        "email": "Chris Mason chris.mason@oracle.com",
        "time": "Mon Mar 28 05:37:40 2011 -0400"
      },
      "message": "Btrfs: add datacow flag in inode flag\n\nFor datacow control, the corresponding inode flags are needed.\nThis is for btrfs use.\n\nv1-\u003ev2:\nChange FS_COW_FL to another bit due to conflict with the upstream e2fsprogs\n\nSigned-off-by: Liu Bo \u003cliubo2009@cn.fujitsu.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "d39dd11c3e6a7af5c20bfac40594db36cf270f42",
      "tree": "6384e07fa2f347b286cde9754c4507b5a738ab47",
      "parents": [
        "30f5b28e7f937608e0407edaa459cc8161de81d9",
        "0b2d0724e26a335cd326eb7ad552c109116a8795"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 19:01:30 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 19:01:30 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:\n  fs: simplify iget \u0026 friends\n  fs: pull inode-\u003ei_lock up out of writeback_single_inode\n  fs: rename inode_lock to inode_hash_lock\n  fs: move i_wb_list out from under inode_lock\n  fs: move i_sb_list out from under inode_lock\n  fs: remove inode_lock from iput_final and prune_icache\n  fs: Lock the inode LRU list separately\n  fs: factor inode disposal\n  fs: protect inode-\u003ei_state with inode-\u003ei_lock\n  autofs4: Do not potentially dereference NULL pointer returned by fget() in autofs_dev_ioctl_setpipefd()\n  autofs4 - remove autofs4_lock\n  autofs4 - fix d_manage() return on rcu-walk\n  autofs4 - fix autofs4_expire_indirect() traversal\n  autofs4 - fix dentry leak in autofs4_expire_direct()\n  autofs4 - reinstate last used update on access\n  vfs - check non-mountpoint dentry might block in __follow_mount_rcu()\n"
    },
    {
      "commit": "250df6ed274d767da844a5d9f05720b804240197",
      "tree": "b74f49a86c4451d9e3e82f90e3f791163025be21",
      "parents": [
        "3dc8fe4dca9cd3e4aa828ed36451e2bcfd2350da"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 22 22:23:36 2011 +1100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 24 21:16:31 2011 -0400"
      },
      "message": "fs: protect inode-\u003ei_state with inode-\u003ei_lock\n\nProtect inode state transitions and validity checks with the\ninode-\u003ei_lock. This enables us to make inode state transitions\nindependently of the inode_lock and is the first step to peeling\naway the inode_lock from the code.\n\nThis requires that __iget() is done atomically with i_state checks\nduring list traversals so that we don\u0027t race with another thread\nmarking the inode I_FREEING between the state check and grabbing the\nreference.\n\nAlso remove the unlock_new_inode() memory barrier optimisation\nrequired to avoid taking the inode_lock when clearing I_NEW.\nSimplify the code by simply taking the inode-\u003ei_lock around the\nstate change and wakeup. Because the wakeup is no longer tricky,\nremove the wake_up_inode() function and open code the wakeup where\nnecessary.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\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": "2e1496707560ecf98e9b0604622c0990f94861d3",
      "tree": "d1473b70fad31a903fedc87221680678a6c6c5f6",
      "parents": [
        "e795b71799ff0b27365020c9ddaa25d0d83f99c8"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:13 2011 -0700"
      },
      "message": "userns: rename is_owner_or_cap to inode_owner_or_capable\n\nAnd give it a kernel-doc comment.\n\n[akpm@linux-foundation.org: btrfs changed in linux-next]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e795b71799ff0b27365020c9ddaa25d0d83f99c8",
      "tree": "f3b628c2366f181380a8fbcd490910eb086a7b8e",
      "parents": [
        "b0e77598f87107001a00b8a4ece9c95e4254ccc4"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:08 2011 -0700"
      },
      "message": "userns: userns: check user namespace for task-\u003efile uid equivalence checks\n\nCheat for now and say all files belong to init_user_ns.  Next step will be\nto let superblocks belong to a user_ns, and derive inode_userns(inode)\nfrom inode-\u003ei_sb-\u003es_user_ns.  Finally we\u0027ll introduce more flexible\narrangements.\n\nChangelog:\n\tFeb 15: make is_owner_or_cap take const struct inode\n\tFeb 23: make is_owner_or_cap bool\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nAcked-by: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3ccfcdaf3986f8c541886606e950de52cab7ad3",
      "tree": "3433cd58adfe51db1f466e6033040ac9a512ffd2",
      "parents": [
        "c837fb37a60aa642b9ad423462e32b851a03020a"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Tue Mar 22 16:33:56 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:10 2011 -0700"
      },
      "message": "fs.h: remove 8 bytes of padding from block_device on 64bit builds\n\nRe-ordering struct block_inode to remove 8 bytes of padding on 64 bit\nbuilds, which also shrinks bdev_inode by 8 bytes (776 -\u003e 768) allowing it\nto fit into one fewer cache lines.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "474a00ee1306eb7e82329fdc28b6471a99facba1",
      "tree": "d0fc3e01d030b3ce3706beee01382a0819f854c8",
      "parents": [
        "054cfaacf88865bff1dd58d305443d5d6c068a08"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 17 21:31:32 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Mar 17 21:31:32 2011 -0400"
      },
      "message": "kill simple_set_mnt()\n\nnot needed anymore, since all users (-\u003eget_sb() instances) are gone.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "054cfaacf88865bff1dd58d305443d5d6c068a08",
      "tree": "39cd85f0f5966ed8c501740359b1d03d48f5ea41",
      "parents": [
        "dc113c1f1d4b47af1b1ca701c5a39e24d296c2ac",
        "1a102ff92579edeff5e3d5d3c76ca49977898f00"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 19:09:57 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 19:09:57 2011 -0700"
      },
      "message": "Merge branch \u0027mnt_devname\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027mnt_devname\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  vfs: bury -\u003eget_sb()\n  nfs: switch NFS from -\u003eget_sb() to -\u003emount()\n  nfs: stop mangling -\u003emnt_devname on NFS\n  vfs: new superblock methods to override /proc/*/mount{s,info}\n  nfs: nfs_do_{ref,sub}mount() superblock argument is redundant\n  nfs: make nfs_path() work without vfsmount\n  nfs: store devname at disconnected NFS roots\n  nfs: propagate devname to nfs{,4}_get_root()\n"
    },
    {
      "commit": "1a102ff92579edeff5e3d5d3c76ca49977898f00",
      "tree": "5585d724c8a996b770bb7a621563a7535a8c0496",
      "parents": [
        "011949811b946bd3b72fca71200f197c6168a5f8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 09:07:58 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "vfs: bury -\u003eget_sb()\n\nThis is an ex-parrot.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c7f404b40a3665d9f4e9a927cc5c1ee0479ed8f9",
      "tree": "2d6fa2bef00efa759f36b17f3be0d4fab3ac9bb5",
      "parents": [
        "f8ad9c4bae99854c961ca79ed130a0d11d9ab53c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 06:59:40 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Mar 16 16:48:06 2011 -0400"
      },
      "message": "vfs: new superblock methods to override /proc/*/mount{s,info}\n\na) -\u003eshow_devname(m, mnt) - what to put into devname columns in mounts,\nmountinfo and mountstats\nb) -\u003eshow_path(m, mnt) - what to put into relative path column in mountinfo\n\nLeaving those NULL gives old behaviour.  NFS switched to using those.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "0f6e0e8448a16d8d22119ce91d8dd24b44865b51",
      "tree": "7c295c02db035fc6a0b867465911a2bc9dc6b1ef",
      "parents": [
        "0d2ecee2bdb2a19d04bc5cefac0f86e790f1aad4",
        "a002951c97ff8da49938c982a4c236bf2fafdc9f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 16 09:15:43 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (33 commits)\n  AppArmor: kill unused macros in lsm.c\n  AppArmor: cleanup generated files correctly\n  KEYS: Add an iovec version of KEYCTL_INSTANTIATE\n  KEYS: Add a new keyctl op to reject a key with a specified error code\n  KEYS: Add a key type op to permit the key description to be vetted\n  KEYS: Add an RCU payload dereference macro\n  AppArmor: Cleanup make file to remove cruft and make it easier to read\n  SELinux: implement the new sb_remount LSM hook\n  LSM: Pass -o remount options to the LSM\n  SELinux: Compute SID for the newly created socket\n  SELinux: Socket retains creator role and MLS attribute\n  SELinux: Auto-generate security_is_socket_class\n  TOMOYO: Fix memory leak upon file open.\n  Revert \"selinux: simplify ioctl checking\"\n  selinux: drop unused packet flow permissions\n  selinux: Fix packet forwarding checks on postrouting\n  selinux: Fix wrong checks for selinux_policycap_netpeer\n  selinux: Fix check for xfrm selinux context algorithm\n  ima: remove unnecessary call to ima_must_measure\n  IMA: remove IMA imbalance checking\n  ...\n"
    },
    {
      "commit": "1abf0c718f15a56a0a435588d1b104c7a37dc9bd",
      "tree": "91a6fae3218686b9a945569a7fa7fad120f64e94",
      "parents": [
        "f2fa2ffc2046fdc35f96366d1ec8675f4d578522"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 13 03:51:11 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 15 02:21:45 2011 -0400"
      },
      "message": "New kind of open files - \"location only\".\n\nNew flag for open(2) - O_PATH.  Semantics:\n\t* pathname is resolved, but the file itself is _NOT_ opened\nas far as filesystem is concerned.\n\t* almost all operations on the resulting descriptors shall\nfail with -EBADF.  Exceptions are:\n\t1) operations on descriptors themselves (i.e.\n\t\tclose(), dup(), dup2(), dup3(), fcntl(fd, F_DUPFD),\n\t\tfcntl(fd, F_DUPFD_CLOEXEC, ...), fcntl(fd, F_GETFD),\n\t\tfcntl(fd, F_SETFD, ...))\n\t2) fcntl(fd, F_GETFL), for a common non-destructive way to\n\t\tcheck if descriptor is open\n\t3) \"dfd\" arguments of ...at(2) syscalls, i.e. the starting\n\t\tpoints of pathname resolution\n\t* closing such descriptor does *NOT* affect dnotify or\nposix locks.\n\t* permissions are checked as usual along the way to file;\nno permission checks are applied to the file itself.  Of course,\ngiving such thing to syscall will result in permission checks (at\nthe moment it means checking that starting point of ....at() is\na directory and caller has exec permissions on it).\n\nfget() and fget_light() return NULL on such descriptors; use of\nfget_raw() and fget_raw_light() is needed to get them.  That protects\nexisting code from dealing with those things.\n\nThere are two things still missing (they come in the next commits):\none is handling of symlinks (right now we refuse to open them that\nway; see the next commit for semantics related to those) and another\nis descriptor passing via SCM_RIGHTS datagrams.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "93f1c20bc8cdb757be50566eff88d65c3b26881f",
      "tree": "15e812c8127ddd795b8112f76832f6411953be62",
      "parents": [
        "a51571ccb8be1b88aea502ebba8350519682c16d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:38 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 15 02:21:45 2011 -0400"
      },
      "message": "vfs: Export file system uuid via /proc/\u003cpid\u003e/mountinfo\n\nWe add a per superblock uuid field. File systems should\nupdate the uuid in the fill_super callback\n\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": "990d6c2d7aee921e3bce22b2d6a750fd552262be",
      "tree": "af273c4bfbfd0342d39d05d5a017382eb32a7538",
      "parents": [
        "f52e0c11305aa09ed56cad97ffc8f0cdc3d78b5d"
      ],
      "author": {
        "name": "Aneesh Kumar K.V",
        "email": "aneesh.kumar@linux.vnet.ibm.com",
        "time": "Sat Jan 29 18:43:26 2011 +0530"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 15 02:21:37 2011 -0400"
      },
      "message": "vfs: Add name to file handle conversion support\n\nThe syscall also return mount id which can be used\nto lookup file system specific information such as uuid\nin /proc/\u003cpid\u003e/mountinfo\n\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": "c8b91accfa1059d5565443193d89572eca2f5dd6",
      "tree": "74f6061a20accac87a5f349ae8a34c4815cde88d",
      "parents": [
        "73d049a40fc6269189c4e2ba6792cb5dd054883c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Mar 12 10:41:39 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:28 2011 -0400"
      },
      "message": "clean statfs-like syscalls up\n\nNew helpers: user_statfs() and fd_statfs(), taking userland pathname and\ndescriptor resp. and filling struct kstatfs.  Syscalls of statfs family\n(native, compat and foreign - osf and hpux on alpha and parisc resp.)\nswitched to those.  Removes some boilerplate code, simplifies cleanup\non errors...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "73d049a40fc6269189c4e2ba6792cb5dd054883c",
      "tree": "a713747cd06926ad89bfa9b36ea13dd20bbc507f",
      "parents": [
        "5b6ca027d85b7438c84b78a54ccdc2e53f2909cd"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 11 12:08:24 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:28 2011 -0400"
      },
      "message": "open-style analog of vfs_path_lookup()\n\nnew function: file_open_root(dentry, mnt, name, flags) opens the file\nvfs_path_lookup would arrive to.\n\nNote that name can be empty; in that case the usual requirement that\ndentry should be a directory is lifted.\n\nopen-coded equivalents switched to it, may_open() got down exactly\none caller and became static.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47c805dc2d2dff686962f5f0baa6bac2d703ba19",
      "tree": "b596e0a1aadb1550ef2099df95832196cd0eeda1",
      "parents": [
        "c3e380b0b3cfa613189fb91513efd88a65e1d9d8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Feb 23 17:44:09 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 14 09:15:25 2011 -0400"
      },
      "message": "switch do_filp_open() to struct open_flags\n\ntake calculation of open_flags by open(2) arguments into new helper\nin fs/open.c, move filp_open() over there, have it and do_sys_open()\nuse that helper, switch exec.c callers of do_filp_open() to explicit\n(and constant) struct open_flags.\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": "721a9602e6607417c6bc15b18e97a2f35266c690",
      "tree": "4987991e43f35b8b3b685fea0040c5265b578996",
      "parents": [
        "cf15900e1209d5b46ec2d24643adbf561830935f"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Wed Mar 09 11:56:30 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Thu Mar 10 08:52:27 2011 +0100"
      },
      "message": "block: kill off REQ_UNPLUG\n\nWith the plugging now being explicitly controlled by the\nsubmitter, callers need not pass down unplugging hints\nto the block layer. If they want to unplug, it\u0027s because they\nmanually plugged on their own - in which case, they should just\nunplug at will.\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": "1cc26bada9f6807814806db2f0d78792eecdac71",
      "tree": "5509b5139db04af6c13db0a580c84116a4a54039",
      "parents": [
        "eae61f3c829439f8f9121b5cd48a14be04df451f",
        "214d93b02c4fe93638ad268613c9702a81ed9192"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 10:55:06 2011 +1100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue Mar 08 10:55:06 2011 +1100"
      },
      "message": "Merge branch \u0027master\u0027; commit \u0027v2.6.38-rc7\u0027 into next\n"
    },
    {
      "commit": "638691a7a46a4ae9a7b56c603299e42d7f6e722e",
      "tree": "f744b3fbdd4704ef9ae122b67a14785b4a7a6b65",
      "parents": [
        "0a93ea2e897bd793cc0aaaddc397eff32ac8d6fe",
        "f0b4f7e2f29af678bd9af43422c537dcb6008603"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 11:13:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 25 11:13:26 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: Fix - again - partition detection when array becomes active\n  Fix over-zealous flush_disk when changing device size.\n  md: avoid spinlock problem in blk_throtl_exit\n  md: correctly handle probe of an \u0027mdp\u0027 device.\n  md: don\u0027t set_capacity before array is active.\n  md: Fix raid1-\u003eraid0 takeover\n"
    },
    {
      "commit": "93b270f76e7ef3b81001576860c2701931cdc78b",
      "tree": "abaca0e4d3e86721815498fafd06295dd9cfd002",
      "parents": [
        "da9cf5050a2e3dbc3cf26a8d908482eb4485ed49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 24 17:25:47 2011 +1100"
      },
      "message": "Fix over-zealous flush_disk when changing device size.\n\nThere are two cases when we call flush_disk.\nIn one, the device has disappeared (check_disk_change) so any\ndata will hold becomes irrelevant.\nIn the oter, the device has changed size (check_disk_size_change)\nso data we hold may be irrelevant.\n\nIn both cases it makes sense to discard any \u0027clean\u0027 buffers,\nso they will be read back from the device if needed.\n\nIn the former case it makes sense to discard \u0027dirty\u0027 buffers\nas there will never be anywhere safe to write the data.  In the\nsecond case it *does*not* make sense to discard dirty buffers\nas that will lead to file system corruption when you simply enlarge\nthe containing devices.\n\nflush_disk calls __invalidate_devices.\n__invalidate_device calls both invalidate_inodes and invalidate_bdev.\n\ninvalidate_inodes *does* discard I_DIRTY inodes and this does lead\nto fs corruption.\n\ninvalidate_bev *does*not* discard dirty pages, but I don\u0027t really care\nabout that at present.\n\nSo this patch adds a flag to __invalidate_device (calling it\n__invalidate_device2) to indicate whether dirty buffers should be\nkilled, and this is passed to invalidate_inodes which can choose to\nskip dirty inodes.\n\nflusk_disk then passes true from check_disk_change and false from\ncheck_disk_size_change.\n\ndm avoids tripping over this problem by calling i_size_write directly\nrathher than using check_disk_size_change.\n\nmd does use check_disk_size_change and so is affected.\n\nThis regression was introduced by commit 608aeef17a which causes\ncheck_disk_size_change to call flush_disk, so it is suitable for any\nkernel since 2.6.27.\n\nCc: stable@kernel.org\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Andrew Patterson \u003candrew.patterson@hp.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2aa15890f3c191326678f1bd68af61ec6b8753ec",
      "tree": "347f5fdcd0678b12be92f266cd2a5e7a74749403",
      "parents": [
        "78794b2cdeac37ac1fd950fc9c4454b56d88ac03"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Wed Feb 23 13:49:47 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 23 19:52:52 2011 -0800"
      },
      "message": "mm: prevent concurrent unmap_mapping_range() on the same inode\n\nMichael Leun reported that running parallel opens on a fuse filesystem\ncan trigger a \"kernel BUG at mm/truncate.c:475\"\n\nGurudas Pai reported the same bug on NFS.\n\nThe reason is, unmap_mapping_range() is not prepared for more than\none concurrent invocation per inode.  For example:\n\n  thread1: going through a big range, stops in the middle of a vma and\n     stores the restart address in vm_truncate_count.\n\n  thread2: comes in with a small (e.g. single page) unmap request on\n     the same vma, somewhere before restart_address, finds that the\n     vma was already unmapped up to the restart address and happily\n     returns without doing anything.\n\nAnother scenario would be two big unmap requests, both having to\nrestart the unmapping and each one setting vm_truncate_count to its\nown value.  This could go on forever without any of them being able to\nfinish.\n\nTruncate and hole punching already serialize with i_mutex.  Other\ncallers of unmap_mapping_range() do not, and it\u0027s difficult to get\ni_mutex protection for all callers.  In particular -\u003ed_revalidate(),\nwhich calls invalidate_inode_pages2_range() in fuse, may be called\nwith or without i_mutex.\n\nThis patch adds a new mutex to \u0027struct address_space\u0027 to prevent\nrunning multiple concurrent unmap_mapping_range() on the same mapping.\n\n[ We\u0027ll hopefully get rid of all this with the upcoming mm\n  preemptibility series by Peter Zijlstra, the \"mm: Remove i_mmap_mutex\n  lockbreak\" patch in particular.  But that is for 2.6.39 ]\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nReported-by: Michael Leun \u003clkml20101129@newton.leun.net\u003e\nReported-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nTested-by: Gurudas Pai \u003cgurudas.pai@oracle.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5c96ebf1d71df0c5fb77ab58c9aeb307cf02372",
      "tree": "5b5df6c3f421380d980fea21ccf055b9be364741",
      "parents": [
        "a68a27b6f2354273bacc39c3dd06456edb202230"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue Nov 02 10:11:37 2010 -0400"
      },
      "committer": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Thu Feb 10 07:51:43 2011 -0500"
      },
      "message": "IMA: define readcount functions\n\nDefine i_readcount_inc/dec() functions to be called from the VFS layer.\n\nChangelog:\n- renamed iget/iput_readcount to i_readcount_inc/dec (Dave Chinner\u0027s suggestion)\n- removed i_lock in iput_readcount() (based on comments:Dave Chinner,Eric Paris)\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "a68a27b6f2354273bacc39c3dd06456edb202230",
      "tree": "d73396dab134842ecd1e86d665718e75012e7e78",
      "parents": [
        "75a25637bf8a1b8fbed2368c0a3ec15c66a534f1"
      ],
      "author": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Tue Nov 02 10:10:56 2010 -0400"
      },
      "committer": {
        "name": "Mimi Zohar",
        "email": "zohar@linux.vnet.ibm.com",
        "time": "Thu Feb 10 07:51:43 2011 -0500"
      },
      "message": "IMA: convert i_readcount to atomic\n\nConvert the inode\u0027s i_readcount from an unsigned int to atomic.\n\nSigned-off-by: Mimi Zohar \u003czohar@us.ibm.com\u003e\nAcked-by: Eric Paris \u003ceparis@redhat.com\u003e\n"
    },
    {
      "commit": "3cd90ea42f2c15f928b70ed66f6d8ed0a8e7aadd",
      "tree": "2e27c807baaec2e6528cd5431d57308a4d874dea",
      "parents": [
        "1a44bc8c7cfe69756a116d38aef992d50fc1969d"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Feb 01 15:52:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "vfs: sparse: add __FMODE_EXEC\n\nFMODE_EXEC is a constant type of fmode_t but was used with normal integer\nconstants.  This results in following warnings from sparse.  Fix it using\nnew macro __FMODE_EXEC.\n\n fs/exec.c:116:58: warning: restricted fmode_t degrades to integer\n fs/exec.c:689:58: warning: restricted fmode_t degrades to integer\n fs/fcntl.c:777:9: warning: restricted fmode_t degrades to integer\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1a44bc8c7cfe69756a116d38aef992d50fc1969d",
      "tree": "3e830a7fe2f4b57e425421b35c6faebbbb2c7cc2",
      "parents": [
        "3751d60430fe4c26460a5ca8ad8672d32f93bcb1"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Tue Feb 01 15:52:46 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "message": "vfs: sparse: remove a warning on OPEN_FMODE()\n\nAND-ing FMODE_* constant with normal integer results in following\nsparse warnings. Fix it.\n\n fs/open.c:662:21: warning: restricted fmode_t degrades to integer\n fs/anon_inodes.c:123:34: warning: restricted fmode_t degrades to integer\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecf5632dd189ab4c366cef853d6e5fe7adfe52e5",
      "tree": "947ae7edf45415753e960d53957ae3a4121fb3b8",
      "parents": [
        "27eaa1c90c608aa907336c2743d5ecf35c469440"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Sun Jan 16 23:28:17 2011 +0900"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 08:21:42 2011 -0500"
      },
      "message": "fs: fix address space warnings in ioctl_fiemap()\n\nThe fi_extents_start field of struct fiemap_extent_info is a\nuser pointer but was not marked as __user. This makes sparse\nemit following warnings:\n\n  CHECK   fs/ioctl.c\nfs/ioctl.c:114:26: warning: incorrect type in argument 1 (different address spaces)\nfs/ioctl.c:114:26:    expected void [noderef] \u003casn:1\u003e*dst\nfs/ioctl.c:114:26:    got struct fiemap_extent *[assigned] dest\nfs/ioctl.c:202:14: warning: incorrect type in argument 1 (different address spaces)\nfs/ioctl.c:202:14:    expected void const volatile [noderef] \u003casn:1\u003e*\u003cnoident\u003e\nfs/ioctl.c:202:14:    got struct fiemap_extent *[assigned] fi_extents_start\nfs/ioctl.c:212:27: warning: incorrect type in argument 1 (different address spaces)\nfs/ioctl.c:212:27:    expected void [noderef] \u003casn:1\u003e*dst\nfs/ioctl.c:212:27:    got char *\u003cnoident\u003e\n\nAlso add \u0027ufiemap\u0027 variable to eliminate unnecessary casts.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2fe17c1075836b66678ed2a305fd09b6773883aa",
      "tree": "eb5287be8138686682eef9622872cfc7657e0664",
      "parents": [
        "64c23e86873ee410554d6d1c76b60da47025e96f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jan 14 13:07:43 2011 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 17 02:25:31 2011 -0500"
      },
      "message": "fallocate should be a file operation\n\nCurrently all filesystems except XFS implement fallocate asynchronously,\nwhile XFS forced a commit.  Both of these are suboptimal - in case of O_SYNC\nI/O we really want our allocation on disk, especially for the !KEEP_SIZE\ncase where we actually grow the file with user-visible zeroes.  On the\nother hand always commiting the transaction is a bad idea for fast-path\nuses of fallocate like for example in recent Samba versions.   Given\nthat block allocation is a data plane operation anyway change it from\nan inode operation to a file operation so that we have the file structure\navailable that lets us check for O_SYNC.\n\nThis also includes moving the code around for a few of the filesystems,\nand remove the already unnedded S_ISDIR checks given that we only wire\nup fallocate for regular files.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8206b925fb0eba3a11839419be118b09105d7b1",
      "tree": "5d41b356a043da09c816ed80bd79d1ea8b2b47e5",
      "parents": [
        "1b59be2a6cdcb5a12e18d8315c07c94a624de48f",
        "f03c65993b98eeb909a4012ce7833c5857d74755"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 16 11:31:50 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 16 11:31:50 2011 -0800"
      },
      "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: (23 commits)\n  sanitize vfsmount refcounting changes\n  fix old umount_tree() breakage\n  autofs4: Merge the remaining dentry ops tables\n  Unexport do_add_mount() and add in follow_automount(), not -\u003ed_automount()\n  Allow d_manage() to be used in RCU-walk mode\n  Remove a further kludge from __do_follow_link()\n  autofs4: Bump version\n  autofs4: Add v4 pseudo direct mount support\n  autofs4: Fix wait validation\n  autofs4: Clean up autofs4_free_ino()\n  autofs4: Clean up dentry operations\n  autofs4: Clean up inode operations\n  autofs4: Remove unused code\n  autofs4: Add d_manage() dentry operation\n  autofs4: Add d_automount() dentry operation\n  Remove the automount through follow_link() kludge code from pathwalk\n  CIFS: Use d_automount() rather than abusing follow_link()\n  NFS: Use d_automount() rather than abusing follow_link()\n  AFS: Use d_automount() rather than abusing follow_link()\n  Add an AT_NO_AUTOMOUNT flag to suppress terminal automount\n  ...\n"
    },
    {
      "commit": "9875cf806403fae66b2410a3c2cc820d97731e04",
      "tree": "6f9546b400716766af95e0f78e3d600e765b2b51",
      "parents": [
        "1a8edf40e7c3eee955e0dd0316a7c9d85e36f597"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Jan 14 18:45:21 2011 +0000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jan 15 20:05:03 2011 -0500"
      },
      "message": "Add a dentry op to handle automounting rather than abusing follow_link()\n\nAdd a dentry op (d_automount) to handle automounting directories rather than\nabusing the follow_link() inode operation.  The operation is keyed off a new\ndentry flag (DCACHE_NEED_AUTOMOUNT).\n\nThis also makes it easier to add an AT_ flag to suppress terminal segment\nautomount during pathwalk and removes the need for the kludge code in the\npathwalk algorithm to handle directories with follow_link() semantics.\n\nThe -\u003ed_automount() dentry operation:\n\n\tstruct vfsmount *(*d_automount)(struct path *mountpoint);\n\ntakes a pointer to the directory to be mounted upon, which is expected to\nprovide sufficient data to determine what should be mounted.  If successful, it\nshould return the vfsmount struct it creates (which it should also have added\nto the namespace using do_add_mount() or similar).  If there\u0027s a collision with\nanother automount attempt, NULL should be returned.  If the directory specified\nby the parameter should be used directly rather than being mounted upon,\n-EISDIR should be returned.  In any other case, an error code should be\nreturned.\n\nThe -\u003ed_automount() operation is called with no locks held and may sleep.  At\nthis point the pathwalk algorithm will be in ref-walk mode.\n\nWithin fs/namei.c itself, a new pathwalk subroutine (follow_automount()) is\nadded to handle mountpoints.  It will return -EREMOTE if the automount flag was\nset, but no d_automount() op was supplied, -ELOOP if we\u0027ve encountered too many\nsymlinks or mountpoints, -EISDIR if the walk point should be used without\nmounting and 0 if successful.  The path will be updated to point to the mounted\nfilesystem if a successful automount took place.\n\n__follow_mount() is replaced by follow_managed() which is more generic\n(especially with the patch that adds -\u003ed_manage()).  This handles transits from\ndirectories during pathwalk, including automounting and skipping over\nmountpoints (and holding processes with the next patch).\n\n__follow_mount_rcu() will jump out of RCU-walk mode if it encounters an\nautomount point with nothing mounted on it.\n\nfollow_dotdot*() does not handle automounts as you don\u0027t want to trigger them\nwhilst following \"..\".\n\nI\u0027ve also extracted the mount/don\u0027t-mount logic from autofs4 and included it\nhere.  It makes the mount go ahead anyway if someone calls open() or creat(),\ntries to traverse the directory, tries to chdir/chroot/etc. into the directory,\nor sticks a \u0027/\u0027 on the end of the pathname.  If they do a stat(), however,\nthey\u0027ll only trigger the automount if they didn\u0027t also say O_NOFOLLOW.\n\nI\u0027ve also added an inode flag (S_AUTOMOUNT) so that filesystems can mark their\ninodes as automount points.  This flag is automatically propagated to the\ndentry as DCACHE_NEED_AUTOMOUNT by __d_instantiate().  This saves NFS and could\nsave AFS a private flag bit apiece, but is not strictly necessary.  It would be\npreferable to do the propagation in d_set_d_op(), but that doesn\u0027t normally\nhave access to the inode.\n\n[AV: fixed breakage in case if __follow_mount_rcu() fails and nameidata_drop_rcu()\nsucceeds in RCU case of do_lookup(); we need to fall through to non-RCU case after\nthat, rather than just returning with ungrabbed *path]\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nWas-Acked-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6ab82196492a0b6968a654a06aae923b28afef0d",
      "tree": "8affe1097bba194fe677d5399f47693dc0363dd8",
      "parents": [
        "6f7f7caab259026234277b659485d22c1dcb1ab4",
        "49731baa41df404c2c3f44555869ab387363af43"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 14 13:32:07 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 14 13:32:07 2011 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  block: restore multiple bd_link_disk_holder() support\n  block cfq: compensate preempted queue even if it has no slice assigned\n  block cfq: make queue preempt work for queues from different workload\n"
    },
    {
      "commit": "18bce371ae09af6c20ee62c1092a4d1d0e84dd49",
      "tree": "f3467fafd8e49392e3f6efef7b88a7b4dd3b7b06",
      "parents": [
        "ec08bdb148767f1193f5f3028749ed865ac27181",
        "a8f2800b4f7b76cecb7209cb6a7d2b14904fc711"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 14 13:17:26 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 14 13:17:26 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.38\u0027 of git://linux-nfs.org/~bfields/linux: (62 commits)\n  nfsd4: fix callback restarting\n  nfsd: break lease on unlink, link, and rename\n  nfsd4: break lease on nfsd setattr\n  nfsd: don\u0027t support msnfs export option\n  nfsd4: initialize cb_per_client\n  nfsd4: allow restarting callbacks\n  nfsd4: simplify nfsd4_cb_prepare\n  nfsd4: give out delegations more quickly in 4.1 case\n  nfsd4: add helper function to run callbacks\n  nfsd4: make sure sequence flags are set after destroy_session\n  nfsd4: re-probe callback on connection loss\n  nfsd4: set sequence flag when backchannel is down\n  nfsd4: keep finer-grained callback status\n  rpc: allow xprt_class-\u003esetup to return a preexisting xprt\n  rpc: keep backchannel xprt as long as server connection\n  rpc: move sk_bc_xprt to svc_xprt\n  nfsd4: allow backchannel recovery\n  nfsd4: support BIND_CONN_TO_SESSION\n  nfsd4: modify session list under cl_lock\n  Documentation: fl_mylease no longer exists\n  ...\n\nFix up conflicts in fs/nfsd/vfs.c with the vfs-scale work.  The\nvfs-scale work touched some msnfs cases, and this merge removes support\nfor that entirely, so the conflict was trivial to resolve.\n"
    },
    {
      "commit": "49731baa41df404c2c3f44555869ab387363af43",
      "tree": "5d3476368fa546aebb1c223e9cf1bab5ad80f698",
      "parents": [
        "c553f8e335c00a7cff3ab3f13e793b13d3f2207f"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Jan 14 18:43:57 2011 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jan 14 18:44:22 2011 +0100"
      },
      "message": "block: restore multiple bd_link_disk_holder() support\n\nCommit e09b457b (block: simplify holder symlink handling) incorrectly\nassumed that there is only one link at maximum.  dm may use multiple\nlinks and expects block layer to track reference count for each link,\nwhich is different from and unrelated to the exclusive device holder\nidentified by @holder when the device is opened.\n\nRemove the single holder assumption and automatic removal of the link\nand revive the per-link reference count tracking.  The code\nessentially behaves the same as before commit e09b457b sans the\nunnecessary kobject reference count dancing.\n\nWhile at it, note that this facility should not be used by anyone else\nthan the current ones.  Sysfs symlinks shouldn\u0027t be abused like this\nand the whole thing doesn\u0027t belong in the block layer at all.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReported-by: Milan Broz \u003cmbroz@redhat.com\u003e\nCc: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: linux-raid@vger.kernel.org\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "275220f0fcff1adf28a717076e00f575edf05fda",
      "tree": "d249bccc80c64443dab211639050c4fb14332648",
      "parents": [
        "fe3c560b8a22cb28e54fe8950abef38e88d75831",
        "81c5e2ae33c4b19e53966b427e33646bf6811830"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 10:45:01 2011 -0800"
      },
      "message": "Merge branch \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.38/core\u0027 of git://git.kernel.dk/linux-2.6-block: (43 commits)\n  block: ensure that completion error gets properly traced\n  blktrace: add missing probe argument to block_bio_complete\n  block cfq: don\u0027t use atomic_t for cfq_group\n  block cfq: don\u0027t use atomic_t for cfq_queue\n  block: trace event block fix unassigned field\n  block: add internal hd part table references\n  block: fix accounting bug on cross partition merges\n  kref: add kref_test_and_get\n  bio-integrity: mark kintegrityd_wq highpri and CPU intensive\n  block: make kblockd_workqueue smarter\n  Revert \"sd: implement sd_check_events()\"\n  block: Clean up exit_io_context() source code.\n  Fix compile warnings due to missing removal of a \u0027ret\u0027 variable\n  fs/block: type signature of major_to_index(int) to major_to_index(unsigned)\n  block: convert !IS_ERR(p) \u0026\u0026 p to !IS_ERR_NOR_NULL(p)\n  cfq-iosched: don\u0027t check cfqg in choose_service_tree()\n  fs/splice: Pull buf-\u003eops-\u003econfirm() from splice_from_pipe actors\n  cdrom: export cdrom_check_events()\n  sd: implement sd_check_events()\n  sr: implement sr_check_events()\n  ...\n"
    },
    {
      "commit": "c74a1cbb3cac348f276fabc381758f5b0b4713b2",
      "tree": "5b403590e41b5e91fce25c69d50a23b920b3497f",
      "parents": [
        "f772c4a6a320ec25d94ba951881474eeef1b7f48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 16:59:34 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:03:43 2011 -0500"
      },
      "message": "pass default dentry_operations to mount_pseudo()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c8aebb0c9f8c7471643d5f8ba68328de8013005f",
      "tree": "fae492892b9eecaf9c42632dd1203102cc69365a",
      "parents": [
        "4162cf64973df51fc885825bc9ca4d055891c49f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Dec 18 10:22:30 2010 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 12 20:02:34 2011 -0500"
      },
      "message": "per-superblock default -\u003ed_op\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "57cc7215b70856dc6bae8e55b00ecd7b1d7429b1",
      "tree": "f6dedefd41e6745a9b801166b99af7d830e41ef2",
      "parents": [
        "37721e1b0cf98cb65895f234d8c500d270546529"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Jan 10 08:18:25 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jan 10 08:51:44 2011 -0800"
      },
      "message": "headers: kobject.h redux\n\nRemove kobject.h from files which don\u0027t need it, notably,\nsched.h and fs.h.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ceb5bdc2d246f6d81cf61ed70f325308a11821d2",
      "tree": "65fc9e0227994d4ffc80530dd15bb5a9672a295e",
      "parents": [
        "626d607435617cc0f033522083e2bb195b81813c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:05 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:31 2011 +1100"
      },
      "message": "fs: dcache per-bucket dcache hash locking\n\nWe can turn the dcache hash locking from a global dcache_hash_lock into\nper-bucket locking.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\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": "44a7d7a878c9cbb74f236ea755b25b6b2e26a9a9",
      "tree": "d4630a38c0d683a7e1b8823d7971753719b8a54d",
      "parents": [
        "fb045adb99d9b7c562dc7fef834857f78249daa1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:56 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:28 2011 +1100"
      },
      "message": "fs: cache optimise dentry and inode for rcu-walk\n\nPut dentry and inode fields into top of data structure.  This allows RCU path\ntraversal to perform an RCU dentry lookup in a path walk by touching only the\nfirst 56 bytes of the dentry.\n\nWe also fit in 8 bytes of inline name in the first 64 bytes, so for short\nnames, only 64 bytes needs to be touched to perform the lookup. We should\nget rid of the hash-\u003eprev pointer from the first 64 bytes, and fit 16 bytes\nof name in there, which will take care of 81% rather than 32% of the kernel\ntree.\n\ninode is also rearranged so that RCU lookup will only touch a single cacheline\nin the inode, plus one in the i_ops structure.\n\nThis is important for directory component lookups in RCU path walking. In the\nkernel source, directory names average is around 6 chars, so this works.\n\nWhen we reach the last element of the lookup, we need to lock it and take its\nrefcount which requires another cacheline access.\n\nAlign dentry and inode operations structs, so members will be at predictable\noffsets and we can group common operations into head of structure.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "ff0c7d15f9787b7e8c601533c015295cc68329f8",
      "tree": "e3db53950b8ed78e542ab35a3cd3a6eaee26eccd",
      "parents": [
        "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:50 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: avoid inode RCU freeing for pseudo fs\n\nPseudo filesystems that don\u0027t put inode on RCU list or reachable by\nrcu-walk dentries do not need to RCU free their inodes.\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": "b5c84bf6f6fa3a7dfdcb556023a62953574b60ee",
      "tree": "7a2c299a180713e21d5cb653cb933121adf53c31",
      "parents": [
        "949854d02455080d20cd3e1db28a3a18daf7599d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:38 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:23 2011 +1100"
      },
      "message": "fs: dcache remove dcache_lock\n\ndcache_lock no longer protects anything. remove it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "c45821d263a8a5109d69a9e8942b8d65bcd5f31a",
      "tree": "816e9b7f98f0eb174557dfd093526b165f274348",
      "parents": [
        "c84d500bc41658165ceb0dd04dc6a75249940fba"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Sun Oct 31 00:04:44 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@redhat.com",
        "time": "Tue Jan 04 16:49:28 2011 -0500"
      },
      "message": "locks: eliminate fl_mylease callback\n\nThe nfs server only supports read delegations for now, so we don\u0027t care\nhow conflicts are determined.  All we care is that unlocks are\nrecognized as matching the leases they are meant to remove.  After the\nlast patch, a comparison of struct files will work for that purpose.  So\nwe no longer need this callback.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@redhat.com\u003e\n"
    }
  ],
  "next": "77ea887e433ad8389d416826936c110fa7910f80"
}
