)]}'
{
  "log": [
    {
      "commit": "4b8df8915a6980f476e1fa8f4d156e36cb63bf76",
      "tree": "dee4cbe41aee3570b9a129a4c87dcf8ea09f8112",
      "parents": [
        "7e81ab9d3d9a22fb7b20c56f0cabc8ef51954014"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue May 08 20:27:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 20:41:14 2007 -0700"
      },
      "message": "smaps: only define clear_refs for CONFIG_MMU\n\n/proc/pid/clear_refs is only defined in the CONFIG_MMU case, so make sure we\ndon\u0027t have any references to clear_refs_smap() in generic procfs code.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b82dc0e64e93f430182f36b46b79fcee87d3532",
      "tree": "28c61be85dd899cdb096ac15c65b521b0db60ea8",
      "parents": [
        "1efd48b3ae8f89a1d04f1e36be96764d7bf43ae9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 20:10:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 20:10:00 2007 -0700"
      },
      "message": "Remove suid/sgid bits on [f]truncate()\n\n.. to match what we do on write().  This way, people who write to files\nby using [f]truncate + writable mmap have the same semantics as if they\nwere using the write() family of system calls.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60c9b2746f589b0b809582b0471cf30ad3ae439f",
      "tree": "deb0169acb7f7b5b5ef721650de1e0c6f139823c",
      "parents": [
        "4750def52cb2c21732dda9aa1d43a07db37b0186",
        "f7c66ce3f70d8417de0cfb481ca4e5430382ec5d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:59:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:59:33 2007 -0700"
      },
      "message": "Merge git://oss.sgi.com:8090/xfs/xfs-2.6\n\n* git://oss.sgi.com:8090/xfs/xfs-2.6:\n  [XFS] Add lockdep support for XFS\n  [XFS] Fix race in xfs_write() b/w dmapi callout and direct I/O checks.\n  [XFS] Get rid of redundant \"required\" in msg.\n  [XFS] Export via a function xfs_buftarg_list for use by kdb/xfsidbg.\n  [XFS] Remove unused ilen variable and references.\n  [XFS] Fix to prevent the notorious \u0027NULL files\u0027 problem after a crash.\n  [XFS] Fix race condition in xfs_write().\n  [XFS] Fix uquota and oquota enforcement problems.\n  [XFS] propogate return codes from flush routines\n  [XFS] Fix quotaon syscall failures for group enforcement requests.\n  [XFS] Invalidate quotacheck when mounting without a quota type.\n  [XFS] reducing the number of random number functions.\n  [XFS] remove more misc. unused args\n  [XFS] the \"aendp\" arg to xfs_dir2_data_freescan is always NULL, remove it.\n  [XFS] The last argument \"lsn\" of xfs_trans_commit() is always called with\n"
    },
    {
      "commit": "02a93208edec0d655c9f18613d830dc6afeda7d4",
      "tree": "3a48dbae348c02d4b108cb3fcc5f1600ad3dd53a",
      "parents": [
        "18062a91d2ddc40e19fc674afeb7cad58cfa23ab",
        "821de3a27bf33f11ec878562577c586cd5f83c64"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:34:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:34:52 2007 -0700"
      },
      "message": "Merge branch \u0027for-2.6.22\u0027 of git://git.kernel.dk/data/git/linux-2.6-block\n\n* \u0027for-2.6.22\u0027 of git://git.kernel.dk/data/git/linux-2.6-block:\n  [PATCH] ll_rw_blk: fix missing bounce in blk_rq_map_kern()\n  [PATCH] splice: always call into page_cache_readahead()\n  [PATCH] splice(): fix interaction with readahead\n"
    },
    {
      "commit": "18062a91d2ddc40e19fc674afeb7cad58cfa23ab",
      "tree": "886fe7ec99623767e38ff7fc67a078918338bb3e",
      "parents": [
        "be3478ddb8a3902b588c840b42e166a0e64a87b3",
        "05ec9e26be1f668ccba4ca54d9a4966c6208c611"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:32:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:32:30 2007 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:\n  JFS: Fix race waking up jfsIO kernel thread\n  JFS: use __set_current_state()\n  Copy i_flags to jfs inode flags on write\n  JFS: document uid, gid, and umask mount options in jfs.txt\n"
    },
    {
      "commit": "951744fea0aea9adbd7c8cacb3605f2d69a66f96",
      "tree": "c46aec13c4a5f3924bc5a73bced68269f275ff2b",
      "parents": [
        "31170b6ad4ebe6c43c1cc3b8112274cf59474de0"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue May 08 00:35:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:22 2007 -0700"
      },
      "message": "udf: possible null pointer dereference while load_partition\n\nsb_read may return NULL, let\u0027s explicitly check it.\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31170b6ad4ebe6c43c1cc3b8112274cf59474de0",
      "tree": "25e19a70a323f18757c60a658d930b63e8e45124",
      "parents": [
        "948b9b2c967c3bec6136b2dbb9e1c12f62e03efa"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:35:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "udf: support files larger than 1G\n\nMake UDF work correctly for files larger than 1GB.  As no extent can be\nlonger than (1\u003c\u003c30)-blocksize bytes, we have to create several extents if a\nbig hole is being created.  As a side-effect, we now don\u0027t discard\npreallocated blocks when creating a hole.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "948b9b2c967c3bec6136b2dbb9e1c12f62e03efa",
      "tree": "25a2376aef384fb05221e20b3c96f3c490c8195c",
      "parents": [
        "3bf25cb40d899eeb5a471f497e56ddfe2c96c019"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:35:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "udf: add assertions\n\nAdd a few assertions into udf_discard_prealloc() to check that the file is\nsane (mostly helps debugging further patches ;).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3bf25cb40d899eeb5a471f497e56ddfe2c96c019",
      "tree": "98d425edd6392d3037218851084dde6736e7ba32",
      "parents": [
        "ff116fc8d1d43927c7651b91d5aec41eb30c4429"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:35:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "udf: use get_bh()\n\nMake UDF use get_bh() instead of directly accessing b_count and use\nbrelse() instead of udf_release_data() which does just brelse()...\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff116fc8d1d43927c7651b91d5aec41eb30c4429",
      "tree": "9b452298e6f070be35b2d366ce4a10e4a1384d17",
      "parents": [
        "60448b1d6db4e82946ff9a2ac88df341f5fa87a2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:35:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "UDF: introduce struct extent_position\n\nIntroduce a structure extent_position to store a position of an extent and\nthe corresponding buffer_head in one place.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60448b1d6db4e82946ff9a2ac88df341f5fa87a2",
      "tree": "d0623c3dc26be55aa17319e1e9e8d0fbeea98ac4",
      "parents": [
        "277866a0e3a4f97e859f7a621f5b4f5359c9526c"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:35:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "udf: use sector_t and loff_t for file offsets\n\nUse sector_t and loff_t for file offsets in UDF filesystem.  Otherwise an\noverflow may occur for long files.  Also make inode_bmap() return offset in\nthe extent in number of blocks instead of number of bytes - for most\ncallers this is more convenient.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "277866a0e3a4f97e859f7a621f5b4f5359c9526c",
      "tree": "20b244f5c0c7b6a692f0290f70f0fefae9d88d5a",
      "parents": [
        "79df3c19aa601d264719b04e3a788a7b852f4859"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 08 00:35:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:21 2007 -0700"
      },
      "message": "nfs: fix congestion control: use atomic_longs\n\nChange the atomic_t in struct nfs_server to atomic_long_t in anticipation\nof machines that can handle 8+TB of (4K) pages under writeback.\n\nHowever I suspect other things in NFS will start going *bang* by then.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c710c896eb461895d3c399e15bb5f20b39c9073",
      "tree": "862e210cc6dad50abffd7640f01d50c3e9f3d375",
      "parents": [
        "ade5fb818fb1861fd5f84619c761920ade762b5d"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Tue May 08 00:33:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:18 2007 -0700"
      },
      "message": "utimensat implementation\n\nImplement utimensat(2) which is an extension to futimesat(2) in that it\n\na) supports nano-second resolution for the timestamps\nb) allows to selectively ignore the atime/mtime value\nc) allows to selectively use the current time for either atime or mtime\nd) supports changing the atime/mtime of a symlink itself along the lines\n   of the BSD lutimes(3) functions\n\nFor this change the internally used do_utimes() functions was changed to\naccept a timespec time value and an additional flags parameter.\n\nAdditionally the sys_utime function was changed to match compat_sys_utime\nwhich already use do_utimes instead of duplicating the work.\n\nAlso, the completely missing futimensat() functionality is added.  We have\nsuch a function in glibc but we have to resort to using /proc/self/fd/* which\nnot everybody likes (chroot etc).\n\nTest application (the syscall number will need per-arch editing):\n\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003ctime.h\u003e\n#include \u003csys/time.h\u003e\n#include \u003cstddef.h\u003e\n#include \u003csyscall.h\u003e\n\n#define __NR_utimensat 280\n\n#define UTIME_NOW       ((1l \u003c\u003c 30) - 1l)\n#define UTIME_OMIT      ((1l \u003c\u003c 30) - 2l)\n\nint\nmain(void)\n{\n  int status \u003d 0;\n\n  int fd \u003d open(\"ttt\", O_RDWR|O_CREAT|O_EXCL, 0666);\n  if (fd \u003d\u003d -1)\n    error (1, errno, \"failed to create test file \\\"ttt\\\"\");\n\n  struct stat64 st1;\n  if (fstat64 (fd, \u0026st1) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timespec t[2];\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  struct stat64 st2;\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0] \u003d st1.st_atim;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_OMIT;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"atim not set\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim changed from zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_OMIT;\n  t[1] \u003d st1.st_mtim;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_nsec !\u003d st1.st_atim.tv_nsec)\n    {\n      puts (\"mtim changed from original time\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_nsec !\u003d st1.st_mtim.tv_nsec)\n    {\n      puts (\"mtim not set\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  sleep (2);\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d UTIME_NOW;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d UTIME_NOW;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"ttt\", t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  struct timeval tv;\n  gettimeofday(\u0026tv,NULL);\n\n  if (st2.st_atim.tv_sec \u003c\u003d st1.st_atim.tv_sec\n      || st2.st_atim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"atim not set to NOW\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec \u003c\u003d st1.st_mtim.tv_sec\n      || st2.st_mtim.tv_sec \u003e tv.tv_sec)\n    {\n      puts (\"mtim not set to NOW\");\n      status \u003d 1;\n    }\n\n  if (symlink (\"ttt\", \"tttsym\") !\u003d 0)\n    error (1, errno, \"cannot create symlink\");\n\n  t[0].tv_sec \u003d 0;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 0;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, AT_FDCWD, \"tttsym\", t, AT_SYMLINK_NOFOLLOW) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (lstat64 (\"tttsym\", \u0026st2) !\u003d 0)\n    error (1, errno, \"lstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 0 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink atim not reset to zero\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 0 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"symlink mtim not reset to zero\");\n      status \u003d 1;\n    }\n  if (status !\u003d 0)\n    goto out;\n\n  t[0].tv_sec \u003d 1;\n  t[0].tv_nsec \u003d 0;\n  t[1].tv_sec \u003d 1;\n  t[1].tv_nsec \u003d 0;\n  if (syscall(__NR_utimensat, fd, NULL, t, 0) !\u003d 0)\n    error (1, errno, \"utimensat failed\");\n\n  if (fstat64 (fd, \u0026st2) !\u003d 0)\n    error (1, errno, \"fstat failed\");\n\n  if (st2.st_atim.tv_sec !\u003d 1 || st2.st_atim.tv_nsec !\u003d 0)\n    {\n      puts (\"atim not reset to one\");\n      status \u003d 1;\n    }\n  if (st2.st_mtim.tv_sec !\u003d 1 || st2.st_mtim.tv_nsec !\u003d 0)\n    {\n      puts (\"mtim not reset to one\");\n      status \u003d 1;\n    }\n\n  if (status \u003d\u003d 0)\n     puts (\"all OK\");\n\n out:\n  close (fd);\n  unlink (\"ttt\");\n  unlink (\"tttsym\");\n\n  return status;\n}\n\n[akpm@linux-foundation.org: add missing i386 syscall table entry]\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nCc: \u003clinux-arch@vger.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": "1a1c9bb433af252767ee90d6394d287afa30cf8b",
      "tree": "586225fc9f3ca52d60d59400a3c7d4e90ca0667e",
      "parents": [
        "866b04fccbf125cd39f2bdbcfeaa611d39a061a8"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 08 00:32:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "inode numbering: change libfs sb creation routines to avoid collisions with their root inodes\n\nThis patch makes it so that simple_fill_super and get_sb_pseudo assign their\nroot inodes to be number 1.  It also fixes up a couple of callers of\nsimple_fill_super that were passing in files arrays that had an index at\nnumber 1, and adds a warning for any caller that sends in such an array.\n\nIt would have been nice to have made it so that it wasn\u0027t possible to make\nsuch a collision, but some callers need to be able to control what inode\nnumber their entries get, so I think this is the best that can be done.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\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": "866b04fccbf125cd39f2bdbcfeaa611d39a061a8",
      "tree": "5f59337d971bcb696b75e6fc39ca5d7d2a5a287b",
      "parents": [
        "63bd23591e6c3891d34e4c6dba7c6aa41b05caad"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 08 00:32:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:16 2007 -0700"
      },
      "message": "inode numbering: make static counters in new_inode and iunique be 32 bits\n\nThe problems are:\n\n- on filesystems w/o permanent inode numbers, i_ino values can be larger\n  than 32 bits, which can cause problems for some 32 bit userspace programs on\n  a 64 bit kernel.  We can\u0027t do anything for filesystems that have actual\n  \u003e32-bit inode numbers, but on filesystems that generate i_ino values on the\n  fly, we should try to have them fit in 32 bits.  We could trivially fix this\n  by making the static counters in new_inode and iunique 32 bits, but...\n\n- many filesystems call new_inode and assume that the i_ino values they are\n  given are unique.  They are not guaranteed to be so, since the static\n  counter can wrap.  This problem is exacerbated by the fix for #1.\n\n- after allocating a new inode, some filesystems call iunique to try to get\n  a unique i_ino value, but they don\u0027t actually add their inodes to the\n  hashtable, and so they\u0027re still not guaranteed to be unique if that counter\n  wraps.\n\nThis patch set takes the simpler approach of simply using iunique and hashing\nthe inodes afterward.  Christoph H.  previously mentioned that he thought that\nthis approach may slow down lookups for filesystems that currently hash their\ninodes.\n\nThe questions are:\n\n1) how much would this slow down lookups for these filesystems?\n2) is it enough to justify adding more infrastructure to avoid it?\n\nWhat might be best is to start with this approach and then only move to using\nIDR or some other scheme if these extra inodes in the hashtable prove to be\nproblematic.\n\nI\u0027ve done some cursory testing with this patch and the overhead of hashing and\nunhashing the inodes with pipefs is pretty low -- just a few seconds of system\ntime added on to the creation and destruction of 10 million pipes (very\nsimilar to the overhead that the IDR approach would add).\n\nThe hard thing to measure is what effect this has on other filesystems. I\u0027m\nopen to ways to try and gauge this.\n\nAgain, I\u0027ve only converted pipefs as an example. If this approach is\nacceptable then I\u0027ll start work on patches to convert other filesystems.\n\nWith a pretty-much-worst-case microbenchmark provided by Eric Dumazet\n\u003cdada1@cosmosbay.com\u003e:\n\nhashing patch (pipebench):\nsys     1m15.329s\nsys     1m16.249s\nsys     1m17.169s\n\nunpatched (pipebench):\nsys     1m9.836s\nsys     1m12.541s\nsys     1m14.153s\n\nWhich works out to 1.05642174294555027017.  So ~5-6% slowdown.\n\nThis patch:\n\nWhen a 32-bit program that was not compiled with large file offsets does a\nstat and gets a st_ino value back that won\u0027t fit in the 32 bit field, glibc\n(correctly) generates an EOVERFLOW error.  We can\u0027t do anything about fs\u0027s\nwith larger permanent inode numbers, but when we generate them on the fly, we\nought to try and have them fit within a 32 bit field.\n\nThis patch takes the first step toward this by making the static counters in\nthese two functions be 32 bits.\n\n[jlayton@redhat.com: mention that it\u0027s only the case for 32bit, non-LFS stat]\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\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": "b140f25108a8b11aa4903014814988549838b324",
      "tree": "466b0c1a8056a2307c8219d1dfc5c059c043f07d",
      "parents": [
        "ce0be1273d1473a5a7b57bf0b4995b40c22d6b54"
      ],
      "author": {
        "name": "Alexey Kuznetsov",
        "email": "alexey@openvz.org",
        "time": "Tue May 08 00:31:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:15 2007 -0700"
      },
      "message": "Invalid return value of execve() resulting in oopses\n\nWhen elf loader fails to map executable (due to memory shortage or because\nbinary is malformed), it can return 0.  Normally, this is invisible because\nprocess is killed with SIGKILL and it never returns to user space.\n\nBut if exec() is called from kernel thread (hotplug, whatever)\nconsequences are more interesting and vary depending on architecture.\n\ni386.   Nothing especially interesting, execve() just returns\n        with \"success\"  :-)\n\nx86_64. Fake zero frame is used on way to caller, RSP/RIP are loaded\n        with zeros, ergo... double fault.\n\nia64.   Similar to i386, but r32...r95 are corrupted. Sometimes it\n        oopses due to return to zero PC, sometimes it sees NaT in\n        rXX and oopses due to NaT consumption.\n\nSigned-off-by: Alexey Kuznetsov \u003calexey@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0c28f287aa57e065116731c1e44bedcbc14fd53f",
      "tree": "66fe5fc7a4f8c191a9e05e99bebeb1bc425bbb7c",
      "parents": [
        "346339938ba9bcabd34e5fc8f4b0b0665c507a22"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Tue May 08 00:31:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:14 2007 -0700"
      },
      "message": "procfs: use simple_read_from_buffer()\n\nCleanup using simple_read_from_buffer() in procfs.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@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": "83ae1b79c898838e16ac8cde69b39d22d36fb035",
      "tree": "e7571f14e4167f4425b8b05ed2cf3b59c8b383b5",
      "parents": [
        "a3e0975684337738997771416535d0e5d6fa27cd"
      ],
      "author": {
        "name": "Andreas Schwab",
        "email": "schwab@suse.de",
        "time": "Tue May 08 00:31:38 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:14 2007 -0700"
      },
      "message": "Fix error handling in HDIO_GETGEO compat wrapper\n\nDon\u0027t clobber error from sys_ioctl in HDIO_GETGEO compat wrapper.\n\nSigned-off-by: Andreas Schwab \u003cschwab@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c007c06e3cccf6d80de7f97242da1c3146c431b2",
      "tree": "420cd93ce0dd695de99dbfcf999492b0d2ab2723",
      "parents": [
        "c483bab099cb89e92b7cad94a52fcdaf37e56657"
      ],
      "author": {
        "name": "Stephen Mollett",
        "email": "molletts@yahoo.com",
        "time": "Tue May 08 00:31:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:14 2007 -0700"
      },
      "message": "udf: decrement correct link count in udf_rmdir\n\nIt appears that a minor thinko occurred in udf_rmdir and the\n(already-cleared) link count on the directory that is being removed was\nbeing decremented instead of the link count on its parent directory.  This\ngives rise to lots of kernel messages similar to:\n\nUDF-fs warning (device loop1): udf_rmdir: empty directory has nlink !\u003d 2 (8)\n\nwhen removing directory trees.  No other ill effects have been observed but\nI guess it could theoretically result in the link count overflowing on a\nvery long-lived, much modified directory.\n\nSigned-off-by: Stephen Mollett \u003cmolletts@yahoo.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Jan Kara \u003cjack@ucw.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": "c483bab099cb89e92b7cad94a52fcdaf37e56657",
      "tree": "3cfbd483b70def6032d51029f4cd0edf49458c38",
      "parents": [
        "b247e8aaf2837715d31eb25828fa8b4eb0a659cd"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue May 08 00:31:28 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:14 2007 -0700"
      },
      "message": "fat: fix VFAT compat ioctls on 64-bit systems\n\nIf you compile and run the below test case in an msdos or vfat directory on\nan x86-64 system with -m32 you\u0027ll get garbage in the kernel_dirent struct\nfollowed by a SIGSEGV.\n\nThe patch fixes this.\n\nReported and initial fix by Bart Oldeman\n\n#include \u003csys/types.h\u003e\n#include \u003csys/ioctl.h\u003e\n#include \u003cdirent.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cfcntl.h\u003e\nstruct kernel_dirent {\n         long            d_ino;\n         long\t\td_off;\n         unsigned short  d_reclen;\n         char            d_name[256]; /* We must not include limits.h! */\n};\n#define VFAT_IOCTL_READDIR_BOTH  _IOR(\u0027r\u0027, 1, struct kernel_dirent [2])\n#define VFAT_IOCTL_READDIR_SHORT  _IOR(\u0027r\u0027, 2, struct kernel_dirent [2])\n\nint main(void)\n{\n         int fd \u003d open(\".\", O_RDONLY);\n         struct kernel_dirent de[2];\n\n         while (1) {\n                 int i \u003d ioctl(fd, VFAT_IOCTL_READDIR_BOTH, (long)de);\n                 if (i \u003d\u003d -1) break;\n                 if (de[0].d_reclen \u003d\u003d 0) break;\n                 printf(\"SFN: reclen\u003d%2d off\u003d%d ino\u003d%d, %-12s\",\n \t\t       de[0].d_reclen, de[0].d_off, de[0].d_ino, de[0].d_name);\n \t\tif (de[1].d_reclen)\n \t\t  printf(\"\\tLFN: reclen\u003d%2d off\u003d%d ino\u003d%d, %s\",\n \t\t    de[1].d_reclen, de[1].d_off, de[1].d_ino, de[1].d_name);\n \t\tprintf(\"\\n\");\n         }\n         return 0;\n}\n\nSigned-off-by: Bart Oldeman \u003cbartoldeman@users.sourceforge.net\u003e\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\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": "4f99ed67cc1cf5302ea18aa042d75641b61a0a1b",
      "tree": "abf64c561c22b1aa1ba03f2dfb0bdef4d156ca8a",
      "parents": [
        "28ec039c21839914389975b896160a815ffd8b83"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:31:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "ext3: copy i_flags to inode flags on write\n\nPropagate flags such as S_APPEND, S_IMMUTABLE, etc.  from i_flags into\next2-specific i_flags.  Hence, when someone sets these flags via a different\ninterface than ioctl, they are stored correctly.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28ec039c21839914389975b896160a815ffd8b83",
      "tree": "e6b0364c906ee7409c7bce2d8849420a46cb7c10",
      "parents": [
        "4ff773bbde87f7f7dddc0f579ad53e077a6587b9"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Tue May 08 00:31:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "fat: don\u0027t use free_clusters for fat32\n\nIt seems that the recent Windows changed specification, and it\u0027s\nundocumented.  Windows doesn\u0027t update -\u003efree_clusters correctly.\n\nThis patch doesn\u0027t use -\u003efree_clusters by default.  (instead, add \"usefree\"\nfor forcing to use it)\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Juergen Beisert \u003cjuergen127@kreuzholzen.de\u003e\nCc: Andreas Schwab \u003cschwab@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5ab2f7e0fdd04148e08348701d6bd6a292ce2d26",
      "tree": "50de16bd03833271dad8c36f2b01964445305a66",
      "parents": [
        "35bab756b49bd148760a3bbd3c907cd74754dbb4"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Tue May 08 00:30:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "reiserfs: use __set_current_state()\n\nuse __set_current_state(TASK_*) instead of current-\u003estate \u003d TASK_*, in\nfs/reiserfs\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@gmail.com\u003e\nCc: \u003creiserfs-dev@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97f067846786d255888ccad14e2f38a1f63d8e9b",
      "tree": "ebff291172a51b25a0a0c69c85463f0c789bb2ce",
      "parents": [
        "ee6f958291e2a768fd727e7a67badfff0b67711a"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue May 08 00:30:42 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "jbd: check for error returned by kthread_create on creating journal thread\n\nIf the thread failed to create the subsequent wait_event will hang forever.\n\nThis is likely to happen if kernel hits max_threads limit.\n\nWill be critical for virtualization systems that limit the number of tasks\nand kernel memory usage within the container.\n\n(akpm: JBD should be converted fully to the kthread API: kthread_should_stop()\nand kthread_stop()).\n\nCc: \u003clinux-ext4@vger.kernel.org\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": "ee6f958291e2a768fd727e7a67badfff0b67711a",
      "tree": "1313cb3a5d50a296b1801022f904f3a5e9601de2",
      "parents": [
        "2f1a2ccb9c0de632ab07193becf5f7121794f6ae"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:30:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:12 2007 -0700"
      },
      "message": "check privileges before setting mount propagation\n\nThere\u0027s a missing check for CAP_SYS_ADMIN in do_change_type().\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\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": "28be5abb400e5e082f5225105fdc69337ec0c0b4",
      "tree": "e4bb3e527aac316004be68e28a25b2919e30afd4",
      "parents": [
        "9926e4c74300c4b31dee007298c6475d33369df0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Tue May 08 00:30:33 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:12 2007 -0700"
      },
      "message": "ext3: copy i_flags to inode flags on write\n\nA patch that stores inode flags such as S_IMMUTABLE, S_APPEND, etc.  from\ni_flags to EXT3_I(inode)-\u003ei_flags when inode is written to disk.  The same\nthing is done on GETFLAGS ioctl.\n\nQuota code changes these flags on quota files (to make it harder for\nsysadmin to screw himself) and these changes were not correctly propagated\ninto the filesystem (especially, lsattr did not show them and users were\nwondering...).\n\nPropagate flags such as S_APPEND, S_IMMUTABLE, etc.  from i_flags into\next3-specific i_flags.  Hence, when someone sets these flags via a\ndifferent interface than ioctl, they are stored correctly.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003clinux-ext4@vger.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": "b5e618181a927210f8be1d3d2249d31904ba358d",
      "tree": "731f1ae4ff1ba56d402bb329182b7d935bb439a1",
      "parents": [
        "db9c02fa8bd50eb104781a9f78cae923d8da1e74"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@sw.ru",
        "time": "Tue May 08 00:30:19 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:11 2007 -0700"
      },
      "message": "Introduce a handy list_first_entry macro\n\nThere are many places in the kernel where the construction like\n\n   foo \u003d list_entry(head-\u003enext, struct foo_struct, list);\n\nare used.\nThe code might look more descriptive and neat if using the macro\n\n   list_first_entry(head, type, member) \\\n             list_entry((head)-\u003enext, type, member)\n\nHere is the macro itself and the examples of its usage in the generic code.\n If it will turn out to be useful, I can prepare the set of patches to\ninject in into arch-specific code, drivers, networking, etc.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: John McCutchan \u003cttb@tentacle.dhs.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: john stultz \u003cjohnstul@us.ibm.com\u003e\nCc: Ram Pai \u003clinuxram@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bd0cf1fc78e59e1d2b4e44348a85d39b983c80d",
      "tree": "4c27d740d84fdc95c2c24b2fcc357c654d8dbc83",
      "parents": [
        "f16825bbeb9e6e0970531aa2f21b18b2e8ae9e47"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue May 08 00:30:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:11 2007 -0700"
      },
      "message": "smbfs: remove unnecessary allow_signal\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3361c7bebbf207f57f3dd1282cd87e1e37c082ac",
      "tree": "53c5ee74c70ed9727964996f3cf2fa4a0ff368ea",
      "parents": [
        "9d0633cfedde484d30eef869f749c04709ab3e42"
      ],
      "author": {
        "name": "Jeffrey Layton",
        "email": "jlayton@redhat.com",
        "time": "Tue May 08 00:29:48 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:10 2007 -0700"
      },
      "message": "make iunique use a do/while loop rather than its obscure goto loop\n\nA while back, Christoph mentioned that he thought that iunique ought to be\ncleaned up to use a more conventional loop construct. This patch does that,\nturning the strange goto loop into a do/while.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\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": "9d0633cfedde484d30eef869f749c04709ab3e42",
      "tree": "c234f06a36ba6344489597f0084a616948a419c2",
      "parents": [
        "1e8123fdeda6b2b9e96f2ec56e7bed27a303d3eb"
      ],
      "author": {
        "name": "John Johansen",
        "email": "jjohansen@suse.de",
        "time": "Tue May 08 00:29:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:10 2007 -0700"
      },
      "message": "Remove redundant check from proc_sys_setattr()\n\nnotify_change() already calls security_inode_setattr() before\ncalling iop-\u003esetattr.\n\nAlan sayeth\n\n  This is a behaviour change on all of these and limits some behaviour of\n  existing established security modules\n\n  When inode_change_ok is called it has side effects.  This includes\n  clearing the SGID bit on attribute changes caused by chmod.  If you make\n  this change the results of some rulesets may be different before or after\n  the change is made.\n\n  I\u0027m not saying the change is wrong but it does change behaviour so that\n  needs looking at closely (ditto all other attribute twiddles)\n\nSigned-off-by: Steve Beattie \u003csbeattie@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: John Johansen \u003cjjohansen@suse.de\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.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": "1e8123fdeda6b2b9e96f2ec56e7bed27a303d3eb",
      "tree": "5a969db27d16a0dd324277618c519cd98e0c7abe",
      "parents": [
        "49a4ec188f9a96c9a5567956718213d38a456a19"
      ],
      "author": {
        "name": "John Johansen",
        "email": "jjohansen@suse.de",
        "time": "Tue May 08 00:29:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:10 2007 -0700"
      },
      "message": "Remove redundant check from proc_setattr()\n\nnotify_change() already calls security_inode_setattr() before\ncalling iop-\u003esetattr.\n\nSigned-off-by: Tony Jones \u003ctonyj@suse.de\u003e\nSigned-off-by: Andreas Gruenbacher \u003cagruen@suse.de\u003e\nSigned-off-by: John Johansen \u003cjjohansen@suse.de\u003e\nAcked-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\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": "09f0892ec7f8068ba1d1fcef4d1fca23ec96e0dd",
      "tree": "1ff23e62d08a673cb29fc63c33e0381564e9dab3",
      "parents": [
        "5a0c6a0d1ae97473291f479ef64573d6b2c0e2d5"
      ],
      "author": {
        "name": "Martin Peschke",
        "email": "mp3@de.ibm.com",
        "time": "Tue May 08 00:29:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "proc: cleanup: use seq_release_private() where appropriate\n\nWe can save some lines of code by using seq_release_private().\n\nSigned-off-by: Martin Peschke \u003cmp3@de.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6272e2667965dfb5b59199f462cd0f001fb304a6",
      "tree": "a14a4537dcd7af09863cc3a1c19a3efe386d67ab",
      "parents": [
        "039b6b3ed84e45a6f8316358dd2bfdc83d59fc45"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:29:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "cleanup compat ioctl handling\n\nMerge all compat ioctl handling into compat_ioctl.c instead of splitting it\nover compat.c and compat_ioctl.c.  This also allows to get rid of ioctl32.h\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nLooks-good-to: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19d0e8ce856a7628a630710aed82931ce1c7eb97",
      "tree": "f2d111b8723417ddc1b136c405923a49d4fce62a",
      "parents": [
        "e729aa16b168fb202d1a20f936028cb7c2a0278d"
      ],
      "author": {
        "name": "Philippe De Muyter",
        "email": "phdm@macqel.be",
        "time": "Tue May 08 00:29:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "partition: add support for sysv68 partitions\n\nAdd support for the Motorola sysv68 disk partition (slices in motorola\ndoc).\n\nSigned-off-by: Philippe De Muyter \u003cphdm@macqel.be\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "644fd4f5de9ca147daeb6dc5f844b44ec3d58b47",
      "tree": "d9bd9c9bc6c02077e5f2d19556377a30c31cd0c9",
      "parents": [
        "884f2810b15b6bb489c9dca5013aafbea2f19fba"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:29:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "merge compat_ioctl.h into compat_ioctl.c\n\nNow that there is no arch-specific compat ioctl handling left there is not\npoint in having a separate copat_ioctl.h, so merge it into compat_ioctl.c\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1525dccbc248b87568f2477f1b2d417b69d418c3",
      "tree": "172b8bb89faf202477db7a587aadb6369ad95cf6",
      "parents": [
        "022a1692444cd683ef42f637cc717db4d8fd9378"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Tue May 08 00:29:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "ROUND_UP macro cleanup in fs/smbfs/request.c\n\nROUND_UP macro cleanup use ALIGN\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@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": "022a1692444cd683ef42f637cc717db4d8fd9378",
      "tree": "82d8c1360921310f90b81c147b345afad98317f7",
      "parents": [
        "10f8a59813ee8bb41fb1d72ed2ec12a1c9f66da2"
      ],
      "author": {
        "name": "Milind Arun Choudhary",
        "email": "milindchoudhary@gmail.com",
        "time": "Tue May 08 00:29:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:09 2007 -0700"
      },
      "message": "ROUND_UP macro cleanup in fs/(select|compat|readdir).c\n\nROUND_UP macro cleanup use,ALIGN or DIV_ROUND_UP where ever appropriate.\n\nSigned-off-by: Milind Arun Choudhary \u003cmilindchoudhary@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": "7e80d0d0b64f5c00b0ac7e623d96189309c298ca",
      "tree": "748942edea32fb94fdc74c0aaee06acd3d1bffc5",
      "parents": [
        "b259d74b39595f6ac74c3627b9c3657ac90249a0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue May 08 00:28:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "i386: sched.h inclusion from module.h is baack\n\n  linux/module.h\n  -\u003e linux/elf.h\n     -\u003e asm-i386/elf.h\n        -\u003e linux/utsname.h\n           -\u003e linux/sched.h\n\nNoticeably cut the number of files which are rebuild upon touching sched.h\nand cut down pulled junk from every module.h inclusion.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@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": "9d65cb4a1718a072898c7a57a3bc61b2dc4bcd4d",
      "tree": "9e3fd1c9e61e8ed16959d115a9a3f6f7eb0bbf21",
      "parents": [
        "ffb45122766db220d0bf3d01848d575fbbcb6430"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:28:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "Fix race between cat /proc/*/wchan and rmmod et al\n\nkallsyms_lookup() can go iterating over modules list unprotected which is OK\nfor emergency situations (oops), but not OK for regular stuff like\n/proc/*/wchan.\n\nIntroduce lookup_symbol_name()/lookup_module_symbol_name() which copy symbol\nname into caller-supplied buffer or return -ERANGE.  All copying is done with\nmodule_mutex held, so...\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ffb45122766db220d0bf3d01848d575fbbcb6430",
      "tree": "a8fedf0518407ad12578a7c03aa2c3344f11ff3c",
      "parents": [
        "ea07890a680273b25127129fb555aac0d9324bea"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:28:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "Simplify kallsyms_lookup()\n\nSeveral kallsyms_lookup() pass dummy arguments but only need, say, module\u0027s\nname.  Make kallsyms_lookup() accept NULLs where possible.\n\nAlso, makes picture clearer about what interfaces are needed for all symbol\nresolving business.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98701d1b0fe98b477b53df89114e6862547f8107",
      "tree": "4ccfe162116056c1af41563ef4ea6c93bb7067f3",
      "parents": [
        "0f95b7fc839bc3272b1bf2325d8748a649bd3534"
      ],
      "author": {
        "name": "kalash nainwal",
        "email": "kalash.nainwal@gmail.com",
        "time": "Tue May 08 00:28:31 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "(re)register_binfmt returns with -EBUSY\n\nWhen a binary format is unregistered and re-registered, register_binfmt\nfails with -EBUSY.  The reason is that unregister_binfmt does not set\nfmt-\u003enext to NULL, and seeing (fmt-\u003enext !\u003d NULL), register_binfmt fails\nwith -EBUSY.\n\nOne can find his way around by explicitly setting fmt-\u003enext to NULL after\nunregistering, but that is kind of unclean (one should better be using only\nthe interfaces, and not the interal members, isn\u0027t it?)\n\nAttached one-liner can fix it.\n\nSigned-off-by: Kalash Nainwal \u003ckalash.nainwal@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": "e63340ae6b6205fef26b40a75673d1c9c0c8bb90",
      "tree": "8d3212705515edec73c3936bb9e23c71d34a7b41",
      "parents": [
        "04c9167f91e309c9c4ea982992aa08e83b2eb42e"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:28:08 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:07 2007 -0700"
      },
      "message": "header cleaning: don\u0027t include smp_lock.h when not used\n\nRemove includes of \u003clinux/smp_lock.h\u003e where it is not used/needed.\nSuggested by Al Viro.\n\nBuilds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,\nsparc64, and arm (all 59 defconfigs).\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e5f00f42f35e6f4699f105a3bd56874847cbf72f",
      "tree": "ac4e5c0a9fbafceacf5e78281bab508ba03e5044",
      "parents": [
        "c6b40d16d1cfa1a01158049bb887a9bbe48ef7ba"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue May 08 00:27:22 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:05 2007 -0700"
      },
      "message": "make remove_inode_dquot_ref() static\n\nremove_inode_dquot_ref() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca509f69dec7fa564005aa7e9fcf0cd46de3f7d6",
      "tree": "75bee6e2186c6864c10e5ab46bab2d967a9fe006",
      "parents": [
        "ef51c97623b94f51e439ac91d2736aab3d1b6594"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:27:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:05 2007 -0700"
      },
      "message": "Protect tty drivers list with tty_mutex\n\nAdditions and removal from tty_drivers list were just done as well as\niterating on it for /proc/tty/drivers generation.\n\ntesting: modprobe/rmmod loop of simple module which does nothing but\ntty_register_driver() vs cat /proc/tty/drivers loop\n\nBUG: unable to handle kernel paging request at virtual address 6b6b6b6b\n printing eip:\nc01cefa7\n*pde \u003d 00000000\nOops: 0000 [#1]\nPREEMPT\nlast sysfs file: devices/pci0000:00/0000:00:1d.7/usb5/5-0:1.0/bInterfaceProtocol\nModules linked in: ohci_hcd af_packet e1000 ehci_hcd uhci_hcd usbcore xfs\nCPU:    0\nEIP:    0060:[\u003cc01cefa7\u003e]    Not tainted VLI\nEFLAGS: 00010297   (2.6.21-rc4-mm1 #4)\nEIP is at vsnprintf+0x3a4/0x5fc\neax: 6b6b6b6b   ebx: f6cb50f2   ecx: 6b6b6b6b   edx: fffffffe\nesi: c0354700   edi: f6cb6000   ebp: 6b6b6b6b   esp: f31f5e68\nds: 007b   es: 007b   fs: 00d8  gs: 0033  ss: 0068\nProcess cat (pid: 31864, ti\u003df31f4000 task\u003dc1998030 task.ti\u003df31f4000)\nStack: 00000000 c0103f20 c013003a c0103f20 00000000 f6cb50da 0000000a 00000f0e\n       f6cb50f2 00000010 00000014 ffffffff ffffffff 00000007 c0354753 f6cb50f2\n       f73e39dc f73e39dc 00000001 c0175416 f31f5ed8 f31f5ed4 0ee00000 f32090bc\nCall Trace:\n [\u003cc0103f20\u003e] restore_nocheck+0x12/0x15\n [\u003cc013003a\u003e] mark_held_locks+0x6d/0x86\n [\u003cc0103f20\u003e] restore_nocheck+0x12/0x15\n [\u003cc0175416\u003e] seq_printf+0x2e/0x52\n [\u003cc0192895\u003e] show_tty_range+0x35/0x1f3\n [\u003cc0175416\u003e] seq_printf+0x2e/0x52\n [\u003cc0192add\u003e] show_tty_driver+0x8a/0x1d9\n [\u003cc01758f6\u003e] seq_read+0x70/0x2ba\n [\u003cc0175886\u003e] seq_read+0x0/0x2ba\n [\u003cc018d8e6\u003e] proc_reg_read+0x63/0x9f\n [\u003cc015e764\u003e] vfs_read+0x7d/0xb5\n [\u003cc018d883\u003e] proc_reg_read+0x0/0x9f\n [\u003cc015eab1\u003e] sys_read+0x41/0x6a\n [\u003cc0103e4e\u003e] sysenter_past_esp+0x5f/0x99\n \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nCode: 00 8b 4d 04 e9 44 ff ff ff 8d 4d 04 89 4c 24 50 8b 6d 00 81 fd ff 0f 00 00 b8 a4 c1 35 c0 0f 46 e8 8b 54 24 2c 89 e9 89 c8 eb 06 \u003c80\u003e 38 00 74 07 40 4a 83 fa ff 75 f4 29 c8 89 c6 8b 44 24 28 89\nEIP: [\u003cc01cefa7\u003e] vsnprintf+0x3a4/0x5fc SS:ESP 0068:f31f5e68\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.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": "ef51c97623b94f51e439ac91d2736aab3d1b6594",
      "tree": "5c020421f1e5a6e28b5a9f341fec32479a8ffb3a",
      "parents": [
        "524e6752912a891a396a9cf74c5d7d60fff5510a"
      ],
      "author": {
        "name": "Mark Fasheh",
        "email": "mark.fasheh@oracle.com",
        "time": "Tue May 08 00:27:10 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "Remove do_sync_file_range()\n\nRemove do_sync_file_range() and convert callers to just use\ndo_sync_mapping_range().\n\nSigned-off-by: Mark Fasheh \u003cmark.fasheh@oracle.com\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": "880ebdc5166aa6a0aa2a3218357a3d6e0eebcec8",
      "tree": "9c8399771750d93ac8db22d178f18b0a87d884f2",
      "parents": [
        "98a27ba485c7508ef9d9527fe06e4686f3a163dc"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue May 08 00:26:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "reiserfs: proc support requires PROC_FS\n\nREISER_FS /proc option needs to depend on PROC_FS.\n\nfs/reiserfs/procfs.c: In function \u0027show_super\u0027:\nfs/reiserfs/procfs.c:134: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027max_hash_collisions\u0027\nfs/reiserfs/procfs.c:134: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027breads\u0027\nfs/reiserfs/procfs.c:135: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027bread_miss\u0027\nfs/reiserfs/procfs.c:135: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027search_by_key\u0027\nfs/reiserfs/procfs.c:136: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027search_by_key_fs_changed\u0027\nfs/reiserfs/procfs.c:136: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027search_by_key_restarted\u0027\nfs/reiserfs/procfs.c:137: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027insert_item_restarted\u0027\nfs/reiserfs/procfs.c:137: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027paste_into_item_restarted\u0027\nfs/reiserfs/procfs.c:138: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027cut_from_item_restarted\u0027\nfs/reiserfs/procfs.c:139: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027delete_solid_item_restarted\u0027\nfs/reiserfs/procfs.c:139: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027delete_item_restarted\u0027\nfs/reiserfs/procfs.c:140: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027leaked_oid\u0027\nfs/reiserfs/procfs.c:140: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027leaves_removable\u0027\nfs/reiserfs/procfs.c: In function \u0027show_per_level\u0027:\nfs/reiserfs/procfs.c:184: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027balance_at\u0027\nfs/reiserfs/procfs.c:185: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027sbk_read_at\u0027\nfs/reiserfs/procfs.c:186: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027sbk_fs_changed\u0027\nfs/reiserfs/procfs.c:187: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027sbk_restarted\u0027\nfs/reiserfs/procfs.c:188: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027free_at\u0027\nfs/reiserfs/procfs.c:189: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027items_at\u0027\nfs/reiserfs/procfs.c:190: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027can_node_be_removed\u0027\nfs/reiserfs/procfs.c:191: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027lnum\u0027\nfs/reiserfs/procfs.c:192: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027rnum\u0027\nfs/reiserfs/procfs.c:193: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027lbytes\u0027\nfs/reiserfs/procfs.c:194: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027rbytes\u0027\nfs/reiserfs/procfs.c:195: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027get_neighbors\u0027\nfs/reiserfs/procfs.c:196: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027get_neighbors_restart\u0027\nfs/reiserfs/procfs.c:197: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027need_l_neighbor\u0027\nfs/reiserfs/procfs.c:197: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027need_r_neighbor\u0027\nfs/reiserfs/procfs.c: In function \u0027show_bitmap\u0027:\nfs/reiserfs/procfs.c:224: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027free_block\u0027\nfs/reiserfs/procfs.c:225: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:226: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:227: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:228: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:229: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:230: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c:230: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027scan_bitmap\u0027\nfs/reiserfs/procfs.c: In function \u0027show_journal\u0027:\nfs/reiserfs/procfs.c:384: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:385: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:386: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:387: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:388: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:389: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:390: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:391: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:392: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:393: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:394: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:395: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:395: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c:395: error: \u0027reiserfs_proc_info_data_t\u0027 has no member named \u0027journal\u0027\nfs/reiserfs/procfs.c: In function \u0027reiserfs_proc_info_init\u0027:\nfs/reiserfs/procfs.c:504: warning: implicit declaration of function \u0027__PINFO\u0027\nfs/reiserfs/procfs.c:504: error: request for member \u0027lock\u0027 in something not a structure or union\nfs/reiserfs/procfs.c: In function \u0027reiserfs_proc_info_done\u0027:\nfs/reiserfs/procfs.c:544: error: request for member \u0027lock\u0027 in something not a structure or union\nfs/reiserfs/procfs.c:545: error: request for member \u0027exiting\u0027 in something not a structure or union\nfs/reiserfs/procfs.c:546: error: request for member \u0027lock\u0027 in something not a structure or union\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19c5d45a09312ca20cd1f9df3fd1a87fe0cb8aac",
      "tree": "de228e847ea4846e77cd64b35ca74eb5daa3d242",
      "parents": [
        "72c1bbf308c75a136803d2d76d0e18258be14c7a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:26:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:04 2007 -0700"
      },
      "message": "/proc/*/oom_score oops re badness\n\nEternal quest to make\n\n\twhile true; do cat /proc/fs/xfs/stat \u003e/dev/null 2\u003e/dev/null; done\n\twhile true; do find /proc -type f 2\u003e/dev/null | xargs cat \u003e/dev/null 2\u003e/dev/null; done\n\twhile true; do modprobe xfs; rmmod xfs; done\n\nwork reliably continues and now kernel oopses in the following way:\n\nBUG: unable to handle ... at virtual address 6b6b6b6b\nEIP is at badness\nprocess: cat\n\tproc_oom_score\n\tproc_info_read\n\tsys_fstat64\n\tvfs_read\n\tproc_info_read\n\tsys_read\n\nFailing code is prefetch hidden in list_for_each_entry() in badness().\nbadness() is reachable from two points. One is proc_oom_score, another\nis out_of_memory() \u003d\u003e select_bad_process() \u003d\u003e badness().\n\nSecond path grabs tasklist_lock, while first doesn\u0027t.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c23fbb6bcb3eb9cdf39a103edadf57bde8ce309c",
      "tree": "d79ab2278774de2c1a8061aa948ed068902e87b4",
      "parents": [
        "2793274298c4423d79701e9a8190f2940bf3c785"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:26:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "VFS: delay the dentry name generation on sockets and pipes\n\n1) Introduces a new method in \u0027struct dentry_operations\u0027.  This method\n   called d_dname() might be called from d_path() to build a pathname for\n   special filesystems.  It is called without locks.\n\n   Future patches (if we succeed in having one common dentry for all\n   pipes/sockets) may need to change prototype of this method, but we now\n   use : char *d_dname(struct dentry *dentry, char *buffer, int buflen);\n\n2) Adds a dynamic_dname() helper function that eases d_dname() implementations\n\n3) Defines d_dname method for sockets : No more sprintf() at socket\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\n4) Defines d_dname method for pipes : No more sprintf() at pipe\n   creation.  This is delayed up to the moment someone does an access to\n   /proc/pid/fd/...\n\nA benchmark consisting of 1.000.000 calls to pipe()/close()/close() gives a\n*nice* speedup on my Pentium(M) 1.6 Ghz :\n\n3.090 s instead of 3.450 s\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2793274298c4423d79701e9a8190f2940bf3c785",
      "tree": "8cc0cf9889f3426b9ca50d3cfa15e775ad31d2d8",
      "parents": [
        "c5141e6d64ab5c48a5e31413c7a6cdda84ac1d52"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:26:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "add file position info to proc\n\nAdd support for finding out the current file position, open flags and\npossibly other info in the future.\n\nThese new entries are added:\n\n  /proc/PID/fdinfo/FD\n  /proc/PID/task/TID/fdinfo/FD\n\nFor each fd the information is provided in the following format:\n\npos:\t1234\nflags:\t0100002\n\n[bunk@stusta.de: make struct proc_fdinfo_file_operations static]\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5141e6d64ab5c48a5e31413c7a6cdda84ac1d52",
      "tree": "95a93ed2f56e98f6b6659ab906faee7abb252a49",
      "parents": [
        "d9a2f4a4945ebff54c9a011e4dc6e92d899ae26d"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Tue May 08 00:26:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:03 2007 -0700"
      },
      "message": "procfs: reorder struct pid_dentry to save space on 64bit archs, and constify them\n\nChange the order of fields of struct pid_entry (file fs/proc/base.c) in order\nto avoid a hole on 64bit archs.  (8 bytes saved per object)\n\nAlso change all pid_entry arrays to be const qualified, to make clear they\nmust not be modified.\n\nBefore (on x86_64) :\n\n# size fs/proc/base.o\n   text    data     bss     dec     hex filename\n  15549    2192       0   17741    454d fs/proc/base.o\n\nAfter :\n\n# size fs/proc/base.o\n   text    data     bss     dec     hex filename\n  17229     176       0   17405    43fd fs/proc/base.o\n\nThats 336 bytes saved on kernel size on x86_64\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nAcked-by: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5096add84b9e96e2e0a9c72675c442fe5433388a",
      "tree": "f0444013cb7db32596d2b6febafc1ee4c2a4ea1f",
      "parents": [
        "4a1ccb5b1eff949a90ab830869cb23d6609c3d5f"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "kees@outflux.net",
        "time": "Tue May 08 00:26:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "proc: maps protection\n\nThe /proc/pid/ \"maps\", \"smaps\", and \"numa_maps\" files contain sensitive\ninformation about the memory location and usage of processes.  Issues:\n\n- maps should not be world-readable, especially if programs expect any\n  kind of ASLR protection from local attackers.\n- maps cannot just be 0400 because \"-D_FORTIFY_SOURCE\u003d2 -O2\" makes glibc\n  check the maps when %n is in a *printf call, and a setuid(getuid())\n  process wouldn\u0027t be able to read its own maps file.  (For reference\n  see http://lkml.org/lkml/2006/1/22/150)\n- a system-wide toggle is needed to allow prior behavior in the case of\n  non-root applications that depend on access to the maps contents.\n\nThis change implements a check using \"ptrace_may_attach\" before allowing\naccess to read the maps contents.  To control this protection, the new knob\n/proc/sys/kernel/maps_protect has been added, with corresponding updates to\nthe procfs documentation.\n\n[akpm@linux-foundation.org: build fixes]\n[akpm@linux-foundation.org: New sysctl numbers are old hat]\nSigned-off-by: Kees Cook \u003ckees@outflux.net\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5843205b55d0ec9564289d4b41bab093ae15f51a",
      "tree": "c8a1425db57354635137b33c5c44e33441bbbc53",
      "parents": [
        "acb0c854fa9483fa85e377b9f342352ea814a580"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:25:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "namei.c: remove utterly outdated comment\n\nWe don\u0027t have a routine called namei() anymore since at least 2.3.x, and\nthe comment is just totally out of sync with the current lookup logic.\n\nSigned-off-by: 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": "acb0c854fa9483fa85e377b9f342352ea814a580",
      "tree": "654c7049c01b97314f2b93671b7d0c315a40adcf",
      "parents": [
        "578c8183c116e623d53b05d4c79762d053c7090f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:25:52 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "vfs: remove superflous sb \u003d\u003d NULL checks\n\ninode-\u003ei_sb is always set, not need to check for it.\n\nSigned-off-by: 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": "578c8183c116e623d53b05d4c79762d053c7090f",
      "tree": "783cb8471e5efdb486fc7dd4f5de53038a96f8a7",
      "parents": [
        "59cd0cbc75367b82f704f63b104117462275060d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:25:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "proc: remove pathetic -\u003edeleted WARN_ON\n\nWARN_ON(de \u0026\u0026 de-\u003edeleted); is sooo unreliable. Why?\n\nproc_lookup\t\t\t\tremove_proc_entry\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nlock_kernel();\nspin_lock(\u0026proc_subdir_lock);\n[find proc entry]\nspin_unlock(\u0026proc_subdir_lock);\n\t\t\t\t\tspin_lock(\u0026proc_subdir_lock);\n\t\t\t\t\t[find proc entry]\n\nproc_get_inode\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nWARN_ON(de \u0026\u0026 de-\u003edeleted);\t\t\t...\n\n\t\t\t\t\tif (!atomic_read(\u0026de-\u003ecount))\n\t\t\t\t\t\tfree_proc_entry(de);\n\t\t\t\t\telse\n\t\t\t\t\t\tde-\u003edeleted \u003d 1;\n\nSo, if you have some strange oops [1], and doesn\u0027t see this WARN_ON it means\nnothing.\n\n[1] try_module_get() of module which doesn\u0027t exist, two lines below\n    should suffice, or not?\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "59cd0cbc75367b82f704f63b104117462275060d",
      "tree": "695c4f7af4cf840a7e22e7767e1b5705e0b6d8d1",
      "parents": [
        "7695650a924a6859910c8c19dfa43b4d08224d66"
      ],
      "author": {
        "name": "Darrick J. Wong",
        "email": "djwong@us.ibm.com",
        "time": "Tue May 08 00:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:02 2007 -0700"
      },
      "message": "Fix race between proc_readdir and remove_proc_entry\n\nFix the following race:\n\nproc_readdir\t\t\t\tremove_proc_entry\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nspin_lock(\u0026proc_subdir_lock);\n[choose PDE to start filldir from]\nspin_unlock(\u0026proc_subdir_lock);\n\t\t\t\t\tspin_lock(\u0026proc_subdir_lock);\n\t\t\t\t\t[find PDE]\n\t\t\t\t\t[free PDE, refcount is 0]\n\t\t\t\t\tspin_unlock(\u0026proc_subdir_lock);\n\t\t    /* boom */\nif (filldir(dirent, de-\u003ename, ...\n\n[de_put on error path --adobriyan]\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7695650a924a6859910c8c19dfa43b4d08224d66",
      "tree": "5947c3e1b24600b6440468c11b30feeef31eee2c",
      "parents": [
        "79c0b2df79eb56fc71e54c75cd7fb3acf84370f9"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@openvz.org",
        "time": "Tue May 08 00:25:45 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "Fix race between proc_get_inode() and remove_proc_entry()\n\nproc_lookup\t\t\t\tremove_proc_entry\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\t\t\t\t\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nlock_kernel();\nspin_lock(\u0026proc_subdir_lock);\n[find PDE with refcount 0]\nspin_unlock(\u0026proc_subdir_lock);\n\t\t\t\t\tspin_lock(\u0026proc_subdir_lock);\n\t\t\t\t\t[find PDE with refcount 0]\n\t\t\t\t\t[check refcount and free PDE]\n\t\t\t\t\tspin_unlock(\u0026proc_subdir_lock);\nproc_get_inode:\n\tde_get(de); /* boom */\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "79c0b2df79eb56fc71e54c75cd7fb3acf84370f9",
      "tree": "f19be816fef3565b7f9cc746786e29fee0ac62e6",
      "parents": [
        "880afc4d76af452267174b5989943f081c1db2c0"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:25:43 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "add filesystem subtype support\n\nThere\u0027s a slight problem with filesystem type representation in fuse\nbased filesystems.\n\nFrom the kernel\u0027s view, there are just two filesystem types: fuse and\nfuseblk.  From the user\u0027s view there are lots of different filesystem\ntypes.  The user is not even much concerned if the filesystem is fuse based\nor not.  So there\u0027s a conflict of interest in how this should be\nrepresented in fstab, mtab and /proc/mounts.\n\nThe current scheme is to encode the real filesystem type in the mount\nsource.  So an sshfs mount looks like this:\n\n  sshfs#user@server:/   /mnt/server    fuse   rw,nosuid,nodev,...\n\nThis url-ish syntax works OK for sshfs and similar filesystems.  However\nfor block device based filesystems (ntfs-3g, zfs) it doesn\u0027t work, since\nthe kernel expects the mount source to be a real device name.\n\nA possibly better scheme would be to encode the real type in the type\nfield as \"type.subtype\".  So fuse mounts would look like this:\n\n  /dev/hda1       /mnt/windows   fuseblk.ntfs-3g   rw,...\n  user@server:/   /mnt/server    fuse.sshfs        rw,nosuid,nodev,...\n\nThis patch adds the necessary code to the kernel so that this can be\ncorrectly displayed in /proc/mounts.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6192bd536f96c6a0d969081bc71ae24f9319bfdc",
      "tree": "07056ed061df4070d22198b5b6692d102aeacc00",
      "parents": [
        "44171df8e944f0bc8f7fa3f6d080f3e671431989"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue May 08 00:25:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "epoll: optimizations and cleanups\n\nEpoll is doing multiple passes over the ready set at the moment, because of\nthe constraints over the f_op-\u003epoll() call.  Looking at the code again, I\nnoticed that we already hold the epoll semaphore in read, and this\n(together with other locking conditions that hold while doing an\nepoll_wait()) can lead to a smarter way [1] to \"ship\" events to userspace\n(in a single pass).\n\nThis is a stress application that can be used to test the new code.  It\nspwans multiple thread and call epoll_wait() and epoll_ctl() from many\nthreads.  Stress tested on my dual Opteron 254 w/out any problems.\n\nhttp://www.xmailserver.org/totalmess.c\n\nThis is not a benchmark, just something that tries to stress and exploit\npossible problems with the new code.\nAlso, I made a stupid micro-benchmark:\n\nhttp://www.xmailserver.org/epwbench.c\n\n[1] Considering that epoll must be thread-safe, there are five ways we can\n    be hit during an epoll_wait() transfer loop (ep_send_events()):\n\n    1) The epoll fd going away and calling ep_free\n       This just can\u0027t happen, since we did an fget() in sys_epoll_wait\n\n    2) An epoll_ctl(EPOLL_CTL_DEL)\n       This can\u0027t happen because epoll_ctl() gets ep-\u003esem in write, and\n       we\u0027re holding it in read during ep_send_events()\n\n    3) An fd stored inside the epoll fd going away\n       This can\u0027t happen because in eventpoll_release_file() we get\n       ep-\u003esem in write, and we\u0027re holding it in read during\n       ep_send_events()\n\n    4) Another epoll_wait() happening on another thread\n       They both can be inside ep_send_events() at the same time, we get\n       (splice) the ready-list under the spinlock, so each one will get\n       its own ready list. Note that an fd cannot be at the same time\n       inside more than one ready list, because ep_poll_callback() will\n       not re-queue it if it sees it already linked:\n\n       if (ep_is_linked(\u0026epi-\u003erdllink))\n                goto is_linked;\n\n       Another case that can happen, is two concurrent epoll_wait(),\n       coming in with a userspace event buffer of size, say, ten.\n       Suppose there are 50 event ready in the list. The first\n       epoll_wait() will \"steal\" the whole list, while the second, seeing\n       no events, will go to sleep. But at the end of ep_send_events() in\n       the first epoll_wait(), we will re-inject surplus ready fds, and we\n       will trigger the proper wake_up to the second epoll_wait().\n\n    5) ep_poll_callback() hitting us asyncronously\n       This is the tricky part. As I said above, the ep_is_linked() test\n       done inside ep_poll_callback(), will guarantee us that until the\n       item will result linked to a list, ep_poll_callback() will not try\n       to re-queue it again (read, write data on any of its members). When\n       we do a list_del() in ep_send_events(), the item will still satisfy\n       the ep_is_linked() test (whatever data is written in prev/next,\n       it\u0027ll never be its own pointer), so ep_poll_callback() will still\n       leave us alone. It\u0027s only after the eventual smp_mb()+INIT_LIST_HEAD(\u0026epi-\u003erdllink)\n       that it\u0027ll become visible to ep_poll_callback(), but at the point\n       we\u0027re already past it.\n\n[akpm@osdl.org: 80 cols]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fedee54d8f12cdfde299f181fec5c62b0c647ad6",
      "tree": "815a5de82d0c242bb1e6a012a237d0715c3b08af",
      "parents": [
        "753e9c5cd9b123156152c66c816f751954b15e53"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@sw.ru",
        "time": "Tue May 08 00:25:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:01 2007 -0700"
      },
      "message": "ext3: dirindex error pointer issues\n\n- ext3_dx_find_entry() exit with out setting proper error pointer\n\n- do_split() exit with out setting proper error pointer\n  it is realy painful because many callers contain folowing code:\n\n          de \u003d do_split(handle,dir, \u0026bh, frame, \u0026hinfo, \u0026retval);\n          if (!(de))\n                       return retval;\n          \u003c\u003c\u003c WOW retval wasn\u0027t changed by do_split(), so caller failed\n          \u003c\u003c\u003c but return SUCCESS :)\n\n- Rearrange do_split() error path. Current error path is realy ugly, all\n  this up and down jump stuff doesn\u0027t make code easy to understand.\n\n[dmonakhov@sw.ru: fix annoying fake error messages]\nSigned-off-by: Monakhov Dmitriy \u003cdmonakhov@openvz.org\u003e\nCc: Andreas Dilger \u003cadilger@clusterfs.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Monakhov Dmitriy \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3222c4ecc649c4ae568e61dda9349482401b501",
      "tree": "d96614ef67d947a3dd8ab0929a4755bce9fdbcc1",
      "parents": [
        "4fc75ff4816c3483b4b772b2f6cb3d8fd88ca547"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Tue May 08 00:25:21 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:00 2007 -0700"
      },
      "message": "Merge sys_clone()/sys_unshare() nsproxy and namespace handling\n\nsys_clone() and sys_unshare() both makes copies of nsproxy and its associated\nnamespaces.  But they have different code paths.\n\nThis patch merges all the nsproxy and its associated namespace copy/clone\nhandling (as much as possible).  Posted on container list earlier for\nfeedback.\n\n- Create a new nsproxy and its associated namespaces and pass it back to\n  caller to attach it to right process.\n\n- Changed all copy_*_ns() routines to return a new copy of namespace\n  instead of attaching it to task-\u003ensproxy.\n\n- Moved the CAP_SYS_ADMIN checks out of copy_*_ns() routines.\n\n- Removed unnessary !ns checks from copy_*_ns() and added BUG_ON()\n  just incase.\n\n- Get rid of all individual unshare_*_ns() routines and make use of\n  copy_*_ns() instead.\n\n[akpm@osdl.org: cleanups, warning fix]\n[clg@fr.ibm.com: remove dup_namespaces() declaration]\n[serue@us.ibm.com: fix CONFIG_IPC_NS\u003dn, clone(CLONE_NEWIPC) retval]\n[akpm@linux-foundation.org: fix build with CONFIG_SYSVIPC\u003dn]\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: \u003ccontainers@lists.osdl.org\u003e\nSigned-off-by: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fc75ff4816c3483b4b772b2f6cb3d8fd88ca547",
      "tree": "f2169f152113af815e69d74ca40c282439e7c3f6",
      "parents": [
        "af7c693f146069a1f44739acef9abf1bc27f7247"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue May 08 00:25:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:00 2007 -0700"
      },
      "message": "exec: fix remove_arg_zero\n\nPetr Tesarik discovered a problem in remove_arg_zero(). He writes:\n\n When a script is loaded, load_script() replaces argv[0] with the\n name of the interpreter and the filename passed to the exec syscall.\n However, there is no guarantee that the length of the interpreter\n name plus the length of the filename is greater than the length of\n the original argv[0]. If the difference happens to cross a page boundary,\n setup_arg_pages() will call put_dirty_page() [aka install_arg_page()]\n with an address outside the VMA.\n\n Therefore, remove_arg_zero() must free all pages which would be unused\n after the argument is removed.\n\nSo, rewrite the remove_arg_zero function without gotos, with a few comments,\nand with the commonly used explicit index/offset. This fixes the problem\nand makes it easier to understand as well.\n\n[a.p.zijlstra@chello.nl: add comment]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Petr Tesarik \u003cptesarik@suse.cz\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f87367a6b1e3ec1fd440158e5eb357fbd5c2288e",
      "tree": "fdf4aa72f4cad79f425fef94dcc5a29b5df18f73",
      "parents": [
        "6d4f9c55002544bac1c99d0bab46c89319ab876e"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Tue May 08 00:25:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:00 2007 -0700"
      },
      "message": "reiserfs: correct misspelled \"REISERFS_PROC_INFO\" to \"CONFIG_REISERFS_PROC_INFO\"\n\nCorrect the misspelling of the preprocessor check of a Kconfig option to refer\nto CONFIG_REISERFS_PROC_INFO and not just the incorrect REISERFS_PROC_INFO.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe08a9d4982d9618ec25760ea715c46fe051e508",
      "tree": "6535cfaf206d19cb0a5e09192f49b37e91ba6232",
      "parents": [
        "6f2fad748ccced5b9313efce2a2c7ae4c04ef564"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue May 08 00:24:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:00 2007 -0700"
      },
      "message": "reiserfs: shrink superblock if no xattrs\n\nThis makes in-core superblock fit into one cacheline here.\n\nBefore:\n    struct dentry *            xattr_root;           /*   124     4 */\n    /* --- cacheline 1 boundary (128 bytes) --- */\n    struct rw_semaphore        xattr_dir_sem;        /*   128    12 */\n    int                        j_errno;              /*   140     4 */\n    }; /* size: 144, cachelines: 2 */\n       /* sum members: 142, holes: 1, sum holes: 2 */\n       /* last cacheline: 16 bytes */\n\nAfter:\n    int                        j_errno;              /*   124     4 */\n    /* --- cacheline 1 boundary (128 bytes) --- */\n    }; /* size: 128, cachelines: 1 */\n       /* sum members: 126, holes: 1, sum holes: 2 */\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \u003creiserfs-dev@namesys.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2d3466a348a61c4d7f958ce80020eba17c09d7f7",
      "tree": "eda69787ec28632b162638055b60dc8371f6432b",
      "parents": [
        "82f703bb8cb2732b4437a9f555a1be564e9e71c2"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@sw.ru",
        "time": "Tue May 08 00:24:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "reiserfs: possible null pointer dereference during resize\n\nsb_read may return NULL, let\u0027s explicitly check it.  If so free new bitmap\nblocks array, after this we may safely exit as it done above during bitmap\nallocation.\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82f703bb8cb2732b4437a9f555a1be564e9e71c2",
      "tree": "14b96636cc447ff00a5c3da0aa8d114f982b6cea",
      "parents": [
        "1368c4f2482c9e06bcb297217433818b171cc9e3"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@sw.ru",
        "time": "Tue May 08 00:24:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "freevxfs: possible null pointer dereference fix\n\nsb_read may return NULL, so let\u0027s explicitly check it.\n\nSigned-off-by: Dmitriy Monakhov \u003cdmonakhov@openvz.org\u003e\nAcked-by: 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": "1368c4f2482c9e06bcb297217433818b171cc9e3",
      "tree": "0b9da8f7841e370cb44de9504843591a223b8c1d",
      "parents": [
        "e1b5c1d3da05c91129120d045dfcdfc7761f44f1"
      ],
      "author": {
        "name": "Vignesh Babu BM",
        "email": "vignesh.babu@wipro.com",
        "time": "Tue May 08 00:24:32 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "is_power_of_2 in fs/block_dev.c\n\nReplace (n \u0026 (n-1)) in the context of power of 2 checks with is_power_of_2\n\nSigned-off-by: vignesh babu \u003cvignesh.babu@wipro.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1b5c1d3da05c91129120d045dfcdfc7761f44f1",
      "tree": "0d29f32fbad55a9cc90b05ef1974103b6afe4ea9",
      "parents": [
        "e7d709c096487078652a1384d7a2d0e4459e18b6"
      ],
      "author": {
        "name": "Vignesh Babu BM",
        "email": "vignesh.babu@wipro.com",
        "time": "Tue May 08 00:24:30 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "is_power_of_2 in fs/hfs\n\nReplace (n \u0026 (n-1)) in the context of power of 2 checks with is_power_of_2\n\nSigned-off-by: vignesh babu \u003cvignesh.babu@wipro.com\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7d709c096487078652a1384d7a2d0e4459e18b6",
      "tree": "fff2b8ecac3e9611182e83a21e95130d1cba308a",
      "parents": [
        "4fa156ea846daae44d60b05ea066d0e28fd3b6c4"
      ],
      "author": {
        "name": "Vignesh Babu BM",
        "email": "vignesh.babu@wipro.com",
        "time": "Tue May 08 00:24:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "is_power_of_2 in fat\n\nReplacing (n \u0026 (n-1)) in the context of power of 2 checks with\nis_power_of_2\n\nSigned-off-by: vignesh babu \u003cvignesh.babu@wipro.com\u003e\nAcked-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3972b7f67bf1a352a4a4c350b2245d759a41ea06",
      "tree": "40eab1b1e50c25a7a94e2ba8d7c920e5980eae7a",
      "parents": [
        "1ae7075bcd805c3aa5e8f53effc63a4562d6110e"
      ],
      "author": {
        "name": "Florin Malita",
        "email": "fmalita@gmail.com",
        "time": "Tue May 08 00:24:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "devpts: add fsnotify create event\n\nCurrently, devpts doesn\u0027t generate an fsnotify event upon pts creation\nbecause the regular vfs paths aren\u0027t involved.  Deallocation, on the other\nhand, correctly generates a nameremove event thanks to the d_delete()\ninvocation in devpts_pty_kill().\n\nThis patch adds the missing fsnotify_create() trigger in devpts_pty_new().\n\nSigned-off-by: Florin Malita \u003cfmalita@gmail.com\u003e\nAcked-by: H. Peter Anvin \u003chpa@zytor.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1ae7075bcd805c3aa5e8f53effc63a4562d6110e",
      "tree": "76ce9da136deee264b1642169522981b5175af82",
      "parents": [
        "7b8e89249ba54fb6e12358bbed7e3070fa1d1e6a"
      ],
      "author": {
        "name": "Chris Snook",
        "email": "csnook@redhat.com",
        "time": "Tue May 08 00:24:15 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "use use SEEK_MAX to validate user lseek arguments\n\nAdd SEEK_MAX and use it to validate lseek arguments from userspace.\n\nSigned-off-by: Chris Snook \u003ccsnook@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b8e89249ba54fb6e12358bbed7e3070fa1d1e6a",
      "tree": "64ddcadb875a092d1ee38dc96cf95cef9fd7241d",
      "parents": [
        "5b7952021289b6d04d8c62c0f13acce570730dcd"
      ],
      "author": {
        "name": "Chris Snook",
        "email": "csnook@redhat.com",
        "time": "Tue May 08 00:24:13 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:59 2007 -0700"
      },
      "message": "use symbolic constants in generic lseek code\n\nConvert magic numbers to SEEK_* values from fs.h\n\nSigned-off-by: Chris Snook \u003ccsnook@redhat.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "24c32d733dd44dbc5b9dcd0b8de58e16fdbeac76",
      "tree": "ecec100dc2c779d09669d08681339ded6bf5409a",
      "parents": [
        "d52b908646b88cb1952ab8c9b2d4423908a23f11"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue May 08 00:23:49 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "mm: shrink parent dentries when shrinking slab\n\nTeach the dentry slab shrinker to aggressively shrink parent dentries when\nshrinking the dentry cache.\n\nThis is done to attempt to improve the situation where the dentry slab cache\ngets a lot of internal fragmentation due to pages containing directory\ndentries.  It is expected that this change will cause some of those dentries\nto be reaped earlier, and with less scanning.\n\nNeeds careful testing.\n\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d52b908646b88cb1952ab8c9b2d4423908a23f11",
      "tree": "0c60c3bdbffaf87c7d9cff30e5e598ce31d4789b",
      "parents": [
        "97dc32cdb1b53832801159d5f634b41aad9d0a23"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue May 08 00:23:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "fix quadratic behavior of shrink_dcache_parent()\n\nThe time shrink_dcache_parent() takes, grows quadratically with the depth\nof the tree under \u0027parent\u0027.  This starts to get noticable at about 10,000.\n\nThese kinds of depths don\u0027t occur normally, and filesystems which invoke\nshrink_dcache_parent() via d_invalidate() seem to have other depth\ndependent timings, so it\u0027s not even easy to expose this problem.\n\nHowever with FUSE it\u0027s easy to create a deep tree and d_invalidate()\nwill also get called.  This can make a syscall hang for a very long\ntime.\n\nThis is the original discovery of the problem by Russ Cox:\n\n  http://article.gmane.org/gmane.comp.file-systems.fuse.devel/3826\n\nThe following patch fixes the quadratic behavior, by optionally allowing\nprune_dcache() to prune ancestors of a dentry in one go, instead of doing\nit one at a time.\n\nCommon code in dput() and prune_one_dentry() is extracted into a new helper\nfunction d_kill().\n\nshrink_dcache_parent() as well as shrink_dcache_sb() are converted to use\nthe ancestry-pruner option.  Only for shrink_dcache_memory() is this\nbehavior not desirable, so it keeps using the old algorithm.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Maneesh Soni \u003cmaneesh@in.ibm.com\u003e\nAcked-by: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\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": "97dc32cdb1b53832801159d5f634b41aad9d0a23",
      "tree": "438f59c84d3528de5f68583d312beceb1aa32659",
      "parents": [
        "4d7bf11d649c72621ca31b8ea12b9c94af380e63"
      ],
      "author": {
        "name": "William Cohen",
        "email": "wcohen@redhat.com",
        "time": "Tue May 08 00:23:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "reduce size of task_struct on 64-bit machines\n\nThis past week I was playing around with that pahole tool\n(http://oops.ghostprotocols.net:81/acme/dwarves/) and looking at the size\nof various struct in the kernel.  I was surprised by the size of the\ntask_struct on x86_64, approaching 4K.  I looked through the fields in\ntask_struct and found that a number of them were declared as \"unsigned\nlong\" rather than \"unsigned int\" despite them appearing okay as 32-bit\nsized fields.  On x86_64 \"unsigned long\" ends up being 8 bytes in size and\nforces 8 byte alignment.  Is there a reason there a reason they are\n\"unsigned long\"?\n\nThe patch below drops the size of the struct from 3808 bytes (60 64-byte\ncachelines) to 3760 bytes (59 64-byte cachelines).  A couple other fields\nin the task struct take a signficant amount of space:\n\nstruct thread_struct       thread;               688\nstruct held_lock           held_locks[30];       1680\n\nCONFIG_LOCKDEP is turned on in the .config\n\n[akpm@linux-foundation.org: fix printk warnings]\nCc: \u003clinux-arch@vger.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": "4d7bf11d649c72621ca31b8ea12b9c94af380e63",
      "tree": "c4a3c11cf6d13210ed344de0ae091d3f7523c689",
      "parents": [
        "8948e11f450e6189a79e47d6051c3d5a0b98e3f3"
      ],
      "author": {
        "name": "Markus Rechberger",
        "email": "Markus.Rechberger@amd.com",
        "time": "Tue May 08 00:23:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "ext2/3/4: fix file date underflow on ext2 3 filesystems on 64 bit systems\n\nTaken from http://bugzilla.kernel.org/show_bug.cgi?id\u003d5079\n\nsigned long ranges from -2.147.483.648 to 2.147.483.647 on x86 32bit\n\n10000011110110100100111110111101 .. -2,082,844,739\n10000011110110100100111110111101 ..  2,212,122,557 \u003c- this currently gets\nstored on the disk but when converting it to a 64bit signed long value it loses\nits sign and becomes positive.\n\nCc: Andreas Dilger \u003cadilger@dilger.ca\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\n\nAndreas says:\n\nThis patch is now treating timestamps with the high bit set as negative\ntimes (before Jan 1, 1970).  This means we lose 1/2 of the possible range\nof timestamps (lopping off 68 years before unix timestamp overflow -\nnow only 30 years away :-) to handle the extremely rare case of setting\ntimestamps into the distant past.\n\nIf we are only interested in fixing the underflow case, we could just\nlimit the values to 0 instead of storing negative values.  At worst this\nwill skew the timestamp by a few hours for timezones in the far east\n(files would still show Jan 1, 1970 in \"ls -l\" output).\n\nThat said, it seems 32-bit systems (mine at least) allow files to be set\ninto the past (01/01/1907 works fine) so it seems this patch is bringing\nthe x86_64 behaviour into sync with other kernels.\n\nOn the plus side, we have a patch that is ready to add nanosecond timestamps\nto ext3 and as an added bonus adds 2 high bits to the on-disk timestamp so\nthis extends the maximum date to 2242.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8948e11f450e6189a79e47d6051c3d5a0b98e3f3",
      "tree": "8cc904873cc1a8506970cf1e4a328c318a7fc4d7",
      "parents": [
        "ab1b6f03a10ba1f5638188ab06bf46e33ac3a160"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@openvz.org",
        "time": "Tue May 08 00:23:35 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "Allow access to /proc/$PID/fd after setuid()\n\n/proc/$PID/fd has r-x------ permissions, so if process does setuid(), it\nwill not be able to access /proc/*/fd/. This breaks fstatat() emulation\nin glibc.\n\nopen(\"foo\", O_RDONLY|O_DIRECTORY)       \u003d 4\nsetuid32(65534)                         \u003d 0\nstat64(\"/proc/self/fd/4/bar\", 0xbfafb298) \u003d -1 EACCES (Permission denied)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-By: Kirill Korotaev \u003cdev@openvz.org\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": "7e4c3690b07f04b1942c39db358a5c8a72831daa",
      "tree": "70d8773f612ed3df02c738b678edef64dd5ddaf7",
      "parents": [
        "3e9f45bd18191bbd05468b19b7064b8da8262aba"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue May 08 00:23:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "block_write_full_page(): report ENOSPC\n\nblock_write_full_page() forgot to propagate ENPSOC into the address_space.\n\nCc: Guillaume Chazarain \u003cguichaz@yahoo.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e9f45bd18191bbd05468b19b7064b8da8262aba",
      "tree": "06c790a9cb1afc83d170447a277e51f5a1a5f303",
      "parents": [
        "c83e44842074a87614c78eca70fa6467b0bc3c4a"
      ],
      "author": {
        "name": "Guillaume Chazarain",
        "email": "guichaz@yahoo.fr",
        "time": "Tue May 08 00:23:25 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "Factor outstanding I/O error handling\n\nCleanup: setting an outstanding error on a mapping was open coded too many\ntimes.  Factor it out in mapping_set_error().\n\nSigned-off-by: Guillaume Chazarain \u003cguichaz@yahoo.fr\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f1adc05e77383017bc63ea9c48ba217da76682b8",
      "tree": "e58290483a62ce846bb63d2b965952bd038707bb",
      "parents": [
        "5822b7faca709c03a59c2929005bfe9caffe6592"
      ],
      "author": {
        "name": "Jeff Dike",
        "email": "jdike@addtoit.com",
        "time": "Tue May 08 00:23:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "uml: hostfs style fixes\n\nhostfs needed some style goodness.\n\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5822b7faca709c03a59c2929005bfe9caffe6592",
      "tree": "4de7b322cfd25794a79cb46b0feab1113785f7a8",
      "parents": [
        "0e6b9c98be1b517bf99a21d8a7036a8a21e47dd1"
      ],
      "author": {
        "name": "Alberto Bertogli",
        "email": "albertito@gmail.com",
        "time": "Tue May 08 00:23:16 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "uml: make hostfs_setattr() support operations on unlinked open files\n\nThis patch allows hostfs_setattr() to work on unlinked open files by calling\nset_attr() (the userspace part) with the inode\u0027s fd.\n\nWithout this, applications that depend on doing attribute changes to unlinked\nopen files will fail.\n\nIt works by using the fd versions instead of the path ones (for example\nfchmod() instead of chmod(), fchown() instead of chown()) when an fd is\navailable.\n\nSigned-off-by: Alberto Bertogli \u003calbertito@gmail.com\u003e\nSigned-off-by: Jeff Dike \u003cjdike@linux.intel.com\u003e\nCc: Paolo \u0027Blaisorblade\u0027 Giarrusso \u003cblaisorblade@yahoo.it\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ceb331433e8aad9c5f441a965d7c681f8b9046f",
      "tree": "fd3d679a4015242dd65f0721f52242ad47619910",
      "parents": [
        "b46b8f19c9cd435ecac4d9d12b39d78c137ecd66"
      ],
      "author": {
        "name": "Dmitriy Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue May 08 00:23:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:57 2007 -0700"
      },
      "message": "mm: move common segment checks to separate helper function\n\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: Monakhov Dmitriy \u003cdmonakhov@openvz.org\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: Anton Altaparmakov \u003caia21@cam.ac.uk\u003e\nAcked-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "86aa5ac53e478c94ee39a15b6eadde1ed1317be3",
      "tree": "192b65a582b38e51584519461112ba56f533519f",
      "parents": [
        "9ae9d68cbf3fe0ec17c17c9ecaa2188ffb854a66"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:46:19 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:46:19 2007 +0200"
      },
      "message": "[PATCH] splice: always call into page_cache_readahead()\n\nDon\u0027t try to guess what the read-ahead logic will do, allow it\nto make its own decisions.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9ae9d68cbf3fe0ec17c17c9ecaa2188ffb854a66",
      "tree": "d29b5e56b7c18c06a1a08d6e27c8862205fa2d86",
      "parents": [
        "5b94f675f57e4ff16c8fda09088d7480a84dcd91"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "fengguang.wu@gmail.com",
        "time": "Tue May 08 08:44:36 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue May 08 08:44:36 2007 +0200"
      },
      "message": "[PATCH] splice(): fix interaction with readahead\n\nEric Dumazet, thank you for disclosing this bug.\n\nReadahead logic somehow fails to populate the page range with data.\nIt can be because\n\n1) the readahead routine is not always called in the following lines of\n\nfs/splice.c:\n        if (!loff || nr_pages \u003e 1)\n                page_cache_readahead(mapping, \u0026in-\u003ef_ra, in, index, nr_pages);\n\n2) even called, page_cache_readahead() wont guarantee the pages are there.\nIt wont submit readahead I/O for pages already in the radix tree, or when\n(ra_pages \u003d\u003d 0), or after 256 cache hits.\n\nIn your case, it should be because of the retried reads, which lead to\nexcessive cache hits, and disables readahead at some time.\n\nAnd that _one_ failure of readahead blocks the whole read process.\nThe application receives EAGAIN and retries the read, but\n__generic_file_splice_read() refuse to make progress:\n\n- in the previous invocation, it has allocated a blank page and inserted it\n  into the radix tree, but never has the chance to start I/O for it: the test\n  of SPLICE_F_NONBLOCK goes before that.\n\n- in the retried invocation, the readahead code will neither get out of the\n  cache hit mode, nor will it submit I/O for an already existing page.\n\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "f7c66ce3f70d8417de0cfb481ca4e5430382ec5d",
      "tree": "c9b4d5cb09a9241cb305532edfbd703cd181530d",
      "parents": [
        "71dfd5a396d11512aa6c8ed0d35b268bc084bb9b"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@sgi.com",
        "time": "Tue May 08 13:50:19 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:50:19 2007 +1000"
      },
      "message": "[XFS] Add lockdep support for XFS\n\nSGI-PV: 963965\nSGI-Modid: xfs-linux-melb:xfs-kern:28485a\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "71dfd5a396d11512aa6c8ed0d35b268bc084bb9b",
      "tree": "843b46b1e42df50707c160650695e074f1e8d7f6",
      "parents": [
        "3a02ee1828915d6540b415a160344775e2a4f918"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@sgi.com",
        "time": "Tue May 08 13:50:12 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:50:12 2007 +1000"
      },
      "message": "[XFS] Fix race in xfs_write() b/w dmapi callout and direct I/O checks.\n\nIn xfs_write() the iolock is dropped and reacquired in XFS_SEND_DATA()\nwhich means that the file could change from not-cached to cached and we\nneed to redo the direct I/O checks. We should also redo the direct I/O\nchecks when the file size changes regardless if O_APPEND is set or not.\n\nSGI-PV: 963483\nSGI-Modid: xfs-linux-melb:xfs-kern:28440a\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "3a02ee1828915d6540b415a160344775e2a4f918",
      "tree": "3830522593ea26542447ec1a18ea361af02f8704",
      "parents": [
        "e6a0e9cdff79e1406e5653f759aaf9f59b7ce4c8"
      ],
      "author": {
        "name": "Utako Kusaka",
        "email": "utako@tnes.nec.co.jp",
        "time": "Tue May 08 13:50:06 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:50:06 2007 +1000"
      },
      "message": "[XFS] Get rid of redundant \"required\" in msg.\n\nSGI-PV: 963466\nSGI-Modid: xfs-linux-melb:xfs-kern:28416a\n\nSigned-off-by: Utako Kusaka \u003cutako@tnes.nec.co.jp\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "e6a0e9cdff79e1406e5653f759aaf9f59b7ce4c8",
      "tree": "8ed29f012d7eb40ea7f4f1d2f89bbd58c5f51f04",
      "parents": [
        "f10bb2dad02a846966064a531ba6eec301bbb9e0"
      ],
      "author": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:59 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:59 2007 +1000"
      },
      "message": "[XFS] Export via a function xfs_buftarg_list for use by kdb/xfsidbg.\n\nSGI-PV: 963465\nSGI-Modid: xfs-linux-melb:xfs-kern:28414a\n\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\n"
    },
    {
      "commit": "f10bb2dad02a846966064a531ba6eec301bbb9e0",
      "tree": "dc485e34258bccedc996536c7b50b0b2ecea5f3d",
      "parents": [
        "ba87ea699ebd9dd577bf055ebc4a98200e337542"
      ],
      "author": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:53 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:53 2007 +1000"
      },
      "message": "[XFS] Remove unused ilen variable and references.\n\nSGI-PV: 907752\nSGI-Modid: xfs-linux-melb:xfs-kern:28344a\n\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n"
    },
    {
      "commit": "ba87ea699ebd9dd577bf055ebc4a98200e337542",
      "tree": "713b7d32937372fd7c5b8647f14d0e7262fc7075",
      "parents": [
        "2a32963130aec5e157b58ff7dfa3dfa1afdf7ca1"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@sgi.com",
        "time": "Tue May 08 13:49:46 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:46 2007 +1000"
      },
      "message": "[XFS] Fix to prevent the notorious \u0027NULL files\u0027 problem after a crash.\n\nThe problem that has been addressed is that of synchronising updates of\nthe file size with writes that extend a file. Without the fix the update\nof a file\u0027s size, as a result of a write beyond eof, is independent of\nwhen the cached data is flushed to disk. Often the file size update would\nbe written to the filesystem log before the data is flushed to disk. When\na system crashes between these two events and the filesystem log is\nreplayed on mount the file\u0027s size will be set but since the contents never\nmade it to disk the file is full of holes. If some of the cached data was\nflushed to disk then it may just be a section of the file at the end that\nhas holes.\n\nThere are existing fixes to help alleviate this problem, particularly in\nthe case where a file has been truncated, that force cached data to be\nflushed to disk when the file is closed. If the system crashes while the\nfile(s) are still open then this flushing will never occur.\n\nThe fix that we have implemented is to introduce a second file size,\ncalled the in-memory file size, that represents the current file size as\nviewed by the user. The existing file size, called the on-disk file size,\nis the one that get\u0027s written to the filesystem log and we only update it\nwhen it is safe to do so. When we write to a file beyond eof we only\nupdate the in- memory file size in the write operation. Later when the I/O\noperation, that flushes the cached data to disk completes, an I/O\ncompletion routine will update the on-disk file size. The on-disk file\nsize will be updated to the maximum offset of the I/O or to the value of\nthe in-memory file size if the I/O includes eof.\n\nSGI-PV: 958522\nSGI-Modid: xfs-linux-melb:xfs-kern:28322a\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "2a32963130aec5e157b58ff7dfa3dfa1afdf7ca1",
      "tree": "97b38a1d7c69bad94fafeee75102a0701c44f27e",
      "parents": [
        "e6d29426bc8a5d07d0eebd0842fe0cf6ecc862cd"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@sgi.com",
        "time": "Tue May 08 13:49:39 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:39 2007 +1000"
      },
      "message": "[XFS] Fix race condition in xfs_write().\n\nThis change addresses a race in xfs_write() where, for direct I/O, the\nflags need_i_mutex and need_flush are setup before the iolock is acquired.\nThe logic used to setup the flags may change between setting the flags and\nacquiring the iolock resulting in these flags having incorrect values. For\nexample, if a file is not currently cached then need_i_mutex is set to\nzero and then if the file is cached before the iolock is acquired we will\nfail to do the flushinval before the direct write.\n\nThe flush (and also the call to xfs_zero_eof()) need to be done with the\niolock held exclusive so we need to acquire the iolock before checking for\ncached data (or if the write begins after eof) to prevent this state from\nchanging. For direct I/O I\u0027ve chosen to always acquire the iolock in\nshared mode initially and if there is a need to promote it then drop it\nand reacquire it.\n\nThere\u0027s also some other tidy-ups including removing the O_APPEND offset\nadjustment since that work is done in generic_write_checks() (and we don\u0027t\nuse offset as an input parameter anywhere).\n\nSGI-PV: 962170\nSGI-Modid: xfs-linux-melb:xfs-kern:28319a\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: David Chinner \u003cdgc@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "e6d29426bc8a5d07d0eebd0842fe0cf6ecc862cd",
      "tree": "f1b8e35adbd87230913d8a40ddb1b228f18ce323",
      "parents": [
        "d3cf209476b72c83907a412b6708c5e498410aa7"
      ],
      "author": {
        "name": "Kouta Ooizumi",
        "email": "k-ooizumi@tnes.nec.co.jp",
        "time": "Tue May 08 13:49:33 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:33 2007 +1000"
      },
      "message": "[XFS] Fix uquota and oquota enforcement problems.\n\nWhen uquota and oquota (gquota/pquota) are enabled for accounting both are\nenforced if ether has enforcement active.\n\nConditions:\n\n- Both XFS_UQUOTA_ACCT and XFS_GQUOTA_ACCT are enabled.\n\n- Either XFS_UQUOTA_ENFD or XFS_OQUOTA_ENFD is enabled.\n\n- The usage without enforce is reached at the soft limit.\n\nProblems:\n\n1. \"repquota\" shows all grace time even if no enforcement.\n\n2. we cannot make a file over a hard limits even if no enforcement.\n\nSGI-PV: 962291\nSGI-Modid: xfs-linux-melb:xfs-kern:28272a\n\nSigned-off-by: Kouta Ooizumi \u003ck-ooizumi@tnes.nec.co.jp\u003e\nSigned-off-by: Donald Douwsma \u003cdonaldd@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "d3cf209476b72c83907a412b6708c5e498410aa7",
      "tree": "5e7a85751ae03b9eb3110e1cfc147b3492ae0fa5",
      "parents": [
        "424ea91ba61c1cdc2dac68576c97030cbf47d84f"
      ],
      "author": {
        "name": "Lachlan McIlroy",
        "email": "lachlan@sgi.com",
        "time": "Tue May 08 13:49:27 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:27 2007 +1000"
      },
      "message": "[XFS] propogate return codes from flush routines\n\nThis patch handles error return values in fs_flush_pages and\nfs_flushinval_pages. It changes the prototype of fs_flushinval_pages so we\ncan propogate the errors and handle them at higher layers. I also modified\nxfs_itruncate_start so that it could propogate the error further.\n\nSGI-PV: 961990\nSGI-Modid: xfs-linux-melb:xfs-kern:28231a\n\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Stewart Smith \u003cstewart@flamingspork.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "424ea91ba61c1cdc2dac68576c97030cbf47d84f",
      "tree": "5114d766bbb4728ccbb18d6aec3a95952a3d4b9f",
      "parents": [
        "646d5bdab38c88f4b9088d4e517986a3f3b0edb9"
      ],
      "author": {
        "name": "Donald Douwsma",
        "email": "donaldd@sgi.com",
        "time": "Tue May 08 13:49:15 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:15 2007 +1000"
      },
      "message": "[XFS] Fix quotaon syscall failures for group enforcement requests.\n\nxfs_qm_scall_quotaon was incorrectly failing requests to enable group\nquota enforcement. Fixes logic error in OQUOTA handling.\n\nSGI-PV: 961964\nSGI-Modid: xfs-linux-melb:xfs-kern:28227a\n\nSigned-off-by: Donald Douwsma \u003cdonaldd@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "646d5bdab38c88f4b9088d4e517986a3f3b0edb9",
      "tree": "a04479394ed446f94ffc7e712205d8c76f686a57",
      "parents": [
        "e7a23a9b37c395a153a541d4c50e166eef6abe49"
      ],
      "author": {
        "name": "Donald Douwsma",
        "email": "donaldd@sgi.com",
        "time": "Tue May 08 13:49:09 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:09 2007 +1000"
      },
      "message": "[XFS] Invalidate quotacheck when mounting without a quota type.\n\nWhen quotas are mounted or remounted without a particular quota type the\nquota accounting for that type becomes invalid. Previously we were\nignoring this leading to accounting errors.\n\nSGI-PV: 961964\nSGI-Modid: xfs-linux-melb:xfs-kern:28225a\n\nSigned-off-by: Donald Douwsma \u003cdonaldd@sgi.com\u003e\nSigned-off-by: Utako Kusaka \u003cutako@tnes.nec.co.jp\u003e\nSigned-off-by: Vlad Apostolov \u003cvapo@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "e7a23a9b37c395a153a541d4c50e166eef6abe49",
      "tree": "11afa34a0a6d10c482f6b07f1d6d6788bd71ba11",
      "parents": [
        "e9ed9d2240c71014a84043095af4465ffce61367"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Tue May 08 13:49:03 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:49:03 2007 +1000"
      },
      "message": "[XFS] reducing the number of random number functions.\n\nPatch provided by Joe Perches\n\nSGI-PV: 961696\nSGI-Modid: xfs-linux-melb:xfs-kern:28209a\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "e9ed9d2240c71014a84043095af4465ffce61367",
      "tree": "0db4de9938846d2cb68a2d49944303288cc291e0",
      "parents": [
        "ef497f8a1eafe0447f0473940ff2e0f6c8519a14"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Tue May 08 13:48:56 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:48:56 2007 +1000"
      },
      "message": "[XFS] remove more misc. unused args\n\nPatch provided by Eric Sandeen.\n\nSGI-PV: 961695\nSGI-Modid: xfs-linux-melb:xfs-kern:28205a\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "ef497f8a1eafe0447f0473940ff2e0f6c8519a14",
      "tree": "94969156273605e4ab09345b0d8995653c941140",
      "parents": [
        "1c72bf90037f32fc2b10e0a05dff2640abce8ee2"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Tue May 08 13:48:49 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:48:49 2007 +1000"
      },
      "message": "[XFS] the \"aendp\" arg to xfs_dir2_data_freescan is always NULL, remove it.\n\nPatch provided by Eric Sandeen.\n\nSGI-PV: 961694\nSGI-Modid: xfs-linux-melb:xfs-kern:28204a\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "1c72bf90037f32fc2b10e0a05dff2640abce8ee2",
      "tree": "3903e287eed6b6e942340d01bec360edebff594e",
      "parents": [
        "5b94f675f57e4ff16c8fda09088d7480a84dcd91"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@sandeen.net",
        "time": "Tue May 08 13:48:42 2007 +1000"
      },
      "committer": {
        "name": "Tim Shimmin",
        "email": "tes@sgi.com",
        "time": "Tue May 08 13:48:42 2007 +1000"
      },
      "message": "[XFS] The last argument \"lsn\" of xfs_trans_commit() is always called with\nNULL.\n\nPatch provided by Eric Sandeen.\n\nSGI-PV: 961693\nSGI-Modid: xfs-linux-melb:xfs-kern:28199a\n\nSigned-off-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\nSigned-off-by: Lachlan McIlroy \u003clachlan@sgi.com\u003e\nSigned-off-by: Tim Shimmin \u003ctes@sgi.com\u003e\n"
    },
    {
      "commit": "2d56d3c43cc97ae48586745556f5a5b564d61582",
      "tree": "28f2edc1e69b79e94d99023041dd0358861b6956",
      "parents": [
        "0f9008ef38d5a6305d94bbdd8f20d68fc75c63b6",
        "586759f03e2e9031ac5589912a51a909ed53c30a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:34:24 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:34:24 2007 -0700"
      },
      "message": "Merge branch \u0027server-cluster-locking-api\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027server-cluster-locking-api\u0027 of git://linux-nfs.org/~bfields/linux:\n  gfs2: nfs lock support for gfs2\n  lockd: add code to handle deferred lock requests\n  lockd: always preallocate block in nlmsvc_lock()\n  lockd: handle test_lock deferrals\n  lockd: pass cookie in nlmsvc_testlock\n  lockd: handle fl_grant callbacks\n  lockd: save lock state on deferral\n  locks: add fl_grant callback for asynchronous lock return\n  nfsd4: Convert NFSv4 to new lock interface\n  locks: add lock cancel command\n  locks: allow {vfs,posix}_lock_file to return conflicting lock\n  locks: factor out generic/filesystem switch from setlock code\n  locks: factor out generic/filesystem switch from test_lock\n  locks: give posix_test_lock same interface as -\u003elock\n  locks: make -\u003elock release private data before returning in GETLK case\n  locks: create posix-to-flock helper functions\n  locks: trivial removal of unnecessary parentheses\n"
    },
    {
      "commit": "5cefcab3db2b13093480f2a42bf081574dd72d3d",
      "tree": "c3755a241553436a1b84d65ad3c00f77ce6d02ad",
      "parents": [
        "5f757f91e70a97eda8f0cc13bddc853209b2d173",
        "37fde8ca6c60ea61f5e9d7cb877c25ac60e74167"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:26:27 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:26:27 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (34 commits)\n  [GFS2] Uncomment sprintf_symbol calling code\n  [DLM] lowcomms style\n  [GFS2] printk warning fixes\n  [GFS2] Patch to fix mmap of stuffed files\n  [GFS2] use lib/parser for parsing mount options\n  [DLM] Lowcomms nodeid range \u0026 initialisation fixes\n  [DLM] Fix dlm_lowcoms_stop hang\n  [DLM] fix mode munging\n  [GFS2] lockdump improvements\n  [GFS2] Patch to detect corrupt number of dir entries in leaf and/or inode blocks\n  [GFS2] bz 236008: Kernel gpf doing cat /debugfs/gfs2/xxx (lock dump)\n  [DLM] fs/dlm/ast.c should #include \"ast.h\"\n  [DLM] Consolidate transport protocols\n  [DLM] Remove redundant assignment\n  [GFS2] Fix bz 234168 (ignoring rgrp flags)\n  [DLM] change lkid format\n  [DLM] interface for purge (2/2)\n  [DLM] add orphan purging code (1/2)\n  [DLM] split create_message function\n  [GFS2] Set drop_count to 0 (off) by default\n  ...\n"
    }
  ],
  "next": "1394f03221790a988afc3e4b3cb79f2e477246a9"
}
