)]}'
{
  "log": [
    {
      "commit": "03c3fa0a3bf48dcb024263a9ea41daecacbc6efa",
      "tree": "8fcd8410094e86cb9e58efd835e8e70b6b928788",
      "parents": [
        "3e850509e19b4b013bf6aee7c0d24d047c4b968f",
        "146bca72c7e6ba52de82a63b1fce7934dc103dbc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:50:39 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:\n  udf: Don\u0027t write integrity descriptor too often\n  udf: Try anchor in block 256 first\n  udf: Some type fixes and cleanups\n  udf: use hardware sector size\n  udf: fix novrs mount option\n  udf: Fix oops when invalid character in filename occurs\n  udf: return f_fsid for statfs(2)\n  udf: Add checks to not underflow sector_t\n  udf: fix default mode and dmode options handling\n  udf: fix sparse warnings:\n  udf: unsigned last[i] cannot be less than 0\n  udf: implement mode and dmode mounting options\n  udf: reduce stack usage of udf_get_filename\n  udf: reduce stack usage of udf_load_pvoldesc\n  Fix the udf code not to pass structs on stack where possible.\n  Remove struct typedefs from fs/udf/ecma_167.h et al.\n"
    },
    {
      "commit": "223cdea4c4b5af5181b2da00ac85711d1e0c737c",
      "tree": "dfe7226c70ddabbf2e2e63924ba636345278e79c",
      "parents": [
        "31e6e2dac575c9d21a6ec56ca52ae89086baa705",
        "c8f517c444e4f9f55b5b5ca202b8404691a35805"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:08:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Apr 03 09:08:19 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (53 commits)\n  md/raid5 revise rules for when to update metadata during reshape\n  md/raid5: minor code cleanups in make_request.\n  md: remove CONFIG_MD_RAID_RESHAPE config option.\n  md/raid5: be more careful about write ordering when reshaping.\n  md: don\u0027t display meaningless values in sysfs files resync_start and sync_speed\n  md/raid5: allow layout and chunksize to be changed on active array.\n  md/raid5: reshape using largest of old and new chunk size\n  md/raid5: prepare for allowing reshape to change layout\n  md/raid5: prepare for allowing reshape to change chunksize.\n  md/raid5: clearly differentiate \u0027before\u0027 and \u0027after\u0027 stripes during reshape.\n  Documentation/md.txt update\n  md: allow number of drives in raid5 to be reduced\n  md/raid5: change reshape-progress measurement to cope with reshaping backwards.\n  md: add explicit method to signal the end of a reshape.\n  md/raid5: enhance raid5_size to work correctly with negative delta_disks\n  md/raid5: drop qd_idx from r6_state\n  md/raid6: move raid6 data processing to raid6_pq.ko\n  md: raid5 run(): Fix max_degraded for raid level 4.\n  md: \u0027array_size\u0027 sysfs attribute\n  md: centralize -\u003earray_sectors modifications\n  ...\n"
    },
    {
      "commit": "8fe74cf053de7ad2124a894996f84fa890a81093",
      "tree": "77dcd8fbf33ce53a3821942233962fb28c6f2848",
      "parents": [
        "c2eb2fa6d2b6fe122d3479ec5b28d978418b2698",
        "ced117c73edc917e96dea7cca98c91383f0792f7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 21:09:10 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:\n  Remove two unneeded exports and make two symbols static in fs/mpage.c\n  Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n  Trim includes of fdtable.h\n  Don\u0027t crap into descriptor table in binfmt_som\n  Trim includes in binfmt_elf\n  Don\u0027t mess with descriptor table in load_elf_binary()\n  Get rid of indirect include of fs_struct.h\n  New helper - current_umask()\n  check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n  New locking/refcounting for fs_struct\n  Take fs_struct handling to new file (fs/fs_struct.c)\n  Get rid of bumping fs_struct refcount in pivot_root(2)\n  Kill unsharing fs_struct in __set_personality()\n"
    },
    {
      "commit": "41d577aa35aa0504fe28b76a948908bdb7fbec81",
      "tree": "0ed97b448540b81989af09e2a6b25cf25193975a",
      "parents": [
        "1c5b45411f93b44a6f3dde3328f88f11bca1bca5"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/ufs: return f_fsid for statfs(2)\n\nMake ufs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Evgeniy Dushistov \u003cdushistov@mail.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c5b45411f93b44a6f3dde3328f88f11bca1bca5",
      "tree": "a53dc0eb22c866c4e0acc30b0a434869c2522dac",
      "parents": [
        "2fc7f562b439a361c62b9d8a67733a164fb6136f"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/sysv: return f_fsid for statfs(2)\n\nMake sysv file system return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: 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": "2fc7f562b439a361c62b9d8a67733a164fb6136f",
      "tree": "9b340f94fd0d14dde27efc42cbc91246c3a74983",
      "parents": [
        "651d0623045d3265a21ab9803b3a1e0f24a17461"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/squashfs: return f_fsid for statfs(2)\n\nMake squashfs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "651d0623045d3265a21ab9803b3a1e0f24a17461",
      "tree": "dcfe9c374fcf7f36601a870837f19877d926f9aa",
      "parents": [
        "5b76dc066a4deb937665521566f89aead756f049"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/reiserfs: return f_fsid for statfs(2)\n\nMake reiserfs3 return f_fsid info for statfs(2).  By Andreas\u0027 suggestion,\nthis patch populates a persistent f_fsid between boots/mounts with help of\non-disk uuid record.\n\nRandy Dunlap reported a compiling error from v2 patch like:\n    fs/built-in.o: In function `reiserfs_statfs\u0027:\n    super.c:(.text+0x7332b): undefined reference to `crc32_le\u0027\n    super.c:(.text+0x7333f): undefined reference to `crc32_le\u0027\nAlso he provided helpful solution to fix this error. The modification of v3\npatch is based on Randy\u0027s suggestion, add \u0027select CRC32\u0027 in fs/reiserfs/Kconfig.\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Jeff Mahoney \u003cjeffm@suse.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b76dc066a4deb937665521566f89aead756f049",
      "tree": "dc4a855e8c279c05cd1f2bed2216eeac2ca500de",
      "parents": [
        "197e671ee1d674b194b943467364fdfbefe7ce5a"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/qnx4: return f_fsid for statfs(2)\n\nMake qnx4 file system return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nAcked-by: Anders Larsen \u003cal@alarsen.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "197e671ee1d674b194b943467364fdfbefe7ce5a",
      "tree": "a72e2cd4139f7e7b1647b199c8fa88b350cc0d4e",
      "parents": [
        "054475d2af2640a6d6cb83b528512c7b49eef9ca"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "fs/omfs: return f_fsid for statfs(2)\n\nMake omfs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nAcked-by: Bob Copeland \u003cme@bobcopeland.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "054475d2af2640a6d6cb83b528512c7b49eef9ca",
      "tree": "2790c3043ff7be3f45fdbdd129c4ab917dc7a191",
      "parents": [
        "2430c4daf9e6cc6b144906a41f7f28c3f6ae5a2c"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/minix: return f_fsid for statfs(2)\n\nMake minix file system return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@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": "2430c4daf9e6cc6b144906a41f7f28c3f6ae5a2c",
      "tree": "77205aaed6beda98cb414ebcbb2a6e57c5c85a50",
      "parents": [
        "604d295c26f2229636c7fa4eba33af017c3b70e3"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:38 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/isofs: return f_fsid for statfs(2)\n\nMake isofs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\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": "604d295c26f2229636c7fa4eba33af017c3b70e3",
      "tree": "a80ed9776739956f7280432b71278e4b7d100eb3",
      "parents": [
        "25564dd869d8615e80b70b37de7545bd21de3c7c"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/hpfs: return f_fsid for statfs(2)\n\nMake hpfs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Mikulas Patocka \u003cmikulas@artax.karlin.mff.cuni.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25564dd869d8615e80b70b37de7545bd21de3c7c",
      "tree": "4453809be73488064251f2686fc10eb523a0ea1d",
      "parents": [
        "7dd2c000ff50c758c7abfa95f57c854e3aeba5e6"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:36 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/hfsplus: return f_fsid for statfs(2)\n\nMake hfsplus return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\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": "7dd2c000ff50c758c7abfa95f57c854e3aeba5e6",
      "tree": "15d5041467bd3560019bc7f1d7d650936c3701cc",
      "parents": [
        "aac49b7543c816a6e2c1581c5b5002e6a0cef3d1"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/hfs: return f_fsid for statfs(2)\n\nMake hfs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\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": "aac49b7543c816a6e2c1581c5b5002e6a0cef3d1",
      "tree": "3410068c8f33faad4c5a2d7f159465ef91230a6c",
      "parents": [
        "514c91a9cca12b19ed80ac6728278aff9bbf65f0"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:35 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/fat: return f_fsid for statfs(2)\n\nMake fat return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\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": "514c91a9cca12b19ed80ac6728278aff9bbf65f0",
      "tree": "cf38741f31c6214b3d64013b3d3fe3c99882a468",
      "parents": [
        "94ea77ac696d76522ad32a51e84a969f83284eda"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:09 2009 -0700"
      },
      "message": "fs/efs: return f_fsid for statfs(2)\n\nMake efs return f_fsid info for statfs(2), and do a little variable\nrenaming in efs_statfs().\n\nSigned-off-by: Coly Li \u003ccoly.li@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": "94ea77ac696d76522ad32a51e84a969f83284eda",
      "tree": "093e7553289e1a7f10b960f808cb86136757dbe9",
      "parents": [
        "8587246a004d6ac10aa12c10e3474cfd9dafa44a"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "fs/cramfs: return f_fsid for statfs(2)\n\nMake cramfs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@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": "8587246a004d6ac10aa12c10e3474cfd9dafa44a",
      "tree": "326cc82deb2cc02a8d729c9b2b6f56c12e01c91a",
      "parents": [
        "a6a2a73c4dc6babba2cfa366305cb936fc469640"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "fs/befs: return f_fsid for statfs(2)\n\nMake befs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Sergey S. Kostyliov \u003crathamahata@php4.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6a2a73c4dc6babba2cfa366305cb936fc469640",
      "tree": "c99f6de9a85860957435d6d05b105c41863f5e40",
      "parents": [
        "accb40122040374e97fdf4bb81bdc9316b52c756"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "fs/affs: return f_fsid for statfs(2)\n\nMake affs return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\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": "accb40122040374e97fdf4bb81bdc9316b52c756",
      "tree": "a3c1982d61036f361bc720d11a9345dd81f76f0c",
      "parents": [
        "10c7db279218eda4b19d29ee17db8a815b18d564"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Thu Apr 02 16:59:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "fs/adfs: return f_fsid for statfs(2)\n\nCurrently many file systems in Linux kernel do not return f_fsid in statfs\ninfo, the value is set as 0 in vfs layer.  Anyway, in some conditions,\nf_fsid from statfs(2) is useful, especially being used as (f_fsid, ino)\npair to uniquely identify a file.\n\nBasic idea of the patches is generating a unique fs ID by\nhuge_encode_dev(sb-\u003es_bdev-\u003ebd_dev) during file system mounting life time\n(no endian consistent issue).  sb is a point of struct super_block of\ncurrent mounted file system being accessed by statfs(2).\n\nThis patch:\n\nMake adfs return f_fsid info for statfs(2), and do a little variable\nrenaming in adfs_statfs().\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: \"Sergey S. Kostyliov\" \u003crathamahata@php4.ru\u003e\nCc: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nCc: Mikulas Patocka \u003cmikulas@artax.karlin.mff.cuni.cz\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Bob Copeland \u003cme@bobcopeland.com\u003e\nCc: Anders Larsen \u003cal@alarsen.net\u003e\nCc: Phillip Lougher \u003cphillip@lougher.demon.co.uk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Evgeniy Dushistov \u003cdushistov@mail.ru\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nCc: Andreas Dilger \u003cadilger@sun.com\u003e\nCc: Jamie Lokier \u003cjamie@shareable.org\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "10c7db279218eda4b19d29ee17db8a815b18d564",
      "tree": "2ab1abd85e3f68a13d50f6c7f617d3999c138b54",
      "parents": [
        "ddd9e91b71072b8ebe89311c3a44b077defa1756"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "preadv/pwritev: switch compat readv/preadv/writev/pwritev from fget to fget_light\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f3554f4bc69803ac2baaf7cf2aa4339e1f4b693e",
      "tree": "52505043de254dc3e34dad7110724fcc1f489eb9",
      "parents": [
        "6949a6318e60aeb9c755679ac7f978aefe8c1722"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:08 2009 -0700"
      },
      "message": "preadv/pwritev: Add preadv and pwritev system calls.\n\nThis patch adds preadv and pwritev system calls.  These syscalls are a\npretty straightforward combination of pread and readv (same for write).\nThey are quite useful for doing vectored I/O in threaded applications.\nUsing lseek+readv instead opens race windows you\u0027ll have to plug with\nlocking.\n\nOther systems have such system calls too, for example NetBSD, check\nhere: http://www.daemon-systems.org/man/preadv.2.html\n\nThe application-visible interface provided by glibc should look like\nthis to be compatible to the existing implementations in the *BSD family:\n\n  ssize_t preadv(int d, const struct iovec *iov, int iovcnt, off_t offset);\n  ssize_t pwritev(int d, const struct iovec *iov, int iovcnt, off_t offset);\n\nThis prototype has one problem though: On 32bit archs is the (64bit)\noffset argument unaligned, which the syscall ABI of several archs doesn\u0027t\nallow to do.  At least s390 needs a wrapper in glibc to handle this.  As\nwe\u0027ll need a wrappers in glibc anyway I\u0027ve decided to push problem to\nglibc entriely and use a syscall prototype which works without\narch-specific wrappers inside the kernel: The offset argument is\nexplicitly splitted into two 32bit values.\n\nThe patch sports the actual system call implementation and the windup in\nthe x86 system call tables.  Other archs follow as separate patches.\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"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": "6949a6318e60aeb9c755679ac7f978aefe8c1722",
      "tree": "97fdbd5d494c5bc99145d5caed28be4ad0e467db",
      "parents": [
        "dac1213842f5caf081804a11d87d2a39a21d6f55"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:07 2009 -0700"
      },
      "message": "preadv/pwritev: create compat_writev()\n\nFactor out some code from compat_sys_writev() which can be shared with the\nupcoming compat_sys_pwritev().\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dac1213842f5caf081804a11d87d2a39a21d6f55",
      "tree": "0b357e0a70fc872c400eb764ec7243969a5439d6",
      "parents": [
        "98310e581e098514867573031b2bfa4ba89c0d93"
      ],
      "author": {
        "name": "Gerd Hoffmann",
        "email": "kraxel@redhat.com",
        "time": "Thu Apr 02 16:59:20 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:07 2009 -0700"
      },
      "message": "preadv/pwritev: create compat_readv()\n\nThis patch series:\n\nImplement the preadv() and pwritev() syscalls.  *BSD has this syscall for\nquite some time.\n\nTest code:\n\n#if 0\nset -x\ngcc -Wall -O2 -o preadv $0\nexit 0\n#endif\n/*\n * preadv demo / test\n *\n * (c) 2008 Gerd Hoffmann \u003ckraxel@redhat.com\u003e\n *\n * build with \"sh $thisfile\"\n */\n\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cinttypes.h\u003e\n#include \u003csys/uio.h\u003e\n\n/* ----------------------------------------------------------------- */\n/* syscall windup                                                    */\n\n#include \u003csys/syscall.h\u003e\n#if 0\n/* WARNING: Be sure you know what you are doing if you enable this.\n * linux syscall code isn\u0027t upstream yet, syscall numbers are subject\n * to change */\n# ifndef __NR_preadv\n#  ifdef __i386__\n#   define __NR_preadv  333\n#   define __NR_pwritev 334\n#  endif\n#  ifdef __x86_64__\n#   define __NR_preadv  295\n#   define __NR_pwritev 296\n#  endif\n# endif\n#endif\n#ifndef __NR_preadv\n# error preadv/pwritev syscall numbers are unknown\n#endif\n\nstatic ssize_t preadv(int fd, const struct iovec *iov, int iovcnt, off_t offset)\n{\n    uint32_t pos_high \u003d (offset \u003e\u003e 32) \u0026 0xffffffff;\n    uint32_t pos_low  \u003d  offset        \u0026 0xffffffff;\n\n    return syscall(__NR_preadv, fd, iov, iovcnt, pos_high, pos_low);\n}\n\nstatic ssize_t pwritev(int fd, const struct iovec *iov, int iovcnt, off_t offset)\n{\n    uint32_t pos_high \u003d (offset \u003e\u003e 32) \u0026 0xffffffff;\n    uint32_t pos_low  \u003d  offset        \u0026 0xffffffff;\n\n    return syscall(__NR_pwritev, fd, iov, iovcnt, pos_high, pos_low);\n}\n\n/* ----------------------------------------------------------------- */\n/* demo/test app                                                     */\n\nstatic char filename[] \u003d \"/tmp/preadv-XXXXXX\";\nstatic char outbuf[11] \u003d \"0123456789\";\nstatic char inbuf[11]  \u003d \"----------\";\n\nstatic struct iovec ovec[2] \u003d {{\n        .iov_base \u003d outbuf + 5,\n        .iov_len  \u003d 5,\n    },{\n        .iov_base \u003d outbuf + 0,\n        .iov_len  \u003d 5,\n    }};\n\nstatic struct iovec ivec[3] \u003d {{\n        .iov_base \u003d inbuf + 6,\n        .iov_len  \u003d 2,\n    },{\n        .iov_base \u003d inbuf + 4,\n        .iov_len  \u003d 2,\n    },{\n        .iov_base \u003d inbuf + 2,\n        .iov_len  \u003d 2,\n    }};\n\nvoid cleanup(void)\n{\n    unlink(filename);\n}\n\nint main(int argc, char **argv)\n{\n    int fd, rc;\n\n    fd \u003d mkstemp(filename);\n    if (-1 \u003d\u003d fd) {\n        perror(\"mkstemp\");\n        exit(1);\n    }\n    atexit(cleanup);\n\n    /* write to file: \"56789-01234\" */\n    rc \u003d pwritev(fd, ovec, 2, 0);\n    if (rc \u003c 0) {\n        perror(\"pwritev\");\n        exit(1);\n    }\n\n    /* read from file: \"78-90-12\" */\n    rc \u003d preadv(fd, ivec, 3, 2);\n    if (rc \u003c 0) {\n        perror(\"preadv\");\n        exit(1);\n    }\n\n    printf(\"result  : %s\\n\", inbuf);\n    printf(\"expected: %s\\n\", \"--129078--\");\n    exit(0);\n}\n\nThis patch:\n\nFactor out some code from compat_sys_readv() which can be shared with the\nupcoming compat_sys_preadv().\n\nSigned-off-by: Gerd Hoffmann \u003ckraxel@redhat.com\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "98310e581e098514867573031b2bfa4ba89c0d93",
      "tree": "b4eeec1516af4be7bd7f3f64dbf49f80e84b2bca",
      "parents": [
        "6e873ec71d091f52510f6aa9bc71d4732438522a"
      ],
      "author": {
        "name": "David VomLehn",
        "email": "dvomlehn@cisco.com",
        "time": "Thu Apr 02 16:59:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:07 2009 -0700"
      },
      "message": "cramfs: propagate uncompression errors\n\nDecompression errors can arise due to corruption of compressed blocks on\nflash or in memory.  This patch propagates errors detected during\ndecompression back to the block layer.\n\nSigned-off-by: David VomLehn \u003cdvomlehn@cisco.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab4ad55512e95b68ca3e25516068e18874f89252",
      "tree": "905f18a75b6a2cd5363db9eecbf424d9cd39f9be",
      "parents": [
        "11dea1900931ac73184b2f5163a13d24a4e572ea"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier.adi@gmail.com",
        "time": "Thu Apr 02 16:58:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:01 2009 -0700"
      },
      "message": "bin_elf_fdpic: check the return value of clear_user\n\nSigned-off-by: Mike Frysinger \u003cvapier.adi@gmail.com\u003e\nSigned-off-by: Bryan Wu \u003ccooloney@kernel.org\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "880fe76ee6f38eda82e9f3de9a7a206dfd1bab9d",
      "tree": "b5f5d085e73bdf352a9878e622d151f98bac6607",
      "parents": [
        "695f6ae0dcea3dd83bfbb9634ff067f780649ba8"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Thu Apr 02 16:57:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:53 2009 -0700"
      },
      "message": "hppfs: hppfs_read_file() may return -ERROR\n\nhppfs_read_file() may return (ssize_t) -ENOMEM, or -EFAULT.  When stored\nin size_t \u0027count\u0027, these errors will not be noticed, a large value will be\nadded to *ppos.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@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": "695f6ae0dcea3dd83bfbb9634ff067f780649ba8",
      "tree": "0c97d92bfdc0791d0456faad6ef93b88e5739247",
      "parents": [
        "de18f3b2d68c1f3481839be760a5ff93f6a9a5e5"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: avoid false EIO errors\n\nSometimes block_write_begin() can map buffers in a page but later we\nfail to copy data into those buffers (because the source page has been\npaged out in the mean time).  We then end up with !uptodate mapped\nbuffers.  To add a bit more to the confusion, block_write_end() does\nnot commit any data (and thus does not any mark buffers as uptodate) if\nwe didn\u0027t succeed with copying all the data.\n\nCommit f4fc66a894546bdc88a775d0e83ad20a65210bcb (ext3: convert to new\naops) missed these cases and thus we were inserting non-uptodate\nbuffers to transaction\u0027s list which confuses JBD code and it reports IO\nerrors, aborts a transaction and generally makes users afraid about\ntheir data ;-P.\n\nThis patch fixes the problem by reorganizing ext3_..._write_end() code\nto first call block_write_end() to mark buffers with valid data\nuptodate and after that we file only uptodate buffers to transaction\u0027s\nlists.\n\nWe also fix a problem where we could leave blocks allocated beyond i_size\n(i_disksize in fact) because of failed write. We now add inode to orphan\nlist when write fails (to be safe in case we crash) and then truncate blocks\nbeyond i_size in a separate transaction.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "de18f3b2d68c1f3481839be760a5ff93f6a9a5e5",
      "tree": "75b4b389baed2c56b1fc94948d1ab42e08ddcdfe",
      "parents": [
        "45f902178022439795a21e14f886b8ccb49a75d2"
      ],
      "author": {
        "name": "Bryan Donlan",
        "email": "bdonlan@gmail.com",
        "time": "Thu Apr 02 16:57:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: return -EIO not -ESTALE on directory traversal through deleted inode\n\next3_iget() returns -ESTALE if invoked on a deleted inode, in order to\nreport errors to NFS properly.  However, in ext[234]_lookup(), this\n-ESTALE can be propagated to userspace if the filesystem is corrupted such\nthat a directory entry references a deleted inode.  This leads to a\nmisleading error message - \"Stale NFS file handle\" - and confusion on the\npart of the admin.\n\nThe bug can be easily reproduced by creating a new filesystem, making a\nlink to an unused inode using debugfs, then mounting and attempting to ls\n-l said link.\n\nThis patch thus changes ext3_lookup to return -EIO if it receives -ESTALE\nfrom ext3_iget(), as ext3 does for other filesystem metadata corruption;\nand also invokes the appropriate ext*_error functions when this case is\ndetected.\n\nSigned-off-by: Bryan Donlan \u003cbdonlan@gmail.com\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": "45f902178022439795a21e14f886b8ccb49a75d2",
      "tree": "addf5725b2cd80be4a140a70499cc07f86635a23",
      "parents": [
        "ecca9af0a98fdacfcdc73979d08481d7b27ff986"
      ],
      "author": {
        "name": "Wei Yongjun",
        "email": "yjwei@cn.fujitsu.com",
        "time": "Thu Apr 02 16:57:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: use unsigned instead of int for type of blocksize in fs/ext3/namei.c\n\nUse unsigned instead of int for the parameter which carries a blocksize.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Wei Yongjun \u003cyjwei@cn.fujitsu.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecca9af0a98fdacfcdc73979d08481d7b27ff986",
      "tree": "41aa40eedd27799b2fa021138173c1adcabe89a5",
      "parents": [
        "039fd8ce6258e01ec29f1637f9bf1868dd877c55"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 16:57:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "jbd: fix oops in jbd_journal_init_inode() on corrupted fs\n\nOn 32-bit system with CONFIG_LBD getblk can fail because provided block\nnumber is too big. Make JBD gracefully handle that.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: \u003cdmaciejak@fortinet.com\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": "039fd8ce6258e01ec29f1637f9bf1868dd877c55",
      "tree": "dcc90b006655eecad1d0cd82850feef2398976fa",
      "parents": [
        "b277c884f7856ce0791b1e72079023a86767981b"
      ],
      "author": {
        "name": "Cyrus Massoumi",
        "email": "cyrusm@gmx.net",
        "time": "Thu Apr 02 16:57:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:52 2009 -0700"
      },
      "message": "ext3: remove the BKL in ext3/ioctl.c\n\nReformat ext3/ioctl.c to make it look more like ext4/ioctl.c and remove\nthe BKL around ext3_ioctl().\n\nSigned-off-by: Cyrus Massoumi \u003ccyrusm@gmx.net\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nAcked-by: 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": "97f76d3d197f201ac8a8a3ced5b8fef81568e50e",
      "tree": "8264f920a1f1a83e9cb0247ffe9390a7b6332852",
      "parents": [
        "9a896c9a48ac6704c0ce8ee081b836644d0afe40"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Thu Apr 02 16:56:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:49 2009 -0700"
      },
      "message": "vfs: check bh-\u003eb_blocknr only if BH_Mapped is set\n\nCheck bh-\u003eb_blocknr only if BH_Mapped is set.\n\nakpm: I doubt if b_blocknr is ever uninitialised here, but it could\nconceivably cause a problem if we\u0027re doing a lookup for block zero.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.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": "d2caa3c549c74d6476e2c29e13bd4d0e7d21c7fe",
      "tree": "8bdaf6ababcd789ced0f441fd9503ee8e033d242",
      "parents": [
        "846c151a4de188bb8f7043097518dab2ff5b5c2c"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Thu Apr 02 16:56:37 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "writeback: guard against jiffies wraparound on inode-\u003edirtied_when checks (try #3)\n\nThe dirtied_when value on an inode is supposed to represent the first time\nthat an inode has one of its pages dirtied.  This value is in units of\njiffies.  It\u0027s used in several places in the writeback code to determine\nwhen to write out an inode.\n\nThe problem is that these checks assume that dirtied_when is updated\nperiodically.  If an inode is continuously being used for I/O it can be\npersistently marked as dirty and will continue to age.  Once the time\ncompared to is greater than or equal to half the maximum of the jiffies\ntype, the logic of the time_*() macros inverts and the opposite of what is\nneeded is returned.  On 32-bit architectures that\u0027s just under 25 days\n(assuming HZ \u003d\u003d 1000).\n\nAs the least-recently dirtied inode, it\u0027ll end up being the first one that\npdflush will try to write out.  sync_sb_inodes does this check:\n\n\t/* Was this inode dirtied after sync_sb_inodes was called? */\n \tif (time_after(inode-\u003edirtied_when, start))\n \t\tbreak;\n\n...but now dirtied_when appears to be in the future.  sync_sb_inodes bails\nout without attempting to write any dirty inodes.  When this occurs,\npdflush will stop writing out inodes for this superblock.  Nothing can\nunwedge it until jiffies moves out of the problematic window.\n\nThis patch fixes this problem by changing the checks against dirtied_when\nto also check whether it appears to be in the future.  If it does, then we\nconsider the value to be far in the past.\n\nThis should shrink the problematic window of time to such a small period\n(30s) as not to matter.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nAcked-by: Ian Kent \u003craven@themaw.net\u003e\nCc: Jens Axboe \u003cjens.axboe@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": "b6fac63cc1f52ec27f29fe6c6c8494a2ffac33fd",
      "tree": "78b4da8231fb80ea05fffc65c4647957b5a858fb",
      "parents": [
        "33e5d76979cf01e3834814fe0aea569d1d602c1a"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Thu Apr 02 16:56:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "vfs: skip I_CLEAR state inodes\n\nclear_inode() will switch inode state from I_FREEING to I_CLEAR, and do so\n_outside_ of inode_lock.  So any I_FREEING testing is incomplete without a\ncoupled testing of I_CLEAR.\n\nSo add I_CLEAR tests to drop_pagecache_sb(), generic_sync_sb_inodes() and\nadd_dquot_ref().\n\nMasayoshi MIZUMA discovered the bug in drop_pagecache_sb() and Jan Kara\nreminds fixing the other two cases.\n\nMasayoshi MIZUMA has a nice panic flow:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            [process A]               |        [process B]\n |                                    |\n |    prune_icache()                  | drop_pagecache()\n |      spin_lock(\u0026inode_lock)        |   drop_pagecache_sb()\n |      inode-\u003ei_state |\u003d I_FREEING;  |       |\n |      spin_unlock(\u0026inode_lock)      |       V\n |          |                         |     spin_lock(\u0026inode_lock)\n |          V                         |         |\n |      dispose_list()                |         |\n |        list_del()                  |         |\n |        clear_inode()               |         |\n |          inode-\u003ei_state \u003d I_CLEAR  |         |\n |            |                       |         V\n |            |                       |      if (inode-\u003ei_state \u0026 (I_FREEING|I_WILL_FREE))\n |            |                       |              continue;           \u003c\u003d\u003d\u003d\u003d NOT MATCH\n |            |                       |\n |            |                       | (DANGER from here on! Accessing disposing inode!)\n |            |                       |\n |            |                       |      __iget()\n |            |                       |        list_move() \u003c\u003d\u003d\u003d\u003d\u003d PANIC on poisoned list !!\n V            V                       |\n(time)\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nReported-by: Masayoshi MIZUMA \u003cm.mizuma@jp.fujitsu.com\u003e\nReviewed-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\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": "33e5d76979cf01e3834814fe0aea569d1d602c1a",
      "tree": "58a03e5da59db203245da10db144a4f6f61a83ba",
      "parents": [
        "5482415a5ecc0cd791a5d885cc3db8281401078f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Apr 02 16:56:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:48 2009 -0700"
      },
      "message": "nommu: fix a number of issues with the per-MM VMA patch\n\nFix a number of issues with the per-MM VMA patch:\n\n (1) Make mmap_pages_allocated an atomic_long_t, just in case this is used on\n     a NOMMU system with more than 2G pages.  Makes no difference on a 32-bit\n     system.\n\n (2) Report vma-\u003evm_pgoff * PAGE_SIZE as a 64-bit value, not a 32-bit value,\n     lest it overflow.\n\n (3) Move the allocation of the vm_area_struct slab back for fork.c.\n\n (4) Use KMEM_CACHE() for both vm_area_struct and vm_region slabs.\n\n (5) Use BUG_ON() rather than if () BUG().\n\n (6) Make the default validate_nommu_regions() a static inline rather than a\n     #define.\n\n (7) Make free_page_series()\u0027s objection to pages with a refcount !\u003d 1 more\n     informative.\n\n (8) Adjust the __put_nommu_region() banner comment to indicate that the\n     semaphore must be held for writing.\n\n (9) Limit the number of warnings about munmaps of non-mmapped regions.\n\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "146bca72c7e6ba52de82a63b1fce7934dc103dbc",
      "tree": "fee0aff001a5d5226518f0b67232f083f0931209",
      "parents": [
        "40346005166329bc4b53e0c564aff3968c1ddaa0"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Mar 16 18:27:37 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 13:36:28 2009 +0200"
      },
      "message": "udf: Don\u0027t write integrity descriptor too often\n\nWe update information in logical volume integrity descriptor after each\nallocation (as LVID contains free space, number of directories and files on\ndisk etc.). If the filesystem is on some phase change media, this leads to its\nquick degradation as such media is able to handle only 10000 overwrites or so.\nWe solve the problem by writing new information into LVID only on umount,\nremount-ro and sync. This solves the problem at the price of longer media\ninconsistency (previously media became consistent after pdflush flushed dirty\nLVID buffer) but that should be acceptable.\n\nReport by and patch written in cooperation with\nRich Coe \u003cRichard.Coe@med.ge.com\u003e.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "40346005166329bc4b53e0c564aff3968c1ddaa0",
      "tree": "af6440a2aeff69ed6cccd93c663eb564e7cf6411",
      "parents": [
        "225feded89d447c2ab76e38e67ef56860c5bb60f"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Mar 19 16:21:38 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:56 2009 +0200"
      },
      "message": "udf: Try anchor in block 256 first\n\nAnchor block can be located at several places on the medium. Two of the\nlocations are relative to media end which is problematic to detect. Also\nsome drives report some block as last but are not able to read it or any\nblock nearby before it. So let\u0027s first try block 256 and if it is all fine,\ndon\u0027t look at other possible locations of anchor blocks to avoid IO errors.\nThis change required a larger reorganization of code but the new code is\nhopefully more readable and definitely shorter.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "225feded89d447c2ab76e38e67ef56860c5bb60f",
      "tree": "f804191425cc2be8c1e6fec6e772b9b201086c92",
      "parents": [
        "1197e4dfcf4ac17d763a59e5de1d4d4b9781a555"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Mar 11 16:02:04 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:55 2009 +0200"
      },
      "message": "udf: Some type fixes and cleanups\n\nMake udf_check_valid() return 1 if the validity check passed and 0 otherwise.\nSo far it was the other way around which was a bit confusing. Also make\nudf_vrs() return loff_t which is really the type it should return (not int).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "1197e4dfcf4ac17d763a59e5de1d4d4b9781a555",
      "tree": "61a98ed0c7dfeb5a078c60aa0857f16a7e780c3f",
      "parents": [
        "4136801aec27b56ae4d06b638b4e9956346b08c8"
      ],
      "author": {
        "name": "Clemens Ladisch",
        "email": "clemens@ladisch.de",
        "time": "Wed Mar 11 15:57:47 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:55 2009 +0200"
      },
      "message": "udf: use hardware sector size\n\nThis patch makes the UDF FS driver use the hardware sector size as the\ndefault logical block size, which is required by the UDF specifications.\nWhile the previous default of 2048 bytes was correct for optical disks,\nit was not for hard disks or USB storage devices, and made it impossible\nto use such a device with the default mount options.  (The Linux mkudffs\ntool uses a default block size of 2048 bytes even on devices with\nsmaller hardware sectors, so this bug is unlikely to be noticed unless\nUDF-formatted USB storage devices are exchanged with other OSs.)\n\nTo avoid regressions for people who use loopback optical disk images or\nwho used the (sometimes wrong) defaults of mkudffs, we also try with\na block size of 2048 bytes if no anchor was found with the hardware\nsector size.\n\nSigned-off-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4136801aec27b56ae4d06b638b4e9956346b08c8",
      "tree": "3b343ad6a5833b1bdd8853e7b786ec6eab4848e0",
      "parents": [
        "59285c28d18b77437e6dc7c2abb9aaee10ec3a75"
      ],
      "author": {
        "name": "Clemens Ladisch",
        "email": "clemens@ladisch.de",
        "time": "Fri Mar 06 09:16:49 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:54 2009 +0200"
      },
      "message": "udf: fix novrs mount option\n\nThe novrs mount option was broken due to a missing break.\n\nSigned-off-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "59285c28d18b77437e6dc7c2abb9aaee10ec3a75",
      "tree": "70e567d2372045363f5062b59619f680f65172c3",
      "parents": [
        "557f5a1468394069da2bd6a63e23970ff12aa072"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Feb 04 19:46:11 2009 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:53 2009 +0200"
      },
      "message": "udf: Fix oops when invalid character in filename occurs\n\nFunctions udf_CS0toNLS() and udf_NLStoCS0() didn\u0027t count with the fact that\nNLS can return negative length when invalid character is given to it for\nconversion. Thus interesting things could happen (such as overwriting random\nmemory with the rest of filename). Add appropriate checks.\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "557f5a1468394069da2bd6a63e23970ff12aa072",
      "tree": "caf29680dca8604269b9b09f0a5f30dc42b49e80",
      "parents": [
        "f90981fed974759b5057c5a04299fe03d9dbf1d2"
      ],
      "author": {
        "name": "Coly Li",
        "email": "coly.li@suse.de",
        "time": "Tue Jan 20 01:36:55 2009 +0800"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:53 2009 +0200"
      },
      "message": "udf: return f_fsid for statfs(2)\n\nThis patch makes udf return f_fsid info for statfs(2).\n\nSigned-off-by: Coly Li \u003ccoly.li@suse.de\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "f90981fed974759b5057c5a04299fe03d9dbf1d2",
      "tree": "7a794ae61ed947c4459259279c2b014f484a644e",
      "parents": [
        "87bc730c07a0884d14d6af5c9d49f4669c0a0589"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Wed Dec 03 17:31:39 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:52 2009 +0200"
      },
      "message": "udf: Add checks to not underflow sector_t\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "87bc730c07a0884d14d6af5c9d49f4669c0a0589",
      "tree": "aae3f3b6286526e16ee9614923d227612affe51e",
      "parents": [
        "e650b94addfbf072952df762e6f1c6c9e26c4f9c"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Tue Dec 02 13:40:11 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:52 2009 +0200"
      },
      "message": "udf: fix default mode and dmode options handling\n\nOn x86 (and several other archs) mode_t is defined as \"unsigned short\"\nand comparing unsigned shorts to negative ints is broken (because short\nis promoted to int and then compared). Fix it.\n\nReported-and-tested-by: Laurent Riffard \u003claurent.riffard@free.fr\u003e\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "e650b94addfbf072952df762e6f1c6c9e26c4f9c",
      "tree": "180ad47627389433202541891d76d91ab041930c",
      "parents": [
        "30930554f23511645ad9cfb89792219bf398b654"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Dec 01 13:06:10 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:51 2009 +0200"
      },
      "message": "udf: fix sparse warnings:\n\nFix sparse warnings:\n\n  fs/udf/balloc.c:843:3: warning: returning void-valued expression\n  fs/udf/balloc.c:847:3: warning: returning void-valued expression\n  fs/udf/balloc.c:851:3: warning: returning void-valued expression\n  fs/udf/balloc.c:855:3: warning: returning void-valued expression\n\nReported-by: Hannes Eder \u003channes@hanneseder.net\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "30930554f23511645ad9cfb89792219bf398b654",
      "tree": "24a7b9a5527ba92f808d46d5b598f66eac9351ad",
      "parents": [
        "7ac9bcd5da59dd96eb1153d3fc04c3471fa5c09d"
      ],
      "author": {
        "name": "roel kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Wed Oct 29 17:23:54 2008 -0400"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:50 2009 +0200"
      },
      "message": "udf: unsigned last[i] cannot be less than 0\n\nunsigned last[i] cannot be less than 0\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "7ac9bcd5da59dd96eb1153d3fc04c3471fa5c09d",
      "tree": "e9c5470783e9ec098fb7a056d89872c9e225f5c3",
      "parents": [
        "530f1a5e3e93a038a457faf716975ed19f82831d"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Nov 16 20:52:19 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:50 2009 +0200"
      },
      "message": "udf: implement mode and dmode mounting options\n\n\"dmode\" allows overriding permissions of directories and\n\"mode\" allows overriding permissions of files.\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "530f1a5e3e93a038a457faf716975ed19f82831d",
      "tree": "59dbd8517dd925067891d61b26589ad759c56278",
      "parents": [
        "ba9aadd80c24775e55a93ebe0c2491b4d2899257"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Nov 16 19:02:45 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:49 2009 +0200"
      },
      "message": "udf: reduce stack usage of udf_get_filename\n\nAllocate strings with kmalloc.\n\nCheckstack output:\nBefore: udf_get_filename:          600\nAfter:  udf_get_filename:          136\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "ba9aadd80c24775e55a93ebe0c2491b4d2899257",
      "tree": "29b8f456c6322f9a0d375bfa0a368ef4e18b0cb8",
      "parents": [
        "97e961fdbf32488b7386c9f1effa2bee97d47929"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sun Nov 16 19:01:44 2008 +0100"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:48 2009 +0200"
      },
      "message": "udf: reduce stack usage of udf_load_pvoldesc\n\nAllocate strings with kmalloc.\n\nCheckstack output:\nBefore: udf_process_sequence:      712\nAfter:  udf_process_sequence:      200\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "97e961fdbf32488b7386c9f1effa2bee97d47929",
      "tree": "fa006f5e803e532c9781d4f5f6e34cf9d8382814",
      "parents": [
        "5ca4e4be841e389d7d17833fef7be2359f290163"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Oct 15 12:29:03 2008 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:47 2009 +0200"
      },
      "message": "Fix the udf code not to pass structs on stack where possible.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "5ca4e4be841e389d7d17833fef7be2359f290163",
      "tree": "9c059a3b7599260d096fae395d640e79bdc46f30",
      "parents": [
        "833bb3046b6cb320e775ea2160ddca87d53260d5"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Wed Oct 15 12:28:03 2008 +0200"
      },
      "committer": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Apr 02 12:29:47 2009 +0200"
      },
      "message": "Remove struct typedefs from fs/udf/ecma_167.h et al.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\n"
    },
    {
      "commit": "4fe70410d9a219dabb47328effccae7e7f2a6e26",
      "tree": "7f36d6cd27333fa28447f06ce37a6fecceb42955",
      "parents": [
        "395d73413c5656c6d7706ae91dcb441f9b7e3074",
        "cc85906110e26fe8537c3bdbc08a74ae8110030b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:58:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:58:42 2009 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027for-linus\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (58 commits)\n  SUNRPC: Ensure IPV6_V6ONLY is set on the socket before binding to a port\n  NSM: Fix unaligned accesses in nsm_init_private()\n  NFS: Simplify logic to compare socket addresses in client.c\n  NFS: Start PF_INET6 callback listener only if IPv6 support is available\n  lockd: Start PF_INET6 listener only if IPv6 support is available\n  SUNRPC: Remove CONFIG_SUNRPC_REGISTER_V4\n  SUNRPC: rpcb_register() should handle errors silently\n  SUNRPC: Simplify kernel RPC service registration\n  SUNRPC: Simplify svc_unregister()\n  SUNRPC: Allow callers to pass rpcb_v4_register a NULL address\n  SUNRPC: rpcbind actually interprets r_owner string\n  SUNRPC: Clean up address type casts in rpcb_v4_register()\n  SUNRPC: Don\u0027t return EPROTONOSUPPORT in svc_register()\u0027s helpers\n  SUNRPC: Use IPv4 loopback for registering AF_INET6 kernel RPC services\n  SUNRPC: Set IPV6ONLY flag on PF_INET6 RPC listener sockets\n  NFS: Revert creation of IPv6 listeners for lockd and NFSv4 callbacks\n  SUNRPC: Remove @family argument from svc_create() and svc_create_pooled()\n  SUNRPC: Change svc_create_xprt() to take a @family argument\n  SUNRPC: svc_setup_socket() gets protocol family from socket\n  SUNRPC: Pass a family argument to svc_register()\n  ...\n"
    },
    {
      "commit": "395d73413c5656c6d7706ae91dcb441f9b7e3074",
      "tree": "7fadabe996f70d7918583fa2312d4fad19397fcb",
      "parents": [
        "c226fd659fa7b6a7b038df5ae6856a68514bacde",
        "06705bff9114531a997a7d0c2520bea0f2927410"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:57:49 2009 -0700"
      },
      "message": "Merge branch \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n\n* \u0027for_linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (33 commits)\n  ext4: Regularize mount options\n  ext4: fix locking typo in mballoc which could cause soft lockup hangs\n  ext4: fix typo which causes a memory leak on error path\n  jbd2: Update locking coments\n  ext4: Rename pa_linear to pa_type\n  ext4: add checks of block references for non-extent inodes\n  ext4: Check for an valid i_mode when reading the inode from disk\n  ext4: Use WRITE_SYNC for commits which are caused by fsync()\n  ext4: Add auto_da_alloc mount option\n  ext4: Use struct flex_groups to calculate get_orlov_stats()\n  ext4: Use atomic_t\u0027s in struct flex_groups\n  ext4: remove /proc tuning knobs\n  ext4: Add sysfs support\n  ext4: Track lifetime disk writes\n  ext4: Fix discard of inode prealloc space with delayed allocation.\n  ext4: Automatically allocate delay allocated blocks on rename\n  ext4: Automatically allocate delay allocated blocks on close\n  ext4: add EXT4_IOC_ALLOC_DA_BLKS ioctl\n  ext4: Simplify delalloc code by removing mpage_da_writepages()\n  ext4: Save stack space by removing fake buffer heads\n  ...\n"
    },
    {
      "commit": "cc85906110e26fe8537c3bdbc08a74ae8110030b",
      "tree": "891813098ede3dba4d5ff3b83b1f7b491367ad2f",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "c69da774b28e01e062e0a3aba7509f2dcfd2a11a"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:28:15 2009 -0400"
      },
      "message": "Merge branch \u0027devel\u0027 into for-linus\n"
    },
    {
      "commit": "ad5b365c1266b0c9e8e254a3c1cc4ef66bf33cba",
      "tree": "b7f9bf04da9f08057db4f5e1a88a4b38511e200e",
      "parents": [
        "3c8c45dfab78a1919f6f8a3ea46998c487eb7e12"
      ],
      "author": {
        "name": "Mans Rullgard",
        "email": "mans@mansr.com",
        "time": "Sat Mar 28 19:55:20 2009 +0000"
      },
      "committer": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Apr 01 13:24:14 2009 -0400"
      },
      "message": "NSM: Fix unaligned accesses in nsm_init_private()\n\nThis fixes unaligned accesses in nsm_init_private() when\ncreating nlm_reboot keys.\n\nSigned-off-by: Mans Rullgard \u003cmans@mansr.com\u003e\nReviewed-by: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n"
    },
    {
      "commit": "c226fd659fa7b6a7b038df5ae6856a68514bacde",
      "tree": "a695689d4d8cdd927400747b94250521eb863686",
      "parents": [
        "c09bca786ff941ed17c5f381c4eca5b106808c51",
        "d57e62b89796f751c9422801cbcd407a9f8dcdc4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 10:20:44 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable:\n  Btrfs: try to free metadata pages when we free btree blocks\n  Btrfs: add extra flushing for renames and truncates\n  Btrfs: make sure btrfs_update_delayed_ref doesn\u0027t increase ref_mod\n  Btrfs: optimize fsyncs on old files\n  Btrfs: tree logging unlink/rename fixes\n  Btrfs: Make sure i_nlink doesn\u0027t hit zero too soon during log replay\n  Btrfs: limit balancing work while flushing delayed refs\n  Btrfs: readahead checksums during btrfs_finish_ordered_io\n  Btrfs: leave btree locks spinning more often\n  Btrfs: Only let very young transactions grow during commit\n  Btrfs: Check for a blocking lock before taking the spin\n  Btrfs: reduce stack in cow_file_range\n  Btrfs: reduce stalls during transaction commit\n  Btrfs: process the delayed reference queue in clusters\n  Btrfs: try to cleanup delayed refs while freeing extents\n  Btrfs: reduce stack usage in some crucial tree balancing functions\n  Btrfs: do extent allocation and reference count updates in the background\n  Btrfs: don\u0027t preallocate metadata blocks during btrfs_search_slot\n"
    },
    {
      "commit": "8f63aaa8b9239475fc580d4450f1141496655305",
      "tree": "eca8552ab842a7a2eecea104e5842f7bccadf09b",
      "parents": [
        "56fcef75117a153f298b3fe54af31053f53997dd"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: fix lookup deadlock\n\nA deadlock can occur when user space uses a signal (autofs version 4 uses\nSIGCHLD for this) to effect expire completion.\n\nThe order of events is:\n\nExpire process completes, but before being able to send SIGCHLD to it\u0027s parent\n...\n\nAnother process walks onto a different mount point and drops the directory\ninode semaphore prior to sending the request to the daemon as it must ...\n\nA third process does an lstat on on the expired mount point causing it to wait\non expire completion (unfortunately) holding the directory semaphore.\n\nThe mount request then arrives at the daemon which does an lstat and,\ndeadlock.\n\nFor some time I was concerned about releasing the directory semaphore around\nthe expire wait in autofs4_lookup as well as for the mount call back.  I\nfinally realized that the last round of changes in this function made the\nexpiring dentry and the lookup dentry separate and distinct so the check and\npossible wait can be done anywhere prior to the mount call back.  This patch\nmoves the check to just before the mount call back and inside the directory\ninode mutex release.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56fcef75117a153f298b3fe54af31053f53997dd",
      "tree": "56b7a86c811e5f83c232b0f21c5fcf894795fd42",
      "parents": [
        "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53"
      ],
      "author": {
        "name": "Ian Kent",
        "email": "raven@themaw.net",
        "time": "Tue Mar 31 15:24:43 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "autofs4: cleanup expire code duplication\n\nA significant portion of the autofs_dev_ioctl_expire() and\nautofs4_expire_multi() functions is duplicated code.  This patch cleans that\nup.\n\nSigned-off-by: Ian Kent \u003craven@themaw.net\u003e\nSigned-off-by: Jeff Moyer \u003cjmoyer@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": "00fcf2cb6f6bb421851c3ba062c0a36760ea6e53",
      "tree": "741afc144a87af1aa7915d812924da7d7418611f",
      "parents": [
        "e2801806de1c9c1d03b7d1bfcb2e01dd4d389e80"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:24:42 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:23 2009 -0700"
      },
      "message": "ecryptfs: use kzfree()\n\nUse kzfree() instead of memset() + kfree().\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Tyler Hicks \u003ctyhicks@linux.vnet.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": "c3b1b1cbf002e65a3cabd479e68b5f35886a26db",
      "tree": "20286cf60de629dc00eaff4cd712347f9d9a2278",
      "parents": [
        "bb233fdfc7b7cefe45bfa2e8d1b24e79c60a48e5"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Tue Mar 31 15:24:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:22 2009 -0700"
      },
      "message": "ramfs: add support for \"mode\u003d\" mount option\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d12843\n\n\"I use ramfs instead of tmpfs for /tmp because I don\u0027t use swap on my\nlaptop.  Some apps need 1777 mode for /tmp directory, but ramfs does not\nsupport \u0027mode\u003d\u0027 mount option.\"\n\nReported-by: Avan Anishchuk \u003cmatimatik@gmail.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "395108880efff4a4ffa1ffa554477f7f5ba6a031",
      "tree": "7d5797145d54b6cd8752eb2a6b1fd934336a005f",
      "parents": [
        "2dfa4eeab0fc7e8633974f2770945311b31eedf6"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: make eventfd use keyed wakeups\n\nIntroduce keyed event wakeups inside the eventfd code.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2dfa4eeab0fc7e8633974f2770945311b31eedf6",
      "tree": "de372dc3955bb8ab2dec1b50f4292f367fa4e22f",
      "parents": [
        "37e5540b3c9d838eb20f2ca8ea2eb8072271e403"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll keyed wakeups: teach epoll about hints coming with the wakeup key\n\nUse the events hint now sent by some devices, to avoid unnecessary wakeups\nfor events that are of no interest for the caller.  This code handles both\ndevices that are sending keyed events, and the ones that are not (and\nevent the ones that sometimes send events, and sometimes don\u0027t).\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: William Lee Irwin III \u003cwli@movementarian.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bcd0b235bf3808dec5115c381cd55568f63b85f0",
      "tree": "d73c4aa83dcd5321d2c48e070020576098b9705e",
      "parents": [
        "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:18 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "eventfd: improve support for semaphore-like behavior\n\nPeople started using eventfd in a semaphore-like way where before they\nwere using pipes.\n\nThat is, counter-based resource access.  Where a \"wait()\" returns\nimmediately by decrementing the counter by one, if counter is greater than\nzero.  Otherwise will wait.  And where a \"post(count)\" will add count to\nthe counter releasing the appropriate amount of waiters.  If eventfd the\n\"post\" (write) part is fine, while the \"wait\" (read) does not dequeue 1,\nbut the whole counter value.\n\nThe problem with eventfd is that a read() on the fd returns and wipes the\nwhole counter, making the use of it as semaphore a little bit more\ncumbersome.  You can do a read() followed by a write() of COUNTER-1, but\nIMO it\u0027s pretty easy and cheap to make this work w/out extra steps.  This\npatch introduces a new eventfd flag that tells eventfd to only dequeue 1\nfrom the counter, allowing simple read/write to make it behave like a\nsemaphore.  Simple test here:\n\nhttp://www.xmailserver.org/eventfd-sem.c\n\nTo be back-compatible with earlier kernels, userspace applications should\nprobe for the availability of this feature via\n\n#ifdef EFD_SEMAPHORE\n\tfd \u003d eventfd2 (CNT, EFD_SEMAPHORE);\n\tif (fd \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINVAL)\n\t\t\u003cfallback\u003e\n#else\n\t\t\u003cfallback\u003e\n#endif\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \u003clinux-api@vger.kernel.org\u003e\nTested-by: Michael Kerrisk \u003cmtk.manpages@gmail.com\u003e\nCc: Ulrich Drepper \u003cdrepper@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": "4f0989dbfa8d18dd17c32120aac1eb3e906a62a2",
      "tree": "8b81c45c23ff2a598ed67c5732dfb0ca69693aa0",
      "parents": [
        "e057e15ff66a620eda4c407486cbb8f8fbb7d878"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:16 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:20 2009 -0700"
      },
      "message": "epoll: use real type instead of void *\n\neventpoll.c uses void * in one place for no obvious reason; change it to\nuse the real type instead.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-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": "e057e15ff66a620eda4c407486cbb8f8fbb7d878",
      "tree": "aa9e15c13ce5882ca0f0b442eec71d99fec8a4ff",
      "parents": [
        "d1bc90dd5d037079f96b3327f943eb6ae8ef7491"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: clean up ep_modify\n\nep_modify() doesn\u0027t need to set event.data from within the ep-\u003elock\nspinlock as the comment suggests.  The only place event.data is used is\nep_send_events_proc(), and this is protected by ep-\u003emtx instead of\nep-\u003elock.  Also update the comment for mutex_lock() at the top of\nep_scan_ready_list(), which mentions epoll_ctl(EPOLL_CTL_DEL) but not\nepoll_ctl(EPOLL_CTL_MOD).\n\nep_modify() can also use spin_lock_irq() instead of spin_lock_irqsave().\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-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": "d1bc90dd5d037079f96b3327f943eb6ae8ef7491",
      "tree": "0380bd32cee23815b214d81a12b618140c544799",
      "parents": [
        "d0305882825784e74f68a56eee6c3a812a99f235"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove unnecessary xchg\n\nxchg in ep_unregister_pollwait() is unnecessary because it is protected by\neither epmutex or ep-\u003emtx (the same protection as ep_remove()).\n\nIf xchg was necessary, it would be insufficient to protect against\nproblems: if multiple concurrent calls to ep_unregister_pollwait() were\npossible then a second caller that returns without doing anything because\nnwait \u003d\u003d 0 could return before the waitqueues are removed by the first\ncaller, which looks like it could lead to problematic races with\nep_poll_callback().\n\nSo remove xchg and add comments about the locking.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-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": "d0305882825784e74f68a56eee6c3a812a99f235",
      "tree": "a4dcfea753279e1f8f4e7cc8256a8f5c195341ce",
      "parents": [
        "abff55cee1039b5a3b96f7a5eb6e65b9f247a274"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:14 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remember the event if epoll_wait returns -EFAULT\n\nIf epoll_wait returns -EFAULT, the event that was being returned when the\nfault was encountered will be forgotten.  This is not a big deal since\nEFAULT will happen only if a buggy userspace program passes in a bad\naddress, in which case what happens later usually doesn\u0027t matter.\nHowever, it is easy to remember the event for later, and this patch makes\na simple change to do that.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-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": "abff55cee1039b5a3b96f7a5eb6e65b9f247a274",
      "tree": "dfbcc71256c2129d2e0ee3e077461103338b9591",
      "parents": [
        "bb57c3edcd2fc51d95914c39448f36e43af9d6af"
      ],
      "author": {
        "name": "Tony Battersby",
        "email": "tonyb@cybernetics.com",
        "time": "Tue Mar 31 15:24:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: don\u0027t use current in irq context\n\nep_call_nested() (formerly ep_poll_safewake()) uses \"current\" (without\ndereferencing it) to detect callback recursion, but it may be called from\nirq context where the use of current is generally discouraged.  It would\nbe better to use get_cpu() and put_cpu() to detect the callback recursion.\n\nSigned-off-by: Tony Battersby \u003ctonyb@cybernetics.com\u003e\nAcked-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": "bb57c3edcd2fc51d95914c39448f36e43af9d6af",
      "tree": "8d38edcdc5ef1f2694c3607829952f04ce266292",
      "parents": [
        "296e236e96dddef351a1809c0d414bcddfcf3800"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:12 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: remove debugging code\n\nRemove debugging code from epoll.  There\u0027s no need for it to be included\ninto mainline code.\n\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": "296e236e96dddef351a1809c0d414bcddfcf3800",
      "tree": "279d6eb3f0114a49897cd4bbc0eaf43fffd46c6e",
      "parents": [
        "5071f97ec6d74f006072de0ce89b67c8792fe5a1"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:11 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:19 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll (update)\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5071f97ec6d74f006072de0ce89b67c8792fe5a1",
      "tree": "cb20ebd79c6c146c73d321b4558f8176a0cf06c9",
      "parents": [
        "3cdbbeebb77348176bd6a03fd86e11bc281c529e"
      ],
      "author": {
        "name": "Davide Libenzi",
        "email": "davidel@xmailserver.org",
        "time": "Tue Mar 31 15:24:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "epoll: fix epoll\u0027s own poll\n\nFix a bug inside the epoll\u0027s f_op-\u003epoll() code, that returns POLLIN even\nthough there are no actual ready monitored fds.  The bug shows up if you\nadd an epoll fd inside another fd container (poll, select, epoll).\n\nThe problem is that callback-based wake ups used by epoll does not carry\n(patches will follow, to fix this) any information about the events that\nactually happened.  So the callback code, since it can\u0027t call the file*\n-\u003epoll() inside the callback, chains the file* into a ready-list.\n\nSo, suppose you added an fd with EPOLLOUT only, and some data shows up on\nthe fd, the file* mapped by the fd will be added into the ready-list (via\nwakeup callback).  During normal epoll_wait() use, this condition is\nsorted out at the time we\u0027re actually able to call the file*\u0027s\nf_op-\u003epoll().\n\nInside the old epoll\u0027s f_op-\u003epoll() though, only a quick check\n!list_empty(ready-list) was performed, and this could have led to\nreporting POLLIN even though no ready fds would show up at a following\nepoll_wait().  In order to correctly report the ready status for an epoll\nfd, the ready-list must be checked to see if any really available fd+event\nwould be ready in a following epoll_wait().\n\nOperation (calling f_op-\u003epoll() from inside f_op-\u003epoll()) that, like wake\nups, must be handled with care because of the fact that epoll fds can be\nadded to other epoll fds.\n\nTest code:\n\n/*\n *  epoll_test by Davide Libenzi (Simple code to test epoll internals)\n *  Copyright (C) 2008  Davide Libenzi\n *\n *  This program is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation; either version 2 of the License, or\n *  (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *  Davide Libenzi \u003cdavidel@xmailserver.org\u003e\n *\n */\n\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003csignal.h\u003e\n#include \u003climits.h\u003e\n#include \u003cpoll.h\u003e\n#include \u003csys/epoll.h\u003e\n#include \u003csys/wait.h\u003e\n\n#define EPWAIT_TIMEO\t(1 * 1000)\n#ifndef POLLRDHUP\n#define POLLRDHUP 0x2000\n#endif\n\n#define EPOLL_MAX_CHAIN\t100L\n\n#define EPOLL_TF_LOOP (1 \u003c\u003c 0)\n\nstruct epoll_test_cfg {\n\tlong size;\n\tlong flags;\n};\n\nstatic int xepoll_create(int n) {\n\tint epfd;\n\n\tif ((epfd \u003d epoll_create(n)) \u003d\u003d -1) {\n\t\tperror(\"epoll_create\");\n\t\texit(2);\n\t}\n\n\treturn epfd;\n}\n\nstatic void xepoll_ctl(int epfd, int cmd, int fd, struct epoll_event *evt) {\n\tif (epoll_ctl(epfd, cmd, fd, evt) \u003c 0) {\n\t\tperror(\"epoll_ctl\");\n\t\texit(3);\n\t}\n}\n\nstatic void xpipe(int *fds) {\n\tif (pipe(fds)) {\n\t\tperror(\"pipe\");\n\t\texit(4);\n\t}\n}\n\nstatic pid_t xfork(void) {\n\tpid_t pid;\n\n\tif ((pid \u003d fork()) \u003d\u003d (pid_t) -1) {\n\t\tperror(\"pipe\");\n\t\texit(5);\n\t}\n\n\treturn pid;\n}\n\nstatic int run_forked_proc(int (*proc)(void *), void *data) {\n\tint status;\n\tpid_t pid;\n\n\tif ((pid \u003d xfork()) \u003d\u003d 0)\n\t\texit((*proc)(data));\n\tif (waitpid(pid, \u0026status, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn WIFEXITED(status) ? WEXITSTATUS(status): -2;\n}\n\nstatic int check_events(int fd, int timeo) {\n\tstruct pollfd pfd;\n\n\tfprintf(stdout, \"Checking events for fd %d\\n\", fd);\n\tmemset(\u0026pfd, 0, sizeof(pfd));\n\tpfd.fd \u003d fd;\n\tpfd.events \u003d POLLIN | POLLOUT;\n\tif (poll(\u0026pfd, 1, timeo) \u003c 0) {\n\t\tperror(\"poll()\");\n\t\treturn 0;\n\t}\n\tif (pfd.revents \u0026 POLLIN)\n\t\tfprintf(stdout, \"\\tPOLLIN\\n\");\n\tif (pfd.revents \u0026 POLLOUT)\n\t\tfprintf(stdout, \"\\tPOLLOUT\\n\");\n\tif (pfd.revents \u0026 POLLERR)\n\t\tfprintf(stdout, \"\\tPOLLERR\\n\");\n\tif (pfd.revents \u0026 POLLHUP)\n\t\tfprintf(stdout, \"\\tPOLLHUP\\n\");\n\tif (pfd.revents \u0026 POLLRDHUP)\n\t\tfprintf(stdout, \"\\tPOLLRDHUP\\n\");\n\n\treturn pfd.revents;\n}\n\nstatic int epoll_test_tty(void *data) {\n\tint epfd, ifd \u003d fileno(stdin), res;\n\tstruct epoll_event evt;\n\n\tif (check_events(ifd, 0) !\u003d POLLOUT) {\n\t\tfprintf(stderr, \"Something is cooking on STDIN (%d)\\n\", ifd);\n\t\treturn 1;\n\t}\n\tepfd \u003d xepoll_create(1);\n\tfprintf(stdout, \"Created epoll fd (%d)\\n\", epfd);\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\txepoll_ctl(epfd, EPOLL_CTL_ADD, ifd, \u0026evt);\n\tif (check_events(epfd, 0) \u0026 POLLIN) {\n\t\tres \u003d epoll_wait(epfd, \u0026evt, 1, 0);\n\t\tif (res \u003d\u003d 0) {\n\t\t\tfprintf(stderr, \"Epoll fd (%d) is ready when it shouldn\u0027t!\\n\",\n\t\t\t\tepfd);\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\nstatic int epoll_wakeup_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write must come after the poll(2) call inside\n\t * check_events(). This tests the nested wakeup code in\n\t * fs/eventpoll.c:ep_poll_safewake()\n\t * By having the check_events() (hence poll(2)) happens first,\n\t * we have poll wait queue filled up, and the write(2) in the\n\t * child will trigger the wakeup chain.\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\tsleep(1);\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\n\tres \u003d check_events(epfd, 2000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nstatic int epoll_poll_chain(void *data) {\n\tstruct epoll_test_cfg *tcfg \u003d data;\n\tint i, res, epfd, bfd, nfd, pfds[2];\n\tpid_t pid;\n\tstruct epoll_event evt;\n\n\tmemset(\u0026evt, 0, sizeof(evt));\n\tevt.events \u003d EPOLLIN;\n\n\tepfd \u003d bfd \u003d xepoll_create(1);\n\n\tfor (i \u003d 0; i \u003c tcfg-\u003esize; i++) {\n\t\tnfd \u003d xepoll_create(1);\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, nfd, \u0026evt);\n\t\tbfd \u003d nfd;\n\t}\n\txpipe(pfds);\n\tif (tcfg-\u003eflags \u0026 EPOLL_TF_LOOP)\n\t{\n\t\txepoll_ctl(bfd, EPOLL_CTL_ADD, epfd, \u0026evt);\n\t\t/*\n\t\t * If we\u0027re testing for loop, we want that the wakeup\n\t\t * triggered by the write to the pipe done in the child\n\t\t * process, triggers a fake event. So we add the pipe\n\t\t * read size with EPOLLOUT events. This will trigger\n\t\t * an addition to the ready-list, but no real events\n\t\t * will be there. The the epoll kernel code will proceed\n\t\t * in calling f_op-\u003epoll() of the epfd, triggering the\n\t\t * loop we want to test.\n\t\t */\n\t\tevt.events \u003d EPOLLOUT;\n\t}\n\txepoll_ctl(bfd, EPOLL_CTL_ADD, pfds[0], \u0026evt);\n\n\t/*\n\t * The pipe write mush come before the poll(2) call inside\n\t * check_events(). This tests the nested f_op-\u003epoll calls code in\n\t * fs/eventpoll.c:ep_eventpoll_poll()\n\t * By having the pipe write(2) happen first, we make the kernel\n\t * epoll code to load the ready lists, and the following poll(2)\n\t * done inside check_events() will test nested poll code in\n\t * ep_eventpoll_poll().\n\t */\n\tif ((pid \u003d xfork()) \u003d\u003d 0) {\n\t\twrite(pfds[1], \"w\", 1);\n\t\texit(0);\n\t}\n\tsleep(1);\n\tres \u003d check_events(epfd, 1000) \u0026 POLLIN;\n\n\tif (waitpid(pid, NULL, 0) !\u003d pid) {\n\t\tperror(\"waitpid\");\n\t\treturn -1;\n\t}\n\n\treturn res;\n}\n\nint main(int ac, char **av) {\n\tint error;\n\tstruct epoll_test_cfg tcfg;\n\n\tfprintf(stdout, \"\\n********** Testing TTY events\\n\");\n\terror \u003d run_forked_proc(epoll_test_tty, NULL);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short wakeup chain\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing short poll chain\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d POLLIN ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d EPOLL_MAX_CHAIN;\n\ttcfg.flags \u003d 0;\n\tfprintf(stdout, \"\\n********** Testing long poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy wakeup chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_wakeup_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\ttcfg.size \u003d 3;\n\ttcfg.flags \u003d EPOLL_TF_LOOP;\n\tfprintf(stdout, \"\\n********** Testing loopy poll chain (HOLD ON)\\n\");\n\terror \u003d run_forked_proc(epoll_poll_chain, \u0026tcfg);\n\tfprintf(stdout, error \u003d\u003d 0 ?\n\t\t\"********** OK\\n\": \"********** FAIL (%d)\\n\", error);\n\n\treturn 0;\n}\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: Pavel Pisa \u003cpisa@cmp.felk.cvut.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "63cd885426872254e82dac2d9e13ea4f720c21dc",
      "tree": "addd6687abbbcd428c179260737fc97b25b7aa64",
      "parents": [
        "311d07611e8b354cc1ee6546e4c574c01111adc8"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue Mar 31 15:23:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:18 2009 -0700"
      },
      "message": "ntfs: remove private wrapper of endian helpers\n\nThe base versions handle constant folding now and are shorter than these\nprivate wrappers, use them directly.\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c2d7543851849a6923680cdd7e1047ed1a84a1c5",
      "tree": "bf3038819d4be83a1d1e64d7b95bbb3d9d908544",
      "parents": [
        "55a63998b8967615a15e2211ba0ff3a84a565824"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Tue Mar 31 15:23:46 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:17 2009 -0700"
      },
      "message": "filesystem freeze: allow SysRq emergency thaw to thaw frozen filesystems\n\nNow that the filesystem freeze operation has been elevated to the VFS, and\nis just an ioctl away, some sort of safety net for unintentionally frozen\nroot filesystems may be in order.\n\nThe timeout thaw originally proposed did not get merged, but perhaps\nsomething like this would be useful in emergencies.\n\nFor example, freeze /path/to/mountpoint may freeze your root filesystem if\nyou forgot that you had that unmounted.\n\nI chose \u0027j\u0027 as the last remaining character other than \u0027h\u0027 which is sort\nof reserved for help (because help is generated on any unknown character).\n\nI\u0027ve tested this on a non-root fs with multiple (nested) freezers, as well\nas on a system rendered unresponsive due to a frozen root fs.\n\n[randy.dunlap@oracle.com: emergency thaw only if CONFIG_BLOCK enabled]\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Takashi Sato \u003ct-sato@yk.jp.nec.com\u003e\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": "327c0e968645f2601a43f5ea7c19c7b3a5fa0a34",
      "tree": "acc6789c120a6d5000ceebf51e690d14c6cfcacb",
      "parents": [
        "2678958e1225f350806d90f211a3b475f64aee80"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Mar 31 15:23:31 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "vmscan: fix it to take care of nodemask\n\ntry_to_free_pages() is used for the direct reclaim of up to\nSWAP_CLUSTER_MAX pages when watermarks are low.  The caller to\nalloc_pages_nodemask() can specify a nodemask of nodes that are allowed to\nbe used but this is not passed to try_to_free_pages().  This can lead to\nunnecessary reclaim of pages that are unusable by the caller and int the\nworst case lead to allocation failure as progress was not been make where\nit is needed.\n\nThis patch passes the nodemask used for alloc_pages_nodemask() to\ntry_to_free_pages().\n\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@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": "2678958e1225f350806d90f211a3b475f64aee80",
      "tree": "d4aeb116c78f31f96ffb0760e36b95424e7f9494",
      "parents": [
        "88c3bd707c2552bcef93cc3724647903aece159d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Mar 31 15:23:29 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:15 2009 -0700"
      },
      "message": "ramfs-nommu: use generic lru cache\n\nInstead of open-coding the lru-list-add pagevec batching when expanding a\nfile mapping from zero, defer to the appropriate page cache function that\nalso takes care of adding the page to the lru list.\n\nThis is cleaner, saves code and reduces the stack footprint by 16 words\nworth of pagevec.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.com\u003e\nCc: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "851a039cc547b33b8139fe6d7c2bbfb158e2724e",
      "tree": "0deabfe04b648d7542de8dd36dcd384d03fe09f6",
      "parents": [
        "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 31 15:23:24 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault: fix sysfs\n\nFix warnings and return values in sysfs bin_page_mkwrite(), fixing\nfs/sysfs/bin.c: In function `bin_page_mkwrite\u0027:\nfs/sysfs/bin.c:250: warning: passing argument 2 of `bb-\u003evm_ops-\u003epage_mkwrite\u0027 from incompatible pointer type\nfs/sysfs/bin.c: At top level:\nfs/sysfs/bin.c:280: warning: initialization from incompatible pointer type\n\nExpects to have my [PATCH next] sysfs: fix some bin_vm_ops errors\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@aristanetworks.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56a76f8275c379ed73c8a43cfa1dfa2f5e9cfa19",
      "tree": "cbeaa82516c4818f72535b6ebe48a607cef88af4",
      "parents": [
        "c2ec175c39f62949438354f603f4aa170846aabb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:23 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "fs: fix page_mkwrite error cases in core code and btrfs\n\npage_mkwrite is called with neither the page lock nor the ptl held.  This\nmeans a page can be concurrently truncated or invalidated out from\nunderneath it.  Callers are supposed to prevent truncate races themselves,\nhowever previously the only thing they can do in case they hit one is to\nraise a SIGBUS.  A sigbus is wrong for the case that the page has been\ninvalidated or truncated within i_size (eg.  hole punched).  Callers may\nalso have to perform memory allocations in this path, where again, SIGBUS\nwould be wrong.\n\nThe previous patch (\"mm: page_mkwrite change prototype to match fault\")\nmade it possible to properly specify errors.  Convert the generic buffer.c\ncode and btrfs to return sane error values (in the case of page removed\nfrom pagecache, VM_FAULT_NOPAGE will cause the fault handler to exit\nwithout doing anything, and the fault will be retried properly).\n\nThis fixes core code, and converts btrfs as a template/example.  All other\nfilesystems defining their own page_mkwrite should be fixed in a similar\nmanner.\n\nAcked-by: Chris Mason \u003cchris.mason@oracle.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@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": "c2ec175c39f62949438354f603f4aa170846aabb",
      "tree": "f2c9bf1bec2deabe2d3a5092405b027637b6ead3",
      "parents": [
        "c2fdf3a9b2d52842808a8e551b53b55dd9b45030"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Mar 31 15:23:21 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:14 2009 -0700"
      },
      "message": "mm: page_mkwrite change prototype to match fault\n\nChange the page_mkwrite prototype to take a struct vm_fault, and return\nVM_FAULT_xxx flags.  There should be no functional change.\n\nThis makes it possible to return much more detailed error information to\nthe VM (and also can provide more information eg.  virtual_address to the\ndriver, which might be important in some special cases).\n\nThis is required for a subsequent fix.  And will also make it easier to\nmerge page_mkwrite() with fault() in future.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: Miklos Szeredi \u003cmiklos@szeredi.hu\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@oracle.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Felix Blyakher \u003cfelixb@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": "2584e517320bd48dc8d20e38a2621a2dbe58fade",
      "tree": "3b94b6c4cc10ab16ab106464e8d32e2e77ad8634",
      "parents": [
        "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:21:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: reintroduce and deprecate rlimit based access for SHM_HUGETLB\n\nAllow non root users with sufficient mlock rlimits to be able to allocate\nhugetlb backed shm for now.  Deprecate this though.  This is being\ndeprecated because the mlock based rlimit checks for SHM_HUGETLB is not\nconsistent with mmap based huge page allocations.\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@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": "8a0bdec194c21c8fdef840989d0d7b742bb5d4bc",
      "tree": "0185e4cfa29f18a2f7b9d297e049a1de5314d0ec",
      "parents": [
        "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5"
      ],
      "author": {
        "name": "Ravikiran G Thirumalai",
        "email": "kiran@scalex86.org",
        "time": "Tue Mar 31 15:19:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "mm: fix SHM_HUGETLB to work with users in hugetlb_shm_group\n\nFix hugetlb subsystem so that non root users belonging to\nhugetlb_shm_group can actually allocate hugetlb backed shm.\n\nCurrently non root users cannot even map one large page using SHM_HUGETLB\nwhen they belong to the gid in /proc/sys/vm/hugetlb_shm_group.  This is\nbecause allocation size is verified against RLIMIT_MEMLOCK resource limit\neven if the user belongs to hugetlb_shm_group.\n\nThis patch\n1. Fixes hugetlb subsystem so that users with CAP_IPC_LOCK and users\n   belonging to hugetlb_shm_group don\u0027t need to be restricted with\n   RLIMIT_MEMLOCK resource limits\n2. This patch also disables mlock based rlimit checking (which will\n   be reinstated and marked deprecated in a subsequent patch).\n\nSigned-off-by: Ravikiran Thirumalai \u003ckiran@scalex86.org\u003e\nReviewed-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nCc: Adam Litke \u003cagl@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": "e3a7cca1ef4c1af9b0acef9bd66eff6582a737b5",
      "tree": "717097ec82ce0de55e44b2fe3e35fa041e5169b2",
      "parents": [
        "bd2f6199cf9af472aeefa1b642c9f504f19e6008"
      ],
      "author": {
        "name": "Edward Shishkin",
        "email": "edward.shishkin@gmail.com",
        "time": "Tue Mar 31 15:19:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:12 2009 -0700"
      },
      "message": "vfs: add/use account_page_dirtied()\n\nAdd a helper function account_page_dirtied().  Use that from two\ncallsites.  reiser4 adds a function which adds a third callsite.\n\nSigned-off-by: Edward Shishkin\u003cedward.shishkin@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.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": "0f043a81ebe84be3576667f04fdda481609e3816",
      "tree": "c54a9ac4a1dc79bd5f2f7ec3ead5aa48802ff7a3",
      "parents": [
        "140716934f67a9b28c3f7032c07c20c746d97a31"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:25 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:10 2009 -0700"
      },
      "message": "proc tty: remove struct tty_operations::read_proc\n\nstruct tty_operations::proc_fops took it\u0027s place and there is one less\ncreate_proc_read_entry() user now!\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\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": "ae149b6bec64a09373ba20fce75f8aa6b14b78fd",
      "tree": "5e2f1fdfc223b76ab798c87fd25bcff8d5f92eeb",
      "parents": [
        "15f7176eb1cccec0a332541285ee752b935c1c85"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Mar 31 15:19:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 01 08:59:08 2009 -0700"
      },
      "message": "proc tty: add struct tty_operations::proc_fops\n\nUsed for gradual switch of TTY drivers from using -\u003eread_proc which helps\nwith gradual switch from -\u003eread_proc for the whole tree.\n\nAs side effect, fix possible race condition when -\u003edata initialized after\nPDE is hooked into proc tree.\n\n-\u003eproc_fops takes precedence over -\u003eread_proc.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\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": "ced117c73edc917e96dea7cca98c91383f0792f7",
      "tree": "d37babf1b56db8d6820e136c1daa8281553025a0",
      "parents": [
        "47e4491b40df73c3b117e3d80b31b5b512a4b19f"
      ],
      "author": {
        "name": "Dmitri Vorobiev",
        "email": "dmitri.vorobiev@movial.com",
        "time": "Tue Mar 31 00:41:20 2009 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 01 07:38:54 2009 -0400"
      },
      "message": "Remove two unneeded exports and make two symbols static in fs/mpage.c\n\nCommit 29a814d2ee0e43c2980f33f91c1311ec06c0aa35 (vfs: add hooks for\next4\u0027s delayed allocation support) exported the following functions\n\nmpage_bio_submit()\n__mpage_writepage()\n\nfor the benefit of ext4\u0027s delayed allocation support. Since commit\na1d6cc563bfdf1bf2829d3e6ce4d8b774251796b (ext4: Rework the\next4_da_writepages() function), these functions are not used by the\next4 driver anymore. However, the now unnecessary exports still\nremain, and this patch removes those. Moreover, these two functions\ncan become static again.\n\nThe issue was spotted by namespacecheck.\n\nSigned-off-by: Dmitri Vorobiev \u003cdmitri.vorobiev@movial.com\u003e\nReviewed-by: Aneesh Kumar K.V \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "47e4491b40df73c3b117e3d80b31b5b512a4b19f",
      "tree": "a751af5e30db8f935b97bd671d0055d670b75fe5",
      "parents": [
        "e5824c97a993ac5bd22cec34e6cb6f85d39b73ba"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 01 07:07:16 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Apr 01 07:07:16 2009 -0400"
      },
      "message": "Cleanup after commit 585d3bc06f4ca57f975a5a1f698f65a45ea66225\n\nfsync_bdev() export and a bunch of stubs for !CONFIG_BLOCK case had\nbeen left behind\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e5824c97a993ac5bd22cec34e6cb6f85d39b73ba",
      "tree": "91e9675c3ad752fabed0ada406288ea2d47bc424",
      "parents": [
        "d9e66c7296f3a39f6ac847f11ada8ddf10a4f8b1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 16:36:59 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:28 2009 -0400"
      },
      "message": "Trim includes of fdtable.h\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d9e66c7296f3a39f6ac847f11ada8ddf10a4f8b1",
      "tree": "99c4ff2a8a2ea9daaec22b37ad5deddf14a95c6a",
      "parents": [
        "d0f35dde6e748fa1a3f5d8e23a200ad1d5a4a749"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 16:34:56 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:28 2009 -0400"
      },
      "message": "Don\u0027t crap into descriptor table in binfmt_som\n\nSame story as in binfmt_elf, except that in binfmt_som we\nactually forget to close the sucker.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d0f35dde6e748fa1a3f5d8e23a200ad1d5a4a749",
      "tree": "3357c777b6a0afe68e73fc5014bcba243e7e629e",
      "parents": [
        "e7b9b550f53e81ea38e71d322d6f95730df058a2"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 16:34:09 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Trim includes in binfmt_elf\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "e7b9b550f53e81ea38e71d322d6f95730df058a2",
      "tree": "2df697e6757a4af427c1aeb05ba0af5cd8f738ca",
      "parents": [
        "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 16:31:16 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Don\u0027t mess with descriptor table in load_elf_binary()\n\n... since we don\u0027t tell anyone which descriptor does the file get.\nWe used to, but only in case of ELF binary with a.out loader and\nthat stuff has been gone for a while.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5ad4e53bd5406ee214ddc5a41f03f779b8b2d526",
      "tree": "b3dab5140284b3edf02bf2b13f74bfddb25aa62a",
      "parents": [
        "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:50:06 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:27 2009 -0400"
      },
      "message": "Get rid of indirect include of fs_struct.h\n\nDon\u0027t pull it in sched.h; very few files actually need it and those\ncan include directly.  sched.h itself only needs forward declaration\nof struct fs_struct;\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "ce3b0f8d5c2203301fc87f3aaaed73e5819e2a48",
      "tree": "ab952affafe18e604f6aaf6b13315b9435588e60",
      "parents": [
        "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:08:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New helper - current_umask()\n\ncurrent-\u003efs-\u003eumask is what most of fs_struct users are doing.\nPut that into a helper function.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f1191b50ec11c8e2ca766d6d99eb5bb9d2c084a3",
      "tree": "7eae2387269bd3d2d4c6f334568f9fea6518c787",
      "parents": [
        "498052bba55ecaff58db6a1436b0e25bfd75a7ff"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 30 07:35:18 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "check_unsafe_exec() doesn\u0027t care about signal handlers sharing\n\n... since we\u0027ll unshare sighand anyway\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "498052bba55ecaff58db6a1436b0e25bfd75a7ff",
      "tree": "bd3644ac60737e3733995a203acebd70cfd1b21b",
      "parents": [
        "3e93cd671813e204c258f1e6c797959920cf7772"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 30 07:20:30 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "New locking/refcounting for fs_struct\n\n* all changes of current-\u003efs are done under task_lock and write_lock of\n  old fs-\u003elock\n* refcount is not atomic anymore (same protection)\n* its decrements are done when removing reference from current; at the\n  same time we decide whether to free it.\n* put_fs_struct() is gone\n* new field - -\u003ein_exec.  Set by check_unsafe_exec() if we are trying to do\n  execve() and only subthreads share fs_struct.  Cleared when finishing exec\n  (success and failure alike).  Makes CLONE_FS fail with -EAGAIN if set.\n* check_unsafe_exec() may fail with -EAGAIN if another execve() from subthread\n  is in progress.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "3e93cd671813e204c258f1e6c797959920cf7772",
      "tree": "a1e0b2d2da7d296cc1c53be9cd6efa5b94b01b5c",
      "parents": [
        "f8ef3ed2bebd2c4cb9ece92efa185d7aead8831a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Mar 29 19:00:13 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:26 2009 -0400"
      },
      "message": "Take fs_struct handling to new file (fs/fs_struct.c)\n\nPure code move; two new helper functions for nfsd and daemonize\n(unshare_fs_struct() and daemonize_fs_struct() resp.; for now -\nthe same code as used to be in callers).  unshare_fs_struct()\nexported (for nfsd, as copy_fs_struct()/exit_fs() used to be),\ncopy_fs_struct() and exit_fs() don\u0027t need exports anymore.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f8ef3ed2bebd2c4cb9ece92efa185d7aead8831a",
      "tree": "f6208725f0b2ecd43e393435fa7fb8ad1be1b14b",
      "parents": [
        "11d06b2a1e5658f448a308aa3beb97bacd64a940"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Mar 30 20:36:33 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 31 23:00:25 2009 -0400"
      },
      "message": "Get rid of bumping fs_struct refcount in pivot_root(2)\n\nNot because execve races with _that_ are serious - we really\nneed a situation when final drop of fs_struct refcount is\ndone by something that used to have it as current-\u003efs.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d57e62b89796f751c9422801cbcd407a9f8dcdc4",
      "tree": "353960256ddf5f92aa391a2ea570bea1d2d11fa8",
      "parents": [
        "5a3f23d515a2ebf0c750db80579ca57b28cbce6d"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 13:47:50 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 14:27:58 2009 -0400"
      },
      "message": "Btrfs: try to free metadata pages when we free btree blocks\n\nCOW means we cycle though blocks fairly quickly, and once we\nfree an extent on disk, it doesn\u0027t make much sense to keep the pages around.\n\nThis commit tries to immediately free the page when we free the extent,\nwhich lowers our memory footprint significantly.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "5a3f23d515a2ebf0c750db80579ca57b28cbce6d",
      "tree": "e0ffb43dd35f1c3def9a74ec7a6f4470902c9761",
      "parents": [
        "1a81af4d1d9c60d4313309f937a1fc5567205a87"
      ],
      "author": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 13:27:11 2009 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue Mar 31 14:27:58 2009 -0400"
      },
      "message": "Btrfs: add extra flushing for renames and truncates\n\nRenames and truncates are both common ways to replace old data with new\ndata.  The filesystem can make an effort to make sure the new data is\non disk before actually replacing the old data.\n\nThis is especially important for rename, which many application use as\nthough it were atomic for both the data and the metadata involved.  The\ncurrent btrfs code will happily replace a file that is fully on disk\nwith one that was just created and still has pending IO.\n\nIf we crash after transaction commit but before the IO is done, we\u0027ll end\nup replacing a good file with a zero length file.  The solution used\nhere is to create a list of inodes that need special ordering and force\nthem to disk before the commit is done.  This is similar to the\next3 style data\u003dordering, except it is only done on selected files.\n\nBtrfs is able to get away with this because it does not wait on commits\nvery often, even for fsync (which use a sub-commit).\n\nFor renames, we order the file when it wasn\u0027t already\non disk and when it is replacing an existing file.  Larger files\nare sent to filemap_flush right away (before the transaction handle is\nopened).\n\nFor truncates, we order if the file goes from non-zero size down to\nzero size.  This is a little different, because at the time of the\ntruncate the file has no dirty bytes to order.  But, we flag the inode\nso that it is added to the ordered list on close (via release method).  We\nalso immediately add it to the ordered list of the current transaction\nso that we can try to flush down any writes the application sneaks in\nbefore commit.\n\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d17abcd5417d84cfa8a225160481203a37dc81d4",
      "tree": "74ce2c425c5c6550acec90bc92c8a3f735f0d257",
      "parents": [
        "db6f204019380c788f1de06ee937bdbccd60e5c0",
        "bb75efddeaca89f8a67fd82cdcbaaf436cf17ca9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 30 18:00:26 2009 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask:\n  oprofile: Thou shalt not call __exit functions from __init functions\n  cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic\n  cpumask: remove cpumask_t from core\n  cpumask: convert rcutorture.c\n  cpumask: use new cpumask_ functions in core code.\n  cpumask: remove references to struct irqaction\u0027s mask field.\n  cpumask: use mm_cpumask() wrapper: kernel/fork.c\n  cpumask: use set_cpu_active in init/main.c\n  cpumask: remove node_to_first_cpu\n  cpumask: fix seq_bitmap_*() functions.\n  cpumask: remove dangerous CPU_MASK_ALL_PTR, \u0026CPU_MASK_ALL\n"
    }
  ],
  "next": "cf2f7d7c90279cdbc12429de278f3d27ac2050ae"
}
