)]}'
{
  "log": [
    {
      "commit": "fa0d7e3de6d6fc5004ad9dea0dd6b286af8f03e9",
      "tree": "203e0f73883e4c26b5597e36042386a1237dab35",
      "parents": [
        "77812a1ef139d84270d27faacc0630c887411013"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:49:49 2011 +1100"
      },
      "committer": {
        "name": "Nick Piggin",
        "email": "npiggin@kernel.dk",
        "time": "Fri Jan 07 17:50:26 2011 +1100"
      },
      "message": "fs: icache RCU free inodes\n\nRCU free the struct inode. This will allow:\n\n- Subsequent store-free path walking patch. The inode must be consulted for\n  permissions when walking, so an RCU inode reference is a must.\n- sb_inode_list_lock to be moved inside i_lock because sb list walkers who want\n  to take i_lock no longer need to take sb_inode_list_lock to walk the list in\n  the first place. This will simplify and optimize locking.\n- Could remove some nested trylock loops in dcache code\n- Could potentially simplify things a bit in VM land. Do not need to take the\n  page lock to follow page-\u003emapping.\n\nThe downsides of this is the performance cost of using RCU. In a simple\ncreat/unlink microbenchmark, performance drops by about 10% due to inability to\nreuse cache-hot slab objects. As iterations increase and RCU freeing starts\nkicking over, this increases to about 20%.\n\nIn cases where inode lifetimes are longer (ie. many inodes may be allocated\nduring the average life span of a single inode), a lot of this cache reuse is\nnot applicable, so the regression caused by this patch is smaller.\n\nThe cache-hot regression could largely be avoided by using SLAB_DESTROY_BY_RCU,\nhowever this adds some complexity to list walking and store-free path walking,\nso I prefer to implement this at a later date, if it is shown to be a win in\nreal situations. I haven\u0027t found a regression in any non-micro benchmark so I\ndoubt it will be a problem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@kernel.dk\u003e\n"
    },
    {
      "commit": "157d81e7ffe04f2c97c3580e185787c2d29463bb",
      "tree": "a6e5bb27ddc0cd3d4692d6e325b62894f240a45a",
      "parents": [
        "51139adac92f7160ad3ca1cab2de1b4b8d19dc96"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 23:52:42 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:36 2010 -0400"
      },
      "message": "convert ubifs\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7de9c6ee3ecffd99e1628e81a5ea5468f7581a1f",
      "tree": "88787e77ba8a253d0a26aeda4bd5e58532d592e0",
      "parents": [
        "646ec4615cd05972581c9c5342ed7a1e77df17bb"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Oct 23 11:11:40 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "new helper: ihold()\n\nClones an existing reference to inode; caller must already hold one.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "06d362931a530e0d48c1a9554a752da4ed240f0b",
      "tree": "283304f08f3c01cec6922e6bb76291a9588352db",
      "parents": [
        "f5d9d249b9a6884daff513ef08afa43d3f7e085f",
        "6599fcbd01baf9d57e847db103d215ea4ec088f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 16:34:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 16:34:03 2010 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: do not allocate unneeded scan buffer\n  UBIFS: do not forget to cancel timers\n  UBIFS: remove a bit of unneeded code\n  UBIFS: add a commentary about log recovery\n  UBIFS: avoid kernel error if ubifs superblock read fails\n  UBIFS: introduce new flags for RO mounts\n  UBIFS: introduce new flag for RO due to errors\n  UBIFS: check return code of pnode_lookup\n  UBIFS: check return code of ubifs_lpt_lookup\n  UBIFS: improve error reporting when reading bad node\n  UBIFS: introduce list sorting debugging checks\n  UBIFS: fix assertion warnings in comparison function\n  UBIFS: mark unused key objects as invalid\n  UBIFS: do not write rubbish into truncation scanning node\n  UBIFS: improve assertion in node comparison functions\n  UBIFS: do not use key type in list_sort\n  UBIFS: do not look up truncation nodes\n  UBIFS: fix assertion warning\n  UBIFS: do not treat ENOSPC specially\n  UBIFS: switch to RO mode after synchronizing\n"
    },
    {
      "commit": "6599fcbd01baf9d57e847db103d215ea4ec088f9",
      "tree": "d2b8a8805f5c9ce39609c3cbc348585f48238918",
      "parents": [
        "3601ba27353a968df843454e4b81155376682505"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Oct 18 10:00:40 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Oct 21 11:15:19 2010 +0300"
      },
      "message": "UBIFS: do not allocate unneeded scan buffer\n\nIn \u0027ubifs_replay_journal()\u0027 we allocate \u0027sbuf\u0027 for scanning the log.\nHowever, we already have \u0027c-\u003esbuf\u0027 for these purposes, so do not\nallocate yet another one. This reduces UBIFS memory consumption while\nrecovering.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "3601ba27353a968df843454e4b81155376682505",
      "tree": "144263a6c1d1255f260788da3d8f5593e2ad6bb4",
      "parents": [
        "39037559e651c417fb68b828926dc61cd5d6e5e2"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Oct 18 08:32:35 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Oct 21 11:15:18 2010 +0300"
      },
      "message": "UBIFS: do not forget to cancel timers\n\nThis is a bug-fix: when we unmount, and we are currently in R/O\nmode because of an error - we do not sync write-buffers, which\nmeans we also do not cancel write-buffer timers we may possibly\nhave armed. This patch fixes the issue.\n\nThe issue can easily be reproduced by enabling UBIFS failure debug\nmode (echo 4 \u003e /sys/module/ubifs/parameters/debug_tsts) and\nunmounting as soon as a failure happen. At some point the system\noopses because we have an armed hrtimer but UBIFS is unmounted\nalready.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "39037559e651c417fb68b828926dc61cd5d6e5e2",
      "tree": "4b014d5e625c42cda030b4711186ee3ba381396b",
      "parents": [
        "7d08ae3c9205b559f90c3d7a3abba3c6479673c7"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Oct 18 08:28:50 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Oct 21 11:15:18 2010 +0300"
      },
      "message": "UBIFS: remove a bit of unneeded code\n\nThis is a clean-up patch which:\n\n1. Removes explicite \u0027hrtimer_cancel()\u0027 after \u0027ubifs_wbuf_sync()\u0027 in\n   \u0027ubifs_remount_ro()\u0027, because the timers will be canceled by\n   \u0027ubifs_wbuf_sync()\u0027, no need to cancel them for the second time.\n2. Remove \"if (c-\u003ejheads)\" check from \u0027ubifs_put_super()\u0027, because\n   at journal heads must always be allocated there, since we checked\n   earlier that we were mounted R/W, and the olny situation when\n   journal heads are not allocated is when mounter or re-mounted R/O.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7d08ae3c9205b559f90c3d7a3abba3c6479673c7",
      "tree": "6221ae1b3566569b323fc379fd64e3f00229acad",
      "parents": [
        "54dd55a406f6e9cb5ae208f258b907455162e045"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Oct 17 15:50:19 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Oct 17 15:57:40 2010 +0300"
      },
      "message": "UBIFS: add a commentary about log recovery\n\nAdd a commentary which elaborates that \u0027ubifs_recover_log_leb()\u0027 recovers only\nthe last log LEB, not any. Also remove some unneeded newlines.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "54dd55a406f6e9cb5ae208f258b907455162e045",
      "tree": "a12d91f6ec8fd878e736ba1ad7e01d6558501581",
      "parents": [
        "2ef13294d29bcfb306e0d360f1b97f37b647b0c0"
      ],
      "author": {
        "name": "Steffen Sledz",
        "email": "sledz@dresearch.de",
        "time": "Mon Sep 27 14:20:26 2010 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 28 09:46:30 2010 +0300"
      },
      "message": "UBIFS: avoid kernel error if ubifs superblock read fails\n\n.get_sb is called on mounts with automatic fs detection too, so this\nfunction should print an error if it cannot read the superblock in\ndebug mode only (new behaviour conforms the other fs types)\n\nSigned-off-by: Steffen Sledz \u003csledz@dresearch.de\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2ef13294d29bcfb306e0d360f1b97f37b647b0c0",
      "tree": "877e1ece00c14de0f0d79e86b6480d284d309216",
      "parents": [
        "2680d722bf2c5f75225dd9acb3ec9e5a9e2652f4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Sep 19 18:34:26 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Sep 19 21:07:58 2010 +0300"
      },
      "message": "UBIFS: introduce new flags for RO mounts\n\nCommit 2fde99cb55fb9d9b88180512a5e8a5d939d27fec \"UBIFS: mark VFS SB RO too\"\nintroduced regression. This commit made UBIFS set the \u0027MS_RDONLY\u0027 flag in the\nVFS superblock when it switches to R/O mode due to an error. This was done\nto make VFS show the R/O UBIFS flag in /proc/mounts.\n\nHowever, several places in UBIFS relied on the \u0027MS_RDONLY\u0027 flag and assume this\nflag can only change when we re-mount. For example, \u0027ubifs_put_super()\u0027.\n\nThis patch introduces new UBIFS flag - \u0027c-\u003ero_mount\u0027 which changes only when\nwe re-mount, and preserves the way UBIFS was originally mounted (R/W or R/O).\nThis allows us to de-initialize UBIFS cleanly in \u0027ubifs_put_super()\u0027.\n\nThis patch also changes all \u0027ubifs_assert(!c-\u003ero_media)\u0027 assertions to\n\u0027ubifs_assert(!c-\u003ero_media \u0026\u0026 !c-\u003ero_mount)\u0027, because we never should write\nanything if the FS was mounter R/O.\n\nAll the places where we test for \u0027MS_RDONLY\u0027 flag in the VFS SB were changed\nand now we test the \u0027c-\u003ero_mount\u0027 flag instead, because it preserves the\noriginal UBIFS mount type, unlike the \u0027MS_RDONLY\u0027 flag.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2680d722bf2c5f75225dd9acb3ec9e5a9e2652f4",
      "tree": "af016ede5f300a33ddd3ad66a8c3c0e6bf05774e",
      "parents": [
        "8c893a5545ca772744376295690723dcb0b47d96"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Sep 17 16:44:28 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Sep 17 17:08:09 2010 +0300"
      },
      "message": "UBIFS: introduce new flag for RO due to errors\n\nThe R/O state may have various reasons:\n\n1. The UBI volume is R/O\n2. The FS is mounted R/O\n3. The FS switched to R/O mode because of an error\n\nHowever, in UBIFS we have only one variable which represents cases\n1 and 3 - \u0027c-\u003ero_media\u0027. Indeed, we set this to 1 if we switch to\nR/O mode due to an error, and then we test it in many places to\nmake sure that we stop writing as soon as the error happens.\n\nBut this is very unclean. One consequence of this, for example, is\nthat in \u0027ubifs_remount_fs()\u0027 we use \u0027c-\u003ero_media\u0027 to check whether\nwe are in R/O mode because on an error, and we print a message\nin this case. However, if we are in R/O mode because the media\nis R/O, our message is bogus.\n\nThis patch introduces new flag - \u0027c-\u003ero_error\u0027 which is set when\nwe switch to R/O mode because of an error. It also changes all\n\"if (c-\u003ero_media)\" checks to \"if (c-\u003ero_error)\" checks, because\nthis is what the checks actually mean. We do not need to check\nfor \u0027c-\u003ero_media\u0027 because if the UBI volume is in R/O mode, we\ndo not allow R/W mounting, and now writes can happen. This is\nguaranteed by VFS. But it is good to double-check this, so this\npatch also adds many \"ubifs_assert(!c-\u003ero_media)\" checks.\n\nIn the \u0027ubifs_remount_fs()\u0027 function this patch makes a bit more\nchanges - it fixes the error messages as well.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8c893a5545ca772744376295690723dcb0b47d96",
      "tree": "5e7f31c2b92e335bb6a7856d2229b3abd095d5cb",
      "parents": [
        "0e54c8992a35ab8126e8a7661007ddc1745a2597"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Sun Sep 05 22:33:04 2010 +0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 07 12:10:43 2010 +0300"
      },
      "message": "UBIFS: check return code of pnode_lookup\n\nFunction pnode_lookup may return ERR_PTR(...). Check for it.\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "0e54c8992a35ab8126e8a7661007ddc1745a2597",
      "tree": "da9652f72841fefb23f261fc824af0c36e089061",
      "parents": [
        "3a8fa0ed3e1a8dc54f9297d2a2292b87e03e21b5"
      ],
      "author": {
        "name": "Vasiliy Kulikov",
        "email": "segooon@gmail.com",
        "time": "Sun Sep 05 22:33:00 2010 +0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 07 12:09:41 2010 +0300"
      },
      "message": "UBIFS: check return code of ubifs_lpt_lookup\n\nFunction ubifs_lpt_lookup may return ERR_PTR(...). Check for it.\n\n[Tweaked by Artem Bityutskiy]\n\nSigned-off-by: Vasiliy Kulikov \u003csegooon@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "3a8fa0ed3e1a8dc54f9297d2a2292b87e03e21b5",
      "tree": "395e9ea22dda9361867afdfc5588a932530b1c10",
      "parents": [
        "3bb66b47a4268a4419594b4c4aec58dbeb6b58d2"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 22 21:27:30 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:09 2010 +0300"
      },
      "message": "UBIFS: improve error reporting when reading bad node\n\nWhen an error happens during validation of read node, the typical situation is that\nthe LEB we read is unmapped (due to some bug). It is handy to include the mapping\nstatus into the error message.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "3bb66b47a4268a4419594b4c4aec58dbeb6b58d2",
      "tree": "42e4e7b28adc166573ffef4c23dc03492fd981b4",
      "parents": [
        "1a9476a77083354005750c9df45ba9d71ad12c8c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Aug 07 10:06:11 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:09 2010 +0300"
      },
      "message": "UBIFS: introduce list sorting debugging checks\n\nThe UBIFS bug in the GC list sorting comparison functions inspired\nme to write internal debugging check functions which verify that\nthe list of nodes is sorted properly.\n\nSo, this patch implements 2 new debugging functions:\n o \u0027dbg_check_data_nodes_order()\u0027 - check order of data nodes list\n o \u0027dbg_check_nondata_nodes_order()\u0027 - check order of non-data nodes list\n\nThe debugging functions are executed only if general UBIFS debugging checks are\nenabled. And they are compiled out if UBIFS debugging is disabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1a9476a77083354005750c9df45ba9d71ad12c8c",
      "tree": "2e032a6f9071620ece14b69d4fedd35a1ba0d2d1",
      "parents": [
        "ba2f48f70efcf4d82deafb2be327ed64b1f043a5"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 08 12:45:23 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:08 2010 +0300"
      },
      "message": "UBIFS: fix assertion warnings in comparison function\n\nWhen running the integrity test (\u0027integck\u0027 from mtd-utils) on current\nUBIFS on 2.6.35, I see that assertions in UBIFS \u0027list_sort()\u0027 comparison\nfunctions trigger sometimes, e.g.:\n\nUBIFS assert failed in data_nodes_cmp at 132 (pid 28311)\n\nMy investigation showed that this happens when \u0027list_sort()\u0027 calls the \u0027cmp()\u0027\nfunction with equivalent arguments. In this case, the \u0027struct list_head\u0027\nparameter, passed to \u0027cmp()\u0027 is bogus, and it does not belong to any element in\nthe original list.\n\nAnd this issue seems to be introduced by commit:\n\ncommit 835cc0c8477fdbc59e0217891d6f11061b1ac4e2\nAuthor: Don Mullis \u003cdon.mullis@gmail.com\u003e\nDate:   Fri Mar 5 13:43:15 2010 -0800\n\nIt is easy to work around the issue by doing:\n\nif (a \u003d\u003d b)\n\treturn 0;\n\nin UBIFS. It works, but \u0027lib_sort()\u0027 should nevertheless be fixed. Although it\nis harmless to have this piece of code in UBIFS.\n\nThis patch adds that code to both UBIFS \u0027cmp()\u0027 functions:\n\u0027data_nodes_cmp()\u0027 and \u0027nondata_nodes_cmp()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ba2f48f70efcf4d82deafb2be327ed64b1f043a5",
      "tree": "a05dd8287bb6588117f2a2a921b54f8ebf3425f4",
      "parents": [
        "5b7a3a2e1b0cbc7d5410a8da60dac266a3e19268"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 22 07:10:12 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:08 2010 +0300"
      },
      "message": "UBIFS: mark unused key objects as invalid\n\nWhen scanning the flash, UBIFS builds a list of flash nodes of type\n\u0027struct ubifs_scan_node\u0027. Each scanned node has a \u0027snod-\u003ekey\u0027 field. This field\nis valid for most of the nodes, but invalid for some node type, e.g., truncation\nnodes. It is safer to explicitly initialize such keys to something invalid,\nrather than leaving them initialized to all zeros, which has key type of\nUBIFS_INO_KEY.\n\nThis patch introduces new \"fake\" key type UBIFS_INVALID_KEY and initializes\nunused \u0027snod-\u003ekey\u0027 objects to this type. It also adds debugging assertions in\nthe TNC code to make sure no one ever tries to look these nodes up in the TNC.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "5b7a3a2e1b0cbc7d5410a8da60dac266a3e19268",
      "tree": "b663b20a46271d64ba5a94d458d5d87f4c9b24bf",
      "parents": [
        "66576833f5396af34c52160b16d7b8573199282a"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 08 12:32:00 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:08 2010 +0300"
      },
      "message": "UBIFS: do not write rubbish into truncation scanning node\n\nIn the scanning code, in \u0027ubifs_add_snod()\u0027, we write rubbish into\n\u0027snod-\u003ekey\u0027, because we assume that on-flash truncation nodes have a key, but\nthey do not. If the other parts of UBIFS then mistakenly try to look-up\nthe truncation node key (they should not do this, but may do because of a bug),\nwe can succeed and corrupt TNC. It looks like we did have such a situation in\n\u0027sort_nodes()\u0027 in gc.c.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "66576833f5396af34c52160b16d7b8573199282a",
      "tree": "557944b9b8088fab39cdf426be299300530ec79f",
      "parents": [
        "ab87118d717467cbcd9648692c2a9708d55193bc"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 08 12:29:58 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:07 2010 +0300"
      },
      "message": "UBIFS: improve assertion in node comparison functions\n\nImprove assertions in gc.c in the comparison functions for \u0027list_sort()\u0027: check\nkey types _and_ node types.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ab87118d717467cbcd9648692c2a9708d55193bc",
      "tree": "d4e28ead7b0192942bd9f5665ff31fc57a572e1e",
      "parents": [
        "44ec83b8bd05d323998031f141c310127721acae"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Aug 08 12:25:33 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:07 2010 +0300"
      },
      "message": "UBIFS: do not use key type in list_sort\n\nIn comparison function for \u0027list_sort()\u0027 we use key type to distinguish between\nnode types. However, we have a bit simper way to detect node type -\n\u0027snod-\u003etype\u0027. This more logical to use, comparing to decoding key types. Also\nallows to get rid of 2 local variables.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "44ec83b8bd05d323998031f141c310127721acae",
      "tree": "52b336c14de78845189d39c952447c1c208b6fd6",
      "parents": [
        "e3408ad4cbed6ec6990efad4c2ef0856bcd3c712"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Aug 07 08:44:13 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:07 2010 +0300"
      },
      "message": "UBIFS: do not look up truncation nodes\n\nWhen moving nodes in GC, do not try to look up truncation nodes in TNC,\nbecause they do not exist there. This would be harmless, because the TNC\nlook-up would fail, if we did not have bug \u0027ubifs_add_snod()\u0027 which reads\ngarbage into \u0027snod-\u003ekey\u0027. But in any case, it is less error prone to\nexplicitly ignore everything but inode, data, dentry and xentry nodes.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e3408ad4cbed6ec6990efad4c2ef0856bcd3c712",
      "tree": "fb36a77d65fc077337968f53539d26544910792e",
      "parents": [
        "efe1881f5482f94f5e5e6cb74bf3ea72f2b5b9ce"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Aug 04 13:50:51 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:06 2010 +0300"
      },
      "message": "UBIFS: fix assertion warning\n\nThis patch fixes the following false assertion warning:\n\nUBIFS assert failed in data_nodes_cmp at 130 (pid 15107)\n\nThe assertion was wrong because it did not take into account that the\nnode can be an xentry.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "efe1881f5482f94f5e5e6cb74bf3ea72f2b5b9ce",
      "tree": "3009b20fd4e0530e75cd9d5c4a3933133ec0cfce",
      "parents": [
        "5ffef88ffeb730e1bf2da56a39a55e03d57a66c9"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Aug 04 14:06:06 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:06 2010 +0300"
      },
      "message": "UBIFS: do not treat ENOSPC specially\n\n\u0027ubifs_garbage_collect_leb()\u0027 should never return \u0027-ENOSPC\u0027, and if it\ndoes, this is an error. Thus, do not treat this error code specially.\n\u0027-EAGAIN\u0027 is a special error code, but not \u0027-ENOSPC\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "5ffef88ffeb730e1bf2da56a39a55e03d57a66c9",
      "tree": "a524f5806930d593d1f38f29f6a3e28948f8e851",
      "parents": [
        "2bfc96a127bc1cc94d26bfaa40159966064f9c8c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Aug 04 10:14:47 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Aug 30 10:19:06 2010 +0300"
      },
      "message": "UBIFS: switch to RO mode after synchronizing\n\nIn \u0027ubifs_garbage_collect()\u0027 on error path, we first switch to R/O mode, and\nthen synchronize write-buffers (to make sure no data are lost). But the GC\nwrite-buffer synchronization will fail, because we are already in R/O mode.\nThis patch re-orders this and makes sure we first synchronize the write-buffer,\nand then switch to R/O mode.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "d640e1b50885b5beb61ccacdebf9f3f05ee2119c",
      "tree": "73e9aeaaffbc78a66053d1cea898516503142af5",
      "parents": [
        "62aff86fdf18657d9eca7878654415f94f16d027"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 07 00:34:05 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:48:18 2010 -0400"
      },
      "message": "switch ubifs to -\u003eevict_inode()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c27c65ed0696f0b5df2dad2cf6462d72164d547",
      "tree": "7d9036e3dea98938f7fd7074366ee73929e9b2e5",
      "parents": [
        "db78b877f7744bec4a9d9f9e7d10da3931d7cd39"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Jun 04 11:30:04 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Aug 09 16:47:39 2010 -0400"
      },
      "message": "check ATTR_SIZE contraints in inode_change_ok\n\nMake sure we check the truncate constraints early on in -\u003esetattr by adding\nthose checks to inode_change_ok.  Also clean up and document inode_change_ok\nto make this obvious.\n\nAs a fallout we don\u0027t have to call inode_newsize_ok from simple_setsize and\nsimplify it down to a truncate_setsize which doesn\u0027t return an error.  This\nsimplifies a lot of setattr implementations and means we use truncate_setsize\nalmost everywhere.  Get rid of fat_setsize now that it\u0027s trivial and mark\next2_setsize static to make the calling convention obvious.\n\nKeep the inode_newsize_ok in vmtruncate for now as all callers need an\naudit for its removal anyway.\n\nNote: setattr code in ecryptfs doesn\u0027t call inode_change_ok at all and\nneeds a deeper audit, but that is left for later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "c939f9f9d225972a60181c95df8a9aa50f8b1701",
      "tree": "06f7621294bab5862ca15fa8c3749edcfc1ead3c",
      "parents": [
        "b8b3e9058f0f1d5c5a81c7d3d46f373d5f59a82c",
        "c18de72fb3c72fdc5ca883910761af3f14d90d76"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 03 14:37:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 03 14:37:02 2010 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: fix a memory leak on error path.\n  UBIFS: fix GC LEB recovery\n  UBIFS: use ERR_CAST\n  UBIFS: check return code\n"
    },
    {
      "commit": "c18de72fb3c72fdc5ca883910761af3f14d90d76",
      "tree": "52a5a452b4c5ccafec443013dda03da8343eab0d",
      "parents": [
        "6fb4374f6b1b3932f3acfe9d353568d3d8599cad"
      ],
      "author": {
        "name": "Matthieu CASTET",
        "email": "matthieu.castet@parrot.com",
        "time": "Mon Aug 02 11:36:06 2010 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Aug 03 08:58:09 2010 +0300"
      },
      "message": "UBIFS: fix a memory leak on error path.\n\nIn \u0027mount_ubifs()\u0027, in case of \u0027ubifs_leb_unmap()\u0027 falure,\nfree allocated resources.\n\nSigned-off-by: Matthieu CASTET \u003cmatthieu.castet@parrot.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7f8275d0d660c146de6ee3017e1e2e594c49e820",
      "tree": "884db927118b44102750b5168ee36ef4b8b5cb4e",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "committer": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Mon Jul 19 14:56:17 2010 +1000"
      },
      "message": "mm: add context argument to shrinker callback\n\nThe current shrinker implementation requires the registered callback\nto have global state to work from. This makes it difficult to shrink\ncaches that are not global (e.g. per-filesystem caches). Pass the shrinker\nstructure to the callback so that users can embed the shrinker structure\nin the context the shrinker needs to operate on and get back to it in the\ncallback via container_of().\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "6fb4374f6b1b3932f3acfe9d353568d3d8599cad",
      "tree": "839a78b9ee35727cceb8a8ed325dba4475b9d531",
      "parents": [
        "6da5156fad495730cca9238ead566222175b30b9"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 23 15:20:21 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jul 13 06:51:57 2010 +0300"
      },
      "message": "UBIFS: fix GC LEB recovery\n\nUBIFS tries to alway have an LEB reserved for GC, and stores it\nin c-\u003egc_lnum. Besides, there is GC head which points to the current\nGC head LEB.\n\nIn case of an unclean power cut, what may happen is that the GC head\nwas switched to the reserved GC LEB (c-\u003egc_lnum), but a new reserved\nGC LEB was not created yet. So, after an unclean reboot we may have\nno reserved GC LEB, and we need to find a new LEB for this.\n\nTo do this, we find a dirty LEB which can fit the current GC head,\nmove the data, unmap this dirty LEB, and it becomes our reserved GC\nLEB.\n\nHowever, if we cannot find a dirty enough LEB, we return failure,\nwhich is wrong, because we still can have free LEBs to use for\nthe reserved GC LEB. This patch fixes the issue.\n\nThis patch also fixes few typos in comments, which were spotted by\naspell.\n\nNote, this patch fixes a real issue\n\n[   14.328117] UBIFS: recovery needed\n[   53.941378] UBIFS error (pid 462): ubifs_rcvry_gc_commit: could not find a dirty LEB\n[   89.606399] UBIFS: recovery completed\n[   89.609329] UBIFS assert failed in mount_ubifs at 1358 (pid 462)\n[   89.616165] [\u003cc0026144\u003e] (unwind_backtrace+0x0/0xe4) from [\u003cc0125ce4\u003e] (ubifs_fill_super+0x11d0/0x1c4c)\n[   89.625930] [\u003cc0125ce4\u003e] (ubifs_fill_super+0x11d0/0x1c4c) from [\u003cc0126910\u003e] (ubifs_get_sb+0x1b0/0x354)\n[   89.635696] [\u003cc0126910\u003e] (ubifs_get_sb+0x1b0/0x354) from [\u003cc008a50c\u003e] (vfs_kern_mount+0x50/0xe0)\n[   89.644485] [\u003cc008a50c\u003e] (vfs_kern_mount+0x50/0xe0) from [\u003cc008a5e0\u003e] (do_kern_mount+0x34/0xdc)\n[   89.653274] [\u003cc008a5e0\u003e] (do_kern_mount+0x34/0xdc) from [\u003cc00a29d8\u003e] (do_mount+0x148/0x7cc)\n[   89.662063] [\u003cc00a29d8\u003e] (do_mount+0x148/0x7cc) from [\u003cc00a30f4\u003e] (sys_mount+0x98/0xc8)\n[   89.670852] [\u003cc00a30f4\u003e] (sys_mount+0x98/0xc8) from [\u003cc0021f40\u003e] (ret_fast_syscall+0x0/0x28)\n\nwhich was reported here:\nhttp://article.gmane.org/gmane.linux.drivers.mtd/29923\nby Alexander Pazdnikov \u003cpazdnikov@list.ru\u003e\n\nReported-by: Alexander Pazdnikov \u003cpazdnikov@list.ru\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\n"
    },
    {
      "commit": "6da5156fad495730cca9238ead566222175b30b9",
      "tree": "da90bb6b4897c78e866e468236d067147ed5c150",
      "parents": [
        "276de5d2a18bcdc69e6d48a4d96afc14cfef9dcb"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Sat May 22 12:00:21 2010 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Jun 12 14:46:15 2010 +0300"
      },
      "message": "UBIFS: use ERR_CAST\n\nUse ERR_CAST(x) rather than ERR_PTR(PTR_ERR(x)).  The former makes more\nclear what is the purpose of the operation, which otherwise looks like a\nno-op.\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "276de5d2a18bcdc69e6d48a4d96afc14cfef9dcb",
      "tree": "ea7e6a8475c8523166c4cf84f15a45b15c83268a",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 23 14:16:13 2010 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Jun 12 14:45:25 2010 +0300"
      },
      "message": "UBIFS: check return code\n\nThe error code from \u0027ubifs_rcvry_gc_commit()\u0027 was ignored, so UBIFS\nfailed to recover and continued. Instead, we should refuse mounting\nthe file-system.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "cf37e972478ec58a8a54a6b4f951815f0ae28f78",
      "tree": "b14d75074692ddb213e22e098a64087950f4cf78",
      "parents": [
        "3c4d716538f3eefb1c1f10961a047a6456a2b590"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Jun 08 18:14:51 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Jun 11 12:58:07 2010 +0200"
      },
      "message": "writeback: enforce s_umount locking in writeback_inodes_sb\n\nMake sure that not only sync_filesystem but all callers of writeback_inodes_sb\nhave the superblock protected against remount.  As-is this disables all\nfunctionality for these callers, but the next patch relies on this locking to\nfix writeback_inodes_sb for sync_filesystem.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "15c6fd9786dfaab43547bf60df6fa63170fb64fc",
      "tree": "afd997b3402761e28b6c39f414fbd93c69fdcdce",
      "parents": [
        "7bb46a6734a7e1ad4beaecc11cae7ed3ff81d30f"
      ],
      "author": {
        "name": "npiggin@suse.de",
        "email": "npiggin@suse.de",
        "time": "Thu May 27 01:05:34 2010 +1000"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:15:42 2010 -0400"
      },
      "message": "kill spurious reference to vmtruncate\n\nLots of filesystems calls vmtruncate despite not implementing the old\n-\u003etruncate method.  Switch them to use simple_setsize and add some\ncomments about the truncate code where it seems fitting.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7ea8085910ef3dd4f3cad6845aaa2b580d39b115",
      "tree": "d9c1edb5906f943f7d70bfb4b65106e29772d379",
      "parents": [
        "cc967be54710d97c05229b2e5ba2d00df84ddd64"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed May 26 17:53:25 2010 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 27 22:05:02 2010 -0400"
      },
      "message": "drop unused dentry argument to -\u003efsync\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "abf5d08acaca942b49daf0ed87a9deddc94b183a",
      "tree": "5786fc14e4de0c7058f07aa2338594f522a8d4f9",
      "parents": [
        "85640bd9d47f6ad0290558009e9313632a45861b"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Thu Mar 04 17:32:21 2010 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 21 18:31:26 2010 -0400"
      },
      "message": "ubifs: replace inode uid,gid,mode initialization with helper function\n\nAcked-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2fde99cb55fb9d9b88180512a5e8a5d939d27fec",
      "tree": "52113a2ea0c08f5beb496a6a9c00da618c07c67d",
      "parents": [
        "01bf0b64579ead8a82e7cfc32ae44bc667e7ad0f"
      ],
      "author": {
        "name": "ZhangJieJing",
        "email": "kzjeef@gmail.com",
        "time": "Fri Apr 16 11:36:50 2010 +0800"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 29 15:12:18 2010 +0300"
      },
      "message": "UBIFS: mark VFS SB RO too\n\nIf some read/write error happens (eg.CRC error), UBIFS swotches to\nread-only mode, but the VFS infomation still not update.\nThis patch add this also make /proc/mounts update.\n\nSigned-off-by: Zhang Jiejing \u003ckzjeef@gmail.com\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "b8fa05719ba4349be80ce929237249b57886a203",
      "tree": "eb2a58ce09dc699e29e15b812f06196587aa64a3",
      "parents": [
        "4da0b66c6e9ea7ba78a19f9f186779826d89f8b0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 07 09:54:44 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Mar 07 09:54:44 2010 -0800"
      },
      "message": "Revert \"lib: build list_sort() only if needed\"\n\nThis reverts commit a069c266ae5fdfbf5b4aecf2c672413aa33b2504.\n\nIt turns ou that not only was it missing a case (XFS) that needed it,\nbut perhaps more importantly, people sometimes want to enable new\nmodules that they hadn\u0027t had enabled before, and if such a module uses\nlist_sort(), it can\u0027t easily be inserted any more.\n\nSo rather than add a \"select LIST_SORT\" to the XFS case, just leave it\ncompiled in.  It\u0027s not all _that_ big, after all, and the inconvenience\nisn\u0027t worth it.\n\nRequested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Don Mullis \u003cdon.mullis@gmail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a069c266ae5fdfbf5b4aecf2c672413aa33b2504",
      "tree": "2f9731d8475fc5b2d942cac004904db8e49d5428",
      "parents": [
        "02b12b7a28faa2e9ed5a361cd08ea576ab1f1509"
      ],
      "author": {
        "name": "Don Mullis",
        "email": "don.mullis@gmail.com",
        "time": "Fri Mar 05 13:43:16 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 06 11:26:35 2010 -0800"
      },
      "message": "lib: build list_sort() only if needed\n\nBuild list_sort() only for configs that need it -- those that don\u0027t save\n~581 bytes (i386).\n\nSigned-off-by: Don Mullis \u003cdon.mullis@gmail.com\u003e\nCc: Dave Airlie \u003cairlied@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@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": "a9185b41a4f84971b930c519f0c63bd450c4810d",
      "tree": "268cf4e206cca12fb9e1dd68984e7c190e465b46",
      "parents": [
        "26821ed40b4230259e770c9911180f38fcaa6f59"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri Mar 05 09:21:37 2010 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Mar 05 13:25:52 2010 -0500"
      },
      "message": "pass writeback_control to -\u003ewrite_inode\n\nThis gives the filesystem more information about the writeback that\nis happening.  Trond requested this for the NFS unstable write handling,\nand other filesystems might benefit from this too by beeing able to\ndistinguish between the different callers in more detail.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "2c761270d5520dd84ab0b4e47c24d99ff8503c38",
      "tree": "c23a51fdcc96641661b632d3b3c2c46ad7e53a91",
      "parents": [
        "dbf004d7883b3adb058c0c1a5635bc4ec27651c0"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "david@fromorbit.com",
        "time": "Tue Jan 12 17:39:16 2010 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 12 21:02:00 2010 -0800"
      },
      "message": "lib: Introduce generic list_sort function\n\nThere are two copies of list_sort() in the tree already, one in the DRM\ncode, another in ubifs.  Now XFS needs this as well.  Create a generic\nlist_sort() function from the ubifs version and convert existing users\nto it so we don\u0027t end up with yet another copy in the tree.\n\nSigned-off-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\nAcked-by: Dave Airlie \u003cairlied@redhat.com\u003e\nAcked-by: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eaff8079d4f1016a12e34ab323737314f24127dd",
      "tree": "a3d9e00320c6195e55811d5247a521f99341a411",
      "parents": [
        "7a0ad10c367ab57c899d340372f37880cbe6ab52"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Dec 17 14:25:01 2009 +0100"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 11:03:25 2009 -0500"
      },
      "message": "kill I_LOCK\n\nAfter I_SYNC was split from I_LOCK the leftover is always used together with\nI_NEW and thus superflous.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "7f2f4e72d3423977cc62152ecf29afe701553a67",
      "tree": "2eb0c3e5bd86d188aa46aa04774f0becd3d61a85",
      "parents": [
        "f0b34ae63488fecf0ec4ab42024d607917f90c45"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:01:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:33 2009 -0800"
      },
      "message": "fs/ubifs: use %pUB to print UUIDs\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc1495bf99de6f65066b3234813180301ff8b693",
      "tree": "4858db540f3c57f6f998383056ad4714b969660c",
      "parents": [
        "5476ffd2b78f06cce31a57f8611162918fe1ae3a",
        "b38882f5c066dc681679e90f1903eda323e605b1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:31:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 10 09:31:45 2009 -0800"
      },
      "message": "Merge git://git.infradead.org/ubifs-2.6\n\n* git://git.infradead.org/ubifs-2.6:\n  UBIFS: fix return code in check_leaf\n  UBI: flush wl before clearing update marker\n  MAINTAINERS: change e-mail of Artem Bityutskiy\n  UBIFS: remove manual O_SYNC handling\n  UBIFS: support mounting of UBI volume character devices\n  UBI: Add ubi_open_volume_path\n"
    },
    {
      "commit": "b38882f5c066dc681679e90f1903eda323e605b1",
      "tree": "da9f693c414415c416e69e45bd9379bb27003640",
      "parents": [
        "6afaf8a484cbbfd2ccf58a4e5396d1f280469789"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Mon Dec 07 14:21:45 2009 +0100"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Dec 08 14:24:00 2009 +0200"
      },
      "message": "UBIFS: fix return code in check_leaf\n\nReturn the PTR_ERR of the correct pointer. This fixes the debugging code.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "af901ca181d92aac3a7dc265144a9081a86d8f39",
      "tree": "380054af22521144fbe1364c3bcd55ad24c9bde4",
      "parents": [
        "972b94ffb90ea6d20c589d9a47215df103388ddd"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Nov 14 13:09:05 2009 -0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Dec 04 15:39:55 2009 +0100"
      },
      "message": "tree-wide: fix assorted typos all over the place\n\nThat is \"success\", \"unknown\", \"through\", \"performance\", \"[re|un]mapping\"\n, \"access\", \"default\", \"reasonable\", \"[con]currently\", \"temperature\"\n, \"channel\", \"[un]used\", \"application\", \"example\",\"hierarchy\", \"therefore\"\n, \"[over|under]flow\", \"contiguous\", \"threshold\", \"enough\" and others.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "774888bcd646c7055ac69ad4fd0c0fff0827ee39",
      "tree": "7651125c8ba02bc64ba7507d0599c2e37bb159eb",
      "parents": [
        "9722324e65a017ea0ce39236a2f87c649bb7c39d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Wed Sep 30 22:17:16 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Nov 24 08:18:55 2009 +0200"
      },
      "message": "UBIFS: remove manual O_SYNC handling\n\ngeneric_file_aio_write already calls into -\u003efsync to handle O_SYNC/O_DSYNC.\nRemove the duplicate call to ubifs_sync_wbufs_by_inode which is already\ncovered by ubifs_fsync.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "9722324e65a017ea0ce39236a2f87c649bb7c39d",
      "tree": "83450a50e35f5d1be14d7a74da57b45d3f138a79",
      "parents": [
        "b57102841846d9840dcb1b8b308f6d7369b8e5c5"
      ],
      "author": {
        "name": "Corentin Chary",
        "email": "corentincj@iksaif.net",
        "time": "Mon Sep 28 21:10:12 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Nov 24 08:18:54 2009 +0200"
      },
      "message": "UBIFS: support mounting of UBI volume character devices\n\nThis patch makes it possible to mount UBI character device\nnodes, and use something like:\n\n$ mount -t ubifs /dev/ubi_volume_name /mnt/ubifs\n\ninstead of the old restrictive \u0027nodev\u0027 semantics:\n\n$ mount -t ubifs ubi0_0 /mnt/ubifs\n\n[Comments and the patch were amended a bit by Artem]\n\nSigned-off-by: Corentin Chary \u003ccorentincj@iksaif.net\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f0f37e2f77731b3473fa6bd5ee53255d9a9cdb40",
      "tree": "3c26d3ed1a453156e9c208ccb5567a8954dba064",
      "parents": [
        "6f5071020d5ec89b5d095aa488db604adb921aec"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sun Sep 27 22:29:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Sep 27 11:39:25 2009 -0700"
      },
      "message": "const: mark struct vm_struct_operations\n\n* mark struct vm_area_struct::vm_ops as const\n* mark vm_ops in AGP code\n\nBut leave TTM code alone, something is fishy there with global vm_ops\nbeing used.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7f09410bbc4306f592cfb43812389ea1c7905a20",
      "tree": "18f179435f70c4ec9231883501062d5ea0357af5",
      "parents": [
        "ac4cfdd6d141c319a7af8655f750ed504c187a74"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining address_space_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7cce2f4cb7f5f641f78c8e3eea4e7b1b96cb71c0",
      "tree": "b064d077928cf224660ab1e1841cdab2c9fd8b08",
      "parents": [
        "e055f7e873d900925c222cf2d1ec955af4a9ca90",
        "ebc79c4f8da0f92efa968e0328f32334a2ce80cf"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Sep 21 12:09:22 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Sep 21 12:09:22 2009 +0300"
      },
      "message": "Merge branch \u0027master\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into linux-next\n\nConflicts:\n\tfs/ubifs/super.c\n\nMerge the upstream tree in order to resolve a conflict with the\nper-bdi writeback changes from the linux-2.6-block tree.\n"
    },
    {
      "commit": "e055f7e873d900925c222cf2d1ec955af4a9ca90",
      "tree": "9696d7bcf60f35140b10a2c0ecf421991623c430",
      "parents": [
        "be9e62a7307583594d88f6ccf57a4e30308e7b21"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 17 15:08:31 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 17 15:08:31 2009 +0300"
      },
      "message": "UBIFS: fix debugging dump\n\nIn \u0027dbg_check_space_info()\u0027 we want to dump current lprops statistics,\nbut actually dump old statistics. Fix this.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "b6e51316daede0633e9274e1e30391cfa4747877",
      "tree": "664476bb4e7c05dcce3ad908363b482134c68429",
      "parents": [
        "bcddc3f01c9122882c8b9f12ab94a934e55aef97"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:13:54 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:18:52 2009 +0200"
      },
      "message": "writeback: separate starting of sync vs opportunistic writeback\n\nbdi_start_writeback() is currently split into two paths, one for\nWB_SYNC_NONE and one for WB_SYNC_ALL. Add bdi_sync_writeback()\nfor WB_SYNC_ALL writeback and let bdi_start_writeback() handle\nonly WB_SYNC_NONE.\n\nPush down the writeback_control allocation and only accept the\nparameters that make sense for each function. This cleans up\nthe API considerably.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "32a88aa1b6dfb901cec64e1898cac78d0f25028a",
      "tree": "51aa6f56ccfca53f495d015645373317bdee3647",
      "parents": [
        "c4a77a6c7dcff04a2abc7fe4b6b2ae605be41c5b"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:02:33 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 16 15:18:51 2009 +0200"
      },
      "message": "fs: Assign bdi in super_block\n\nWe do this automatically in get_sb_bdev() from the set_bdev_super()\ncallback. Filesystems that have their own private backing_dev_info\nmust assign that in -\u003efill_super().\n\nNote that -\u003es_bdi assignment is required for proper writeback!\n\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "be9e62a7307583594d88f6ccf57a4e30308e7b21",
      "tree": "b30b5ccb97f583c4bbc2095923f6f5f9fd18890a",
      "parents": [
        "055da1b704e95fea39597bd84d64cea7d4f7d2aa"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Dec 28 10:17:23 2008 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 17:09:48 2009 +0300"
      },
      "message": "UBIFS: improve lprops dump\n\nImprove \u0027dbg_dump_lprop()\u0027 and print dark and dead space there,\ndecode flags, and journal heads.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "055da1b704e95fea39597bd84d64cea7d4f7d2aa",
      "tree": "296a357e17a1deb3f36ae363ae723efde5d34c1f",
      "parents": [
        "77a7ae580c6cc8a0f0d5d7a7d61eb7e9fe8d99dc"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 17:09:24 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 17:09:24 2009 +0300"
      },
      "message": "UBIFS: various minor commentary fixes\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "77a7ae580c6cc8a0f0d5d7a7d61eb7e9fe8d99dc",
      "tree": "299adfb136ca146d9bbfd7e171351ab971c1b93d",
      "parents": [
        "d6d140097beb554daa967d3fb576e94ad2f82dcd"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 15:03:51 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 17:05:06 2009 +0300"
      },
      "message": "UBIFS: improve journal head debugging prints\n\nConvert the journal head integer into the head name when printing\ndebugging information.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d6d140097beb554daa967d3fb576e94ad2f82dcd",
      "tree": "b29f202923cd194f92cf896c3431509dddd26fee",
      "parents": [
        "873a64c762f0c52cdf95dcee59bd416bbf9688e6"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 14:44:06 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 15 14:45:35 2009 +0300"
      },
      "message": "UBIFS: define journal head numbers in ubifs-media.h\n\nThe journal head names and numbers are part of the UBIFS format, so\nthey should be in the ubifs-media.h.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d993831fa7ffeb89e994f046f93eeb09ec91df08",
      "tree": "da4f94bbf022c83988bda71adf1f1b3a88cb4592",
      "parents": [
        "f09b00d3e789a88fa6c7c03cedc62cb65c1de0cb"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Jun 12 14:45:52 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:26 2009 +0200"
      },
      "message": "writeback: add name to backing_dev_info\n\nThis enables us to track who does what and print info. Its main use\nis catching dirty inodes on the default_backing_dev_info, so we can\nfix that up.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d8a8559cd7a9ccac98d5f6f13297a2ff68a43627",
      "tree": "165e02117205e9790c21b2facc130b23addf3775",
      "parents": [
        "0d03d59d9b31cd1e33b7e46a80b6fef66244b1f2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Sep 02 12:34:32 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 09:20:25 2009 +0200"
      },
      "message": "writeback: get rid of generic_sync_sb_inodes() export\n\nThis adds two new exported functions:\n\n- writeback_inodes_sb(), which only attempts to writeback dirty inodes on\n  this super_block, for WB_SYNC_NONE writeout.\n- sync_inodes_sb(), which writes out all dirty inodes on this super_block\n  and also waits for the IO to complete.\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "873a64c762f0c52cdf95dcee59bd416bbf9688e6",
      "tree": "02b0bde3595eb9f7f5b83d961e41504748a4e325",
      "parents": [
        "0dcd18e4073454daf591e7127247e32ec942b4f3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Sep 01 17:06:43 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 10 12:06:47 2009 +0300"
      },
      "message": "UBIFS: amend commentaries\n\nThis patch amends and nicifies commentaries in file.c, as well as\nfixes some spelling problems.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "0dcd18e4073454daf591e7127247e32ec942b4f3",
      "tree": "2f9e0175bc1af2e841269c19f0a5f65cc22088d7",
      "parents": [
        "348709bad348d2fd013e1529b4cf5f220717c328"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Aug 25 16:22:53 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 10 12:06:47 2009 +0300"
      },
      "message": "UBIFS: check ubifs_scan error codes better\n\nThe \u0027ubifs_scan()\u0027 function returns -EUCLEAN if something is corrupted\nand recovery is needed, otherwise it returns other error codes. However,\nin few places UBIFS does not check the error codes and runs recovery.\nThis patch changes this behavior and makes UBIFS start recovery only\non -EUCLEAN errors.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "348709bad348d2fd013e1529b4cf5f220717c328",
      "tree": "e5ba0fb86c1c41d078c38f6ca67bda957241ef53",
      "parents": [
        "e3c3efc243462d67ba9fa7f67620dcbc4597bf0a"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Aug 25 15:00:55 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 10 12:06:47 2009 +0300"
      },
      "message": "UBIFS: do not print scary error messages needlessly\n\nAt the moment UBIFS print large and scary error messages and\nflash dumps in case of nearly any corruption, even if it is\na recoverable corruption. For example, if the master node is\ncorrupted, ubifs_scan() prints error dumps, then UBIFS recovers\njust fine and goes on.\n\nThis patch makes UBIFS print scary error messages only in\nreal cases, which are not recoverable. It adds \u0027quiet\u0027 argument\nto the \u0027ubifs_scan()\u0027 function, so the caller may ask \u0027ubi_scan()\u0027\nnot to print error messages if the caller is able to do recovery.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "e3c3efc243462d67ba9fa7f67620dcbc4597bf0a",
      "tree": "ae29cf8fade7c9bfac77f7ceff0381e775d80c0d",
      "parents": [
        "8c6866b071cb242584df287dbd342e5815e8407f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Aug 27 16:34:19 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Sep 10 09:58:11 2009 +0300"
      },
      "message": "UBIFS: add inode size debugging check\n\nAdd one more check to UBIFS - a check that makes sure that there\nare no data nodes beyond inode size. And few commantaries fixes\nalong the line.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "8c6866b071cb242584df287dbd342e5815e8407f",
      "tree": "ee4f90f15c1e0472f0d0873595f130d580fb296e",
      "parents": [
        "887ee17117fd23e962332b353d250ac9e090b20f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Aug 15 13:57:48 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat Aug 22 11:54:51 2009 +0300"
      },
      "message": "UBIFS: constify file and inode operations\n\nThis patch adds \u0027const\u0027 qualifier to UBIFS xattr inode and file\noperations.\n\nPointed-out-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "887ee17117fd23e962332b353d250ac9e090b20f",
      "tree": "b871a984fe5ed99b9181846d3f89b67b92239023",
      "parents": [
        "e9d6bbc428bdf0c08bbd0b3f28db2b7317cfff21"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jul 20 17:56:19 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jul 24 15:14:55 2009 +0300"
      },
      "message": "UBIFS: remove unneeded call from ubifs_sync_fs\n\nNowadays VFS always synchronizes all dirty inodes and pages before\ncalling \u0027-\u003esync_fs()\u0027, so remove unneeded \u0027generic_sync_sb_inodes()\u0027\nfrom \u0027ubifs_sync_fs()\u0027. It used to be needed, but not any longer.\n\nPointed-out-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e9d6bbc428bdf0c08bbd0b3f28db2b7317cfff21",
      "tree": "ec306cfd64f3ae1926b5a92379d072791458b710",
      "parents": [
        "b5148da40cb77ca84c4b0281e7049bb26d786592"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 19 13:51:04 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jul 24 15:14:54 2009 +0300"
      },
      "message": "UBIFS: kill BKL\n\nThe BKL was pushed down from VFS to the file-systems. It used\nto serialize mount/unmount/remount and prevented more than one\ninstance of the same file-system from doing\nmount/umount/remount at the same time. But it is OK for UBIFS\nand it does not need any additional locking for these cases.\nThus, kick the BKL out of UBIFS.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "b5148da40cb77ca84c4b0281e7049bb26d786592",
      "tree": "89352814eb44df3e7ff37a1100c5870f2011b8da",
      "parents": [
        "83ef2ecdbbd49cb0fbbfc7012b111b71664e386d"
      ],
      "author": {
        "name": "Subrata Modak",
        "email": "subrata@linux.vnet.ibm.com",
        "time": "Fri Jul 17 18:28:12 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jul 24 15:14:54 2009 +0300"
      },
      "message": "UBIFS: remove unused functions\n\nRemove \u0027xent_key_init_hash()\u0027 and \u0027data_key_init_flash()\u0027 functions,\nas they are unot used anywhere.\n\nSigned-off-by: Subrata Modak \u003csubrata@linux.vnet.ibm.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "83ef2ecdbbd49cb0fbbfc7012b111b71664e386d",
      "tree": "a45f4b7f106f36f766494126aea2b74fd4ddc32e",
      "parents": [
        "4be3bd7849165e7efa6b0b35a23d6a3598d97465"
      ],
      "author": {
        "name": "Subrata Modak",
        "email": "subrata@linux.vnet.ibm.com",
        "time": "Wed Jul 15 07:49:03 2009 +0530"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jul 24 15:14:54 2009 +0300"
      },
      "message": "UBIFS: suppress compilation warning\n\nFix \"using uninitialized variable\" compilation warning by using\nthe \"unititialized_var()\" helper.\n\nSigned-off-by: Subrata Modak\u003csubrata@linux.vnet.ibm.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "405f55712dfe464b3240d7816cc4fe4174831be2",
      "tree": "96c425ea7fa8b31058b8f83a433c5e5265c8ebc7",
      "parents": [
        "f9fabcb58a6d26d6efde842d1703ac7cfa9427b6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Sat Jul 11 22:08:37 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jul 12 12:22:34 2009 -0700"
      },
      "message": "headers: smp_lock.h redux\n\n* Remove smp_lock.h from files which don\u0027t need it (including some headers!)\n* Add smp_lock.h to files which do need it\n* Make smp_lock.h include conditional in hardirq.h\n  It\u0027s needed only for one kernel_locked() usage which is under CONFIG_PREEMPT\n\n  This will make hardirq.h inclusion cheaper for every PREEMPT\u003dn config\n  (which includes allmodconfig/allyesconfig, BTW)\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "061125476039a9a998878468a6abe235b1cee347",
      "tree": "5acf6d6bc38cfd96c3d0ba4dc101d7e6a2606d16",
      "parents": [
        "431102fed3effe4e4e19678830ddab7f05c34bf9"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 29 19:27:14 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jul 09 09:19:39 2009 +0300"
      },
      "message": "UBIFS: fix corruption dump\n\nIn the \u0027ubifs_recover_leb()\u0027 function, when we find corrupted\nempty space, we dump 8K starting from the offset where the last\nnode ends. This is OK if the corrupted empty space is somewhere\nnear that offset. But if the corruption is far at the end of the\nLEB, we will dump all 0xFF bytes and complitely ignore the\ninteresting data. This is observed on a PPC (\"kilauea\") with\nNOR flash.\n\nThis patch changes the behavior and teaches UBIFS to print only\ninteresting data. I.e., now we find where corruption starts and\nstart dumping from that offset.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "431102fed3effe4e4e19678830ddab7f05c34bf9",
      "tree": "cc3a9046a6abbbc026320449ee59b07bb70f6109",
      "parents": [
        "ed43f2f06cc1cec7ec2dc235c908530bc8c796eb"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 29 18:58:34 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jul 09 09:19:38 2009 +0300"
      },
      "message": "UBIFS: clean up free space checking\n\nrecovery.c has \u0027is_empty()\u0027 helper and it is better to use\nthis helper instead of re-implementing it in several places.\nThis patch does this and removes some amount of unneeded code.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "ed43f2f06cc1cec7ec2dc235c908530bc8c796eb",
      "tree": "7d178c64dc5a758487cc0fca834c4ab42e62febc",
      "parents": [
        "086b3640c10ab448a6993c4bae1508f496f530c4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 29 17:59:23 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jul 09 09:19:38 2009 +0300"
      },
      "message": "UBIFS: small amendments in the LEB scanning code\n\nThis patch fixes few minor things I\u0027ve spotted while going through\ncode:\n\n1. Better document return codes\n2. If \u0027ubifs_scan_a_node()\u0027 returns some thing we do not expect,\n   treat this as an error.\n3. Try to do recovery only when \u0027ubifs_scan()\u0027 returns %-EUCLEAN,\n   not on any error.\n4. If empty space starts at a non-aligned address, print a message.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "086b3640c10ab448a6993c4bae1508f496f530c4",
      "tree": "ed484277d53df234c9828065bdb241e53a352bf0",
      "parents": [
        "8f6035732a0484a84a1c9cd85312de234ddaa309"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 29 16:25:33 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jul 09 09:19:38 2009 +0300"
      },
      "message": "UBIFS: dump a little more in case of corruptions\n\nIn case of corruptions, dump 8192 bytes instead of 4096. The\nlargest node is 4096+ bytes, so it is better to see a node\nboundary, which is not always possible when only 4096 bytes\nare printed.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReviewed-by: Adrian Hunter \u003cAdrian.Hunter@nokia.com\u003e\n"
    },
    {
      "commit": "7fcd9c3ecbf09c0a77db7ba01aac75b32fb79a93",
      "tree": "de3fc29704e9f6301f6c67ffd352f9eb524538fd",
      "parents": [
        "1fb8bd01ed0af0d0577e010e8c6b4234de583fa6"
      ],
      "author": {
        "name": "Daniel Mack",
        "email": "daniel@caiaq.de",
        "time": "Thu Jul 02 17:15:47 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:19 2009 +0300"
      },
      "message": "UBIFS: allow more than one volume to be mounted\n\nUBIFS uses a bdi device per volume, but does not care to hand out unique\nnames to each of them. This causes an error when trying to mount more\nthan one volumes. Append the UBI volume and device ID to avoid that.\n\n[Amended a bit by Artem Bityutskiy]\n\nSigned-off-by: Daniel Mack \u003cdaniel@caiaq.de\u003e\nCc: Artem Bityutskiy \u003cdedekind@infradead.org\u003e\nCc: Adrian Hunter \u003cext-adrian.hunter@nokia.com\u003e\nCc: linux-mtd@lists.infradead.org\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1fb8bd01ed0af0d0577e010e8c6b4234de583fa6",
      "tree": "ca8c24c96145a0ae45aa0ec6365e88aa8c5a9be3",
      "parents": [
        "681947d2fa1a00629de33c4df3ca72c39f06a14c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jun 28 18:31:58 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:19 2009 +0300"
      },
      "message": "UBIFS: fix assertion warning\n\nWhen debugging is enabled and an unclean file-system is mounter,\nthe following assertion is triggered:\n\nUBIFS assert failed in ubifs_tnc_start_commit at 805 (pid 1081)\nCall Trace:\n[cfaffbd0] [c0006cf8] show_stack+0x44/0x16c (unreliable)\n[cfaffc10] [c011b738] ubifs_tnc_start_commit+0xbb8/0xd18\n[cfaffc90] [c0112670] do_commit+0x150/0xa44\n[cfaffd10] [c0125234] ubifs_rcvry_gc_commit+0xd8/0x544\n[cfaffd60] [c0100e9c] ubifs_fill_super+0xe78/0x15f8\n[cfaffdf0] [c0102118] ubifs_get_sb+0x20c/0x320\n[cfaffe70] [c007f764] vfs_kern_mount+0x58/0xe0\n[cfaffe90] [c007f83c] do_kern_mount+0x40/0xf8\n[cfaffeb0] [c0095c24] do_mount+0x550/0x758\n[cfafff10] [c0095ebc] sys_mount+0x90/0xe0\n[cfafff40] [c000ed4c] ret_from_syscall+0x0/0x3c\n\nThe reason is that we initialize \u0027c-\u003emin_leb_idx\u0027 early, and do\nnot re-calculate it after journal replay.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "681947d2fa1a00629de33c4df3ca72c39f06a14c",
      "tree": "3a732a727fa35799fe7413ccff00d9bdacccedf6",
      "parents": [
        "44737589442bf69d811e003d9d0064b8fc1541d6"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Wed Jun 24 09:59:38 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:18 2009 +0300"
      },
      "message": "UBIFS: minor spelling and grammar fixes\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\n"
    },
    {
      "commit": "44737589442bf69d811e003d9d0064b8fc1541d6",
      "tree": "8b75c1cb6fe22e95ac6235535e25960c47231ea9",
      "parents": [
        "cb54ef8b1304fe25f3d57031e0f85558a043239f"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Wed Jun 24 10:15:12 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:18 2009 +0300"
      },
      "message": "UBIFS: fix 64-bit divisions in debug print\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\n"
    },
    {
      "commit": "cb54ef8b1304fe25f3d57031e0f85558a043239f",
      "tree": "47a6ed1628a6f7028b5f1befe0c67d84c6f4c5bc",
      "parents": [
        "2a35a3a8ab3e94afd631ed4b45878ceb98f7ab28"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jun 23 20:30:32 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:18 2009 +0300"
      },
      "message": "UBIFS: few spelling fixes\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2a35a3a8ab3e94afd631ed4b45878ceb98f7ab28",
      "tree": "ff0c5dc8b420bfa4e4cf160b11e7d2902b7aed76",
      "parents": [
        "0b335b9d7d5f0b832e90ac469480789c07be80ad"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jun 23 20:26:33 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:17 2009 +0300"
      },
      "message": "UBIFS: set write-buffer timout to 3-5 seconds\n\nThis patch cleans up write-buffer timeout initialization and\nsets it to 3-5 interval.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "0b335b9d7d5f0b832e90ac469480789c07be80ad",
      "tree": "5001522f18092e1cafb538a74eedae3087c17145",
      "parents": [
        "70aee2f153972f70fad5f7025134fec063f9efbe"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jun 23 12:30:43 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:16 2009 +0300"
      },
      "message": "UBIFS: slightly optimize write-buffer timer usage\n\nThis patch adds the following minor optimization:\n\n1. If write-buffer does not use the timer, indicate it with the\n   wbuf-\u003eno_timer variable, instead of using the wbuf-\u003esoftlimit\n   variable. This is better because wbuf-\u003esoftlimit is of ktime_t\n   type, and the ktime_to_ns function contains 64-bit multiplication.\n\n2. Do not call the \u0027hrtimer_cancel()\u0027 function for write-buffers\n   which do not use timers.\n\n3. Do not cancel the timer in \u0027ubifs_put_super()\u0027 because the\n   synchronization function does this.\n\nThis patch also removes a confusing comment.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "70aee2f153972f70fad5f7025134fec063f9efbe",
      "tree": "d6a00fe0a8c900935c360abf7a622078f8d22afa",
      "parents": [
        "e3dc5a665d39112e98cfd5bbc7fda2963c00c12c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Jun 18 13:37:15 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:16 2009 +0300"
      },
      "message": "UBIFS: improve debugging messaged\n\n1. Make the I/O debugging message print the journal head number.\n2. Add prints to timer functions.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e3dc5a665d39112e98cfd5bbc7fda2963c00c12c",
      "tree": "b4f4c2ecec85bfb029f4ec31c56bb7477a86aba1",
      "parents": [
        "8e4a718ff38d8539938ec3421935904c27e00c39"
      ],
      "author": {
        "name": "Adrian Hunter",
        "email": "adrian.hunter@nokia.com",
        "time": "Mon Jun 22 17:31:09 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Jul 05 18:45:15 2009 +0300"
      },
      "message": "UBIFS: fix integer overflow warning\n\nFix the following warning:\n\nfs/ubifs/io.c: In function \u0027ubifs_wbuf_init\u0027:\nfs/ubifs/io.c:860: warning: integer overflow in expression\n\nAnd limit maximum hrtimer delta to ULONG_MAX because the\nargument is \u0027unsigned long\u0027.\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "073aaa1b142461d91f83da66db1184d7c1b1edea",
      "tree": "2b54d185d78f1229418fca521a93e6b55c57248b",
      "parents": [
        "06b16e9f68edaa1e71aee943d3c030bcf7380af1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jun 09 12:11:54 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jun 24 08:17:07 2009 -0400"
      },
      "message": "helpers for acl caching + switch to those\n\nhelpers: get_cached_acl(inode, type), set_cached_acl(inode, type, acl),\nforget_cached_acl(inode, type).\n\nubifs/xattr.c needed includes reordered, the rest is a plain switchover.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b7c142dbf1e7422d0be7f7faa3f1163ad9da9788",
      "tree": "6e62c8654bb9c329f89246235062ac2a289960df",
      "parents": [
        "0bd8df908de2aefe312d05bd25cd3abc21a6d1da",
        "f2c5dbd7b7396457efc114f825acfdd4db4608f8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 17 09:46:33 2009 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: start using hrtimers\n  hrtimer: export ktime_add_safe\n  UBIFS: do not forget to register BDI device\n  UBIFS: allow sync option in rootflags\n  UBIFS: remove dead code\n  UBIFS: use anonymous device\n  UBIFS: return proper error code if the compr is not present\n  UBIFS: return error if link and unlink race\n  UBIFS: reset no_space flag after inode deletion\n"
    },
    {
      "commit": "a979eff1811a07f5fd331c5f6f727370747b42ad",
      "tree": "0d01a02a3ad0ca590570feefc0e9be834b330b74",
      "parents": [
        "ad081f1430515d0b727eba99ec435a526c61a599"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 29 09:19:23 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jun 16 08:21:04 2009 +0200"
      },
      "message": "ubifs: register backing_dev_info\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "337eb00a2c3a421999c39c94ce7e33545ee8baa7",
      "tree": "d9b780d095b638b1d8fa23841ff70347cf5daa08",
      "parents": [
        "4195f73d1329e49727bcceb028e58cb38376c2b0"
      ],
      "author": {
        "name": "Alessio Igor Bogani",
        "email": "abogani@texware.it",
        "time": "Tue May 12 15:10:54 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:11 2009 -0400"
      },
      "message": "Push BKL down into -\u003eremount_fs()\n\n[xfs, btrfs, capifs, shmem don\u0027t need BKL, exempt]\n\nSigned-off-by: Alessio Igor Bogani \u003cabogani@texware.it\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6cfd0148425e528b859b26e436b01f23f6926224",
      "tree": "60e3257053554ff198fe5825e6f12a00c3b4422a",
      "parents": [
        "a9e220f8322e2b0e0b8903fe00265461cffad3f0"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:40:36 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:07 2009 -0400"
      },
      "message": "push BKL down into -\u003eput_super\n\nMove BKL into -\u003eput_super from the only caller.  A couple of\nfilesystems had trivial enough -\u003eput_super (only kfree and NULLing of\ns_fs_info + stuff in there) to not get any locking: coda, cramfs, efs,\nhugetlbfs, omfs, qnx4, shmem, all others got the full treatment.  Most\nof them probably don\u0027t need it, but I\u0027d rather sort that out individually.\nPreferably after all the other BKL pushdowns in that area.\n\n[AV: original used to move lock_super() down as well; these changes are\nremoved since we don\u0027t do lock_super() at all in generic_shutdown_super()\nnow]\n[AV: fuse, btrfs and xfs are known to need no damn BKL, exempt]\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5af7926ff33b68b3ba46531471c6e0564b285efc",
      "tree": "a25266f9db482ce9dd8e663148ffb0f1a524bd83",
      "parents": [
        "e5004753388dcf5e1b8a52ac0ab807d232340fbb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 05 15:41:25 2009 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jun 11 21:36:06 2009 -0400"
      },
      "message": "enforce -\u003esync_fs is only called for rw superblock\n\nMake sure a superblock really is writeable by checking MS_RDONLY\nunder s_umount.  sync_filesystems needed some re-arragement for\nthat, but all but one sync_filesystem caller had the correct locking\nalready so that we could add that check there.  cachefiles grew\ns_umount locking.\n\nI\u0027ve also added a WARN_ON to sync_filesystem to assert this for\nfuture callers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "f2c5dbd7b7396457efc114f825acfdd4db4608f8",
      "tree": "9c65570230dfc05b8580c86db0154b6b2a98515c",
      "parents": [
        "8daa21e61be47a5b136c4ee1be82e391a5788696"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 28 16:24:15 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 08 11:14:58 2009 +0300"
      },
      "message": "UBIFS: start using hrtimers\n\nUBIFS uses timers for write-buffer write-back. It is not\ncrucial for us to write-back exactly on time. We are fine\nto write-back a little earlier or later. And this means\nwe may optimize UBIFS timer so that it could be groped\nwith a close timer event, so that the CPU would not be\nwaken up just to do the write back. This is optimization\nto lessen power consumption, which is important in\nembedded devices UBIFS is used for.\n\nhrtimers have a nice feature: they are effectively range\ntimers, and we may defind the soft and hard limits for\nit. Standard timers do not have these feature. They may\nonly be made deferrable, but this means there is effectively\nno hard limit. So, we will better use hrtimers.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "3f36406f26437afae9f43cc6dcfc264143e21ed0",
      "tree": "358eccc333476a45d9071f0c63a90f936a325119",
      "parents": [
        "8379ea31e991ed2098660954d25f64386adee65c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 29 20:16:27 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Jun 08 11:14:21 2009 +0300"
      },
      "message": "UBIFS: do not forget to register BDI device\n\nReviewed-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8379ea31e991ed2098660954d25f64386adee65c",
      "tree": "1232942ea268f7d6a4231f841a819564050e4c66",
      "parents": [
        "428ff9d2e37d3a82af0f56b476f70c244cf550d1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 29 12:34:52 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jun 02 11:08:07 2009 +0300"
      },
      "message": "UBIFS: allow sync option in rootflags\n\nWhen passing UBIFS parameters via kernel command line, the\nsync option will be passed to UBIFS as a string, not as an\nMS_SYNCHRONOUS flag. Teach UBIFS interpreting this flag.\n\nReported-by: Aurélien GÉRÔME \u003cag@debian.org\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "428ff9d2e37d3a82af0f56b476f70c244cf550d1",
      "tree": "9274401523df72cfe02ffafc57bbea7f2a9b7a87",
      "parents": [
        "7c83f5cb551b2e5c4934933fda006636f7424123"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 25 16:59:28 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 29 14:38:37 2009 +0300"
      },
      "message": "UBIFS: remove dead code\n\nUBIFS assumes that @c-\u003emin_io_size is 8 in case of NOR flash. This\nis because UBIFS alignes all nodes to 8-byte boundary, and maintaining\n@c-\u003emin_io_size introduced unnecessary complications.\n\nThis patch removes senseless constructs like:\n\nif (c-\u003emin_io_size \u003d\u003d 1)\n\tNOR-specific code\n\nAlso, few commentaries amendments.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7c83f5cb551b2e5c4934933fda006636f7424123",
      "tree": "6b4393743ee63ffdbfb734d3f2daf059e8874508",
      "parents": [
        "8eec2f36fb869f1e6d81d834bbbd487941222fc8"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 25 19:23:04 2009 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 26 12:37:11 2009 +0300"
      },
      "message": "UBIFS: use anonymous device\n\nUBIFS has erroneuosly set \u0027sb-\u003es_dev\u0027 to the UBI volume\ncharacter device major/minor. This may lead to clashes\nif there is another FS mounted to a block device with\nthe same major/minor numbers. User-space programs which\nuse \u0027stat-\u003est_dev\u0027 may get confused because of this.\n\nThis problem was found by Al Viro. He also pointed the\nway to fix the problem - use \u0027set_anon_super()\u0027 and\n\u0027kill_anon_super()\u0027 VFS helpers.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8eec2f36fb869f1e6d81d834bbbd487941222fc8",
      "tree": "166dd7244dc187cd59e51af5541b1b1ca854b111",
      "parents": [
        "8b3884a841f398f6e0a0411d6929d8d9381bb265"
      ],
      "author": {
        "name": "Corentin Chary",
        "email": "corentincj@iksaif.net",
        "time": "Mon May 25 08:49:10 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 25 12:28:27 2009 +0300"
      },
      "message": "UBIFS: return proper error code if the compr is not present\n\nIf the compressor is not present, mount_ubifs need\nto return an error code. This way ubifs_fill_super\nwill stop and handle the error.\n\nSigned-off-by: Corentin Chary \u003ccorentincj@iksaif.net\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8b3884a841f398f6e0a0411d6929d8d9381bb265",
      "tree": "01bbbaad779c43b14ea3e809c5fc9271eca257d4",
      "parents": [
        "6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c"
      ],
      "author": {
        "name": "Hunter Adrian",
        "email": "adrian.hunter@nokia.com",
        "time": "Thu May 14 06:32:30 2009 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 19 11:01:31 2009 +0300"
      },
      "message": "UBIFS: return error if link and unlink race\n\nConsider a scenario when \u0027vfs_link(dirA/fileA)\u0027 and\n\u0027vfs_unlink(dirA/fileA, dirB/fileB)\u0027 race. \u0027vfs_link()\u0027 does not\nlock \u0027dirA-\u003ei_mutex\u0027, so this is possible. Both of the functions\nlock \u0027fileA-\u003ei_mutex\u0027 though. Suppose \u0027vfs_unlink()\u0027 wins, and takes\n\u0027fileA-\u003ei_mutex\u0027 mutex first. Suppose \u0027fileA-\u003ei_nlink\u0027 is 1. In this\ncase \u0027ubifs_unlink()\u0027 will drop the last reference, and put \u0027inodeA\u0027\nto the list of orphans. After this, \u0027vfs_link()\u0027 will link\n\u0027dirB/fileB\u0027 to \u0027inodeA\u0027. Thir is a problem because, for example,\nthe subsequent \u0027vfs_unlink(dirB/fileB)\u0027 will add the same inode\nto the list of orphans.\n\nThis problem was reported by J. R. Okajima \u003chooanon05@yahoo.co.jp\u003e\n\n[Artem: add more comments, amended commit message]\n\nSigned-off-by: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "6f5bbff9a1b7d6864a495763448a363bbfa96324",
      "tree": "0067dca46f40def1c55541c34c262e06aeb8c4c8",
      "parents": [
        "74dbbdd7fdc11763f4698d2f3e684cf4446951e6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed May 06 01:34:22 2009 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 09 10:49:40 2009 -0400"
      },
      "message": "Convert obvious places to deactivate_locked_super()\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "6d6cb0d688d0f262cb4fd5771648b0ac01d4f82c"
}
