)]}'
{
  "log": [
    {
      "commit": "016f1c54408b1e92e2e8087bfc05ca0a9c258513",
      "tree": "7f306538332540e0357efbcae7b2b91a4503eda2",
      "parents": [
        "93ee7a9340d64f20295aacc3fb6a22b759323280"
      ],
      "author": {
        "name": "Michal Marek",
        "email": "mmarek@suse.cz",
        "time": "Thu Aug 11 12:29:46 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "artem.bityutskiy@intel.com",
        "time": "Fri Aug 19 18:58:58 2011 +0300"
      },
      "message": "UBIFS: not build debug messages with CONFIG_UBIFS_FS_DEBUG disabled\n\nWith\n  $ grep -e UBIFS_FS_DEBUG -e DYNAMIC_DEBUG .config\n  # CONFIG_UBIFS_FS_DEBUG is not set\n  CONFIG_DYNAMIC_DEBUG\u003dy\n\nDebug messages are kept in the object files due to the\ndynamic_pr_debug() macro, even if they are never going to be printed:\n  $ make fs/ubifs/super.o\n  $ strings fs/ubifs/super.o | grep \u0027compiled on\u0027\n  compiled on:         Aug 11 2011 at 12:21:38\n\nUse plain printk to fix this.\n\nSigned-off-by: Michal Marek \u003cmmarek@suse.cz\u003e\nSigned-off-by: Artem Bityutskiy \u003cartem.bityutskiy@intel.com\u003e\n"
    },
    {
      "commit": "bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff",
      "tree": "12b2bb4202b05f6ae6a43c6ce830a0472043dbe5",
      "parents": [
        "8e204874db000928e37199c2db82b7eb8966cc3c",
        "5a9a43646cf709312d71eca71cef90ad802f28f9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 22 19:02:39 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)\n  vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp\n  isofs: Remove global fs lock\n  jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory\n  fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.\n  mm/truncate.c: fix build for CONFIG_BLOCK not enabled\n  fs:update the NOTE of the file_operations structure\n  Remove dead code in dget_parent()\n  AFS: Fix silly characters in a comment\n  switch d_add_ci() to d_splice_alias() in \"found negative\" case as well\n  simplify gfs2_lookup()\n  jfs_lookup(): don\u0027t bother with . or ..\n  get rid of useless dget_parent() in btrfs rename() and link()\n  get rid of useless dget_parent() in fs/btrfs/ioctl.c\n  fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n  drivers: fix up various -\u003ellseek() implementations\n  fs: handle SEEK_HOLE/SEEK_DATA properly in all fs\u0027s that define their own llseek\n  Ext4: handle SEEK_HOLE/SEEK_DATA generically\n  Btrfs: implement our own -\u003ellseek\n  fs: add SEEK_HOLE and SEEK_DATA flags\n  reiserfs: make reiserfs default to barrier\u003dflush\n  ...\n\nFix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new\nshrinker callout for the inode cache, that clashed with the xfs code to\nstart the periodic workers later.\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "19495f70d1ebcdc732dd3c94f5968a4bff198ae5",
      "tree": "dafe4e1a099f666e1672a2a228f25598955bfc96",
      "parents": [
        "a7fa94a9fe26a4925914083a31b5387bca530eb1"
      ],
      "author": {
        "name": "Anatolij Gustschin",
        "email": "agust@denx.de",
        "time": "Thu Jul 07 12:25:02 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Fri Jul 08 06:53:18 2011 +0300"
      },
      "message": "UBIFS: fix master node recovery\n\nWhen the 1st LEB was unmapped and written but 2nd LEB not,\nthe master node recovery doesn\u0027t succeed after power cut.\nWe see following error when mounting UBIFS partition on NOR\nflash:\n\nUBIFS error (pid 1137): ubifs_recover_master_node: failed to recover master node\n\nCorrect 2nd master node offset check is needed to fix the\nproblem. If the 2nd master node is at the end in the 2nd LEB,\nfirst master node is used for recovery. When checking for this\ncondition we should check whether the master node is exactly at\nthe end of the LEB (without remaining empty space) or whether\nit is followed by an empty space less than the master node size.\n\nArtem: when the error happened, offs2 \u003d 261120, sz \u003d 512, c-\u003eleb_size \u003d 262016.\n\nSigned-off-by: Anatolij Gustschin \u003cagust@denx.de\u003e\nSigned-off-by: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\n"
    },
    {
      "commit": "a7fa94a9fe26a4925914083a31b5387bca530eb1",
      "tree": "e745f630a78b473379e9d0866a9b1be25b528677",
      "parents": [
        "d27462a518c31a4b1093ad866229f85b2b765e7e"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 16:20:03 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:34 2011 +0300"
      },
      "message": "UBIFS: improve power cut emulation testing\n\nThis patch cleans-up and improves the power cut testing:\n\n1. Kill custom \u0027simple_random()\u0027 function and use \u0027random32()\u0027 instead.\n2. Make timeout larger\n3. When cutting the buffer - fill the end with random data sometimes, not\n   only with 0xFFs.\n4. Some times cut in the middle of the buffer, not always at the end.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d27462a518c31a4b1093ad866229f85b2b765e7e",
      "tree": "e2663f6294ad516bc3debebf394fc437a84d0de5",
      "parents": [
        "f57cb188ccd9c0242111d99b7283eda7827746c4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 15:10:33 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:34 2011 +0300"
      },
      "message": "UBIFS: rename recovery testing variables\n\nSince the recovery testing is effectively about emulating power cuts by UBIFS,\nuse \"power cut\" as the base term for all the related variables and name them\ncorrespondingly. This is just a minor clean-up for the sake of readability.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f57cb188ccd9c0242111d99b7283eda7827746c4",
      "tree": "687b8b3f6e91594461f663ebd6568b9a534d8e32",
      "parents": [
        "0a541b14e819f972d14f29d17cb9fd8b4b71222e"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 14:51:41 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: remove custom list of superblocks\n\nThis is a clean-up of the power-cut emulation code - remove the custom list of\nsuperblocks which we maintained to find the superblock by the UBI volume\ndescriptor. We do not need that crud any longer, because now we can get the\nsuperblock as a function argument.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "0a541b14e819f972d14f29d17cb9fd8b4b71222e",
      "tree": "b996e3d7aeb4d05e398b805792e8d16c840edbf1",
      "parents": [
        "d3b2578f56e0a77b9e261d83e9b5a0a666b82980"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 14:38:50 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: stop re-defining UBI operations\n\nNow when we use UBIFS helpers for all the I/O, we can remove the horrible hack\nof re-defining UBI I/O functions.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d3b2578f56e0a77b9e261d83e9b5a0a666b82980",
      "tree": "99a4760399d97ffad28f0a7426682cbcd664056e",
      "parents": [
        "987226a5d3a356792650f8e9028132a79815f6ef"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 14:22:05 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: switch to I/O helpers\n\nSwitch the rest of direct UBI calls to UBIFS helper functions.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "987226a5d3a356792650f8e9028132a79815f6ef",
      "tree": "f230d62a1f05f80e99ed1d6836bfbce84b74c250",
      "parents": [
        "d304820a1f6cdacab691bbcb7faa35ec631c6398"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 14:12:10 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: switch to ubifs_leb_write\n\nStop using \u0027ubi_leb_write()\u0027 directly and switch to the \u0027ubifs_leb_write()\u0027\nhelper.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d304820a1f6cdacab691bbcb7faa35ec631c6398",
      "tree": "b958f273673000d68a2dc088298425ae1f32e85f",
      "parents": [
        "83cef708c606f46a2b527af025acb3d24555f0c4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 14:03:25 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: switch to ubifs_leb_read\n\nInstead of using \u0027ubi_read()\u0027 function directly, used the \u0027ubifs_leb_read()\u0027\nhelper function instead. This allows to get rid of several redundant error\nmessages and make sure that we always have a stack dump on read errors.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "83cef708c606f46a2b527af025acb3d24555f0c4",
      "tree": "f5f91da8f13a7f013304ae596e56e7d52a5dcd76",
      "parents": [
        "d033c98b17ecf30d64d83d96938ce7bfb47f7520"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 13:45:09 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: introduce more I/O helpers\n\nIntroduce the following I/O helper functions: \u0027ubifs_leb_read()\u0027,\n\u0027ubifs_leb_write()\u0027, \u0027ubifs_leb_change()\u0027, \u0027ubifs_leb_unmap()\u0027,\n\u0027ubifs_leb_map()\u0027, \u0027ubifs_is_mapped().\n\nThe idea is to wrap all UBI I/O functions in order to encapsulate various\nassertions and error path handling (error message, stack dump, switching to R/O\nmode). And there are some other benefits of this which will be used in the\nfollowing patches.\n\nThis patch does not switch whole UBIFS to use these functions yet.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d033c98b17ecf30d64d83d96938ce7bfb47f7520",
      "tree": "079b36f4b63bb7c13f177cec15f144dff794f08e",
      "parents": [
        "891a54a153646f9b16bffe5df6cb74cb3f1e9dc6"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 13:16:08 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:33 2011 +0300"
      },
      "message": "UBIFS: always print stacktrace when switching to R/O mode\n\nWhen switching to R/O mode due to an I/O error, always dump the stack, not only\nwhen debugging is enabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "891a54a153646f9b16bffe5df6cb74cb3f1e9dc6",
      "tree": "e61849c41a6301e6bfb757ec043b9debc5160963",
      "parents": [
        "e7717060ddd509e6c305ad7bf5a090a95e91c8cf"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 11:32:21 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:32 2011 +0300"
      },
      "message": "UBIFS: remove unused and unneeded debugging function\n\nThis patch contains several minor clean-up and preparational cahnges.\n\n1. Remove \u0027dbg_read()\u0027, \u0027dbg_write()\u0027, \u0027dbg_change()\u0027, and \u0027dbg_leb_erase()\u0027\n   functions as they are not used.\n2. Remove \u0027dbg_leb_read()\u0027 and \u0027dbg_is_mapped()\u0027 as they are not really needed,\n   it is fine to let reads go through in failure mode.\n3. Rename \u0027offset\u0027 argument to \u0027offs\u0027 to be consistent with the rest of UBIFS\n   code.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e7717060ddd509e6c305ad7bf5a090a95e91c8cf",
      "tree": "03869be56858dfc5226a94129d528714838e4dc0",
      "parents": [
        "28488fc28aa39815b78c2cbeaaf25f33fef92ce8"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 17:43:43 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:32 2011 +0300"
      },
      "message": "UBIFS: add global debugfs knobs\n\nNow we have per-FS (superblock) debugfs knobs, but they have one drawback - you\nhave to first mount the FS and only after this you can switch self-checks\non/off. But often we want to have the checks enabled during the mount.\nIntroduce global debugging knobs for this purpose.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "28488fc28aa39815b78c2cbeaaf25f33fef92ce8",
      "tree": "b2f50655effb1e067af15b22c91f591173e3761c",
      "parents": [
        "7dae997de62bbd78f12305bf10019ec8f1103bd4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 09:58:23 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:32 2011 +0300"
      },
      "message": "UBIFS: introduce debugfs helpers\n\nSeparate out pieces of code from the debugfs file read/write functions and\ncreate separate \u0027interpret_user_input()\u0027/\u0027provide_user_output()\u0027 helpers. These\nhelpers will be needed in one of the following patches, so this is just a\npreparational change.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7dae997de62bbd78f12305bf10019ec8f1103bd4",
      "tree": "0f26a540ea6f2857d4d0f0cbb5212b1618f9f241",
      "parents": [
        "24a4f8009ee9e259a412d86373e0d2aac3a80333"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 15:44:14 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:32 2011 +0300"
      },
      "message": "UBIFS: re-arrange debugging code a bit\n\nMove \u0027dbg_debugfs_init()\u0027 and \u0027dbg_debugfs_exit()\u0027 functions which initialize\ndebugfs for whole UBIFS subsystem below the code which initializes debugfs for\na particular UBIFS instance. And do the same for \u0027ubifs_debugging_init()\u0027 and\n\u0027ubifs_debugging_exit()\u0027 functions. This layout is a bit better for the next\npatches, so this is just a preparation.\n\nAlso, rename \u0027open_debugfs_file()\u0027 into \u0027dfs_file_open()\u0027 for consistency.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "24a4f8009ee9e259a412d86373e0d2aac3a80333",
      "tree": "4ec4d21471e6fe770d3300ae41f1ca4a142b6b77",
      "parents": [
        "81e79d38df5a17bb1c738a14f8e5f3412fb33afa"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 15:23:25 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:30 2011 +0300"
      },
      "message": "UBIFS: be more informative in failure mode\n\nWhen we are testing UBIFS recovery, it is better to print in which eraseblock\nwe are going to fail. Currently UBIFS prints it only if recovery debugging\nmessages are enabled, but this is not very practical. So change \u0027dbg_rcvry()\u0027\nmessages to \u0027ubifs_warn()\u0027 messages.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "81e79d38df5a17bb1c738a14f8e5f3412fb33afa",
      "tree": "88f88631a6e10ec9fd83261ceee195e283be57eb",
      "parents": [
        "8d7819b4af697eec45339cc24db7c3fe45fea0e7"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 18:16:34 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:28 2011 +0300"
      },
      "message": "UBIFS: switch self-check knobs to debugfs\n\nUBIFS has many built-in self-check functions which can be enabled using the\ndebug_chks module parameter or the corresponding sysfs file\n(/sys/module/ubifs/parameters/debug_chks). However, this is not flexible enough\nbecause it is not per-filesystem. This patch moves this to debugfs interfaces.\n\nWe already have debugfs support, so this patch just adds more debugfs files.\nWhile looking at debugfs support I\u0027ve noticed that it is racy WRT file-system\nunmount, and added a TODO entry for that. This problem has been there for long\ntime and it is quite standard debugfs PITA. The plan is to fix this later.\n\nThis patch is simple, but it is large because it changes many places where we\ncheck if a particular type of checks is enabled or disabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8d7819b4af697eec45339cc24db7c3fe45fea0e7",
      "tree": "2a32526fbf5a4cac8a3056352efcd6b69c4785b6",
      "parents": [
        "2b1844a8c934723134ee1ff313e51d0d281cdef1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 08:53:35 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:28 2011 +0300"
      },
      "message": "UBIFS: lessen amount of debugging check types\n\nWe have too many different debugging checks - lessen the amount by merging all\nindex-related checks into one. At the same time, move the \"force in-the-gap\"\ntest to the \"index checks\" class, because it is too heavy for the \"general\"\nclass.\n\nThis patch merges TNC, Old index, and Index size check and calles this just\n\"index checks\".\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2b1844a8c934723134ee1ff313e51d0d281cdef1",
      "tree": "1c490adba95a54eb14f9b00890ce9b09050358f7",
      "parents": [
        "d808efb407e1a2cf83a8d21411157195f26bdef9"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 08:31:29 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:28 2011 +0300"
      },
      "message": "UBIFS: introduce helper functions for debugging checks and tests\n\nThis patch introduces helper functions for all debugging checks, so instead of\ndoing\n\nif (!(ubifs_chk_flags \u0026 UBIFS_CHK_GEN))\n\nwe now do\n\nif (!dbg_is_chk_gen(c))\n\nThis is a preparation to further changes where the flags will go away, and\nwe\u0027ll need to only change the helper functions, but the code which utilizes\nthem won\u0027t be touched.\n\nAt the same time this patch removes \u0027dbg_force_in_the_gaps()\u0027,\n\u0027dbg_force_in_the_gaps_enabled()\u0027, and dbg_failure_mode helpers for\nconsistency.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "d808efb407e1a2cf83a8d21411157195f26bdef9",
      "tree": "a939d339288290b10b332dc6890646e68867aa20",
      "parents": [
        "bb2615d4d14777fd37e2b91bd99b92c0354813d1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 18:14:38 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: amend debugging inode size check function prototype\n\nAdd \u0027const struct ubifs_info *c\u0027 parameter to \u0027dbg_check_synced_i_size()\u0027\nfunction because we\u0027ll need it in the next patch when we switch to debugfs.\nSo this patch is just a preparation.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bb2615d4d14777fd37e2b91bd99b92c0354813d1",
      "tree": "0b8bbad1cd3e8538ce451533d4221a8a8fb1b679",
      "parents": [
        "06b282a4cc02f37414c14c94a2f154ca250cf73f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 17:47:53 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: amend debugging name check function prototype\n\nAdd \u0027struct ubifs_info *c\u0027 parameter to the \u0027dbg_check_name()\u0027 debugging\nfunction - it will be needed in one of the following commits where we switch to\ndebugfs. So this is just a preparation.\n\nMark parameters as \u0027const\u0027 while on it.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "06b282a4cc02f37414c14c94a2f154ca250cf73f",
      "tree": "058646506c1e2652de8f9d59d56f564d3b5e66b9",
      "parents": [
        "376624476921e43d8b87498161a2ffba6ab8d5aa"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 30 18:19:34 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: add few commentaries about TNC\n\nAdd a couple of comments - while looking into TNC I could not easily figure out\nfew facts, so it is a good idea to document them in the code.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "376624476921e43d8b87498161a2ffba6ab8d5aa",
      "tree": "bf0f15c4d9df8470e4c1ba0d4df648f84170ee14",
      "parents": [
        "f42eed7cba7f83197b0ffbb023e7d89a0b2fd71d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 30 14:51:20 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: use correct flags in lprops\n\nThe UBIFS lpt tree is in many aspects similar to the TNC tree, and we have\nsimilar flags for these trees. And by mistake we use the COW_ZNODE flag for\nLPT in some places, instead of the right flag COW_CNODE. And this works\nonly because these two constants have the same value.\n\nThis patch makes all the LPT code to use COW_CNODE and also changes COW_CNODE\nconstant value to make sure we do not misuse the flags any more.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f42eed7cba7f83197b0ffbb023e7d89a0b2fd71d",
      "tree": "b5590faffe190cd1401945e13c66684bec2f5b48",
      "parents": [
        "1f42596ec0a7d3d50a494d95e3f1afbd117250f8"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 30 14:45:30 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: harmonize znode flag helpers\n\nWe have 3 znode flags: cow, obsolete, dirty. For the last flag we have a\n\u0027ubifs_zn_dirty()\u0027 helper function, but for the other 2 flags we use\n\u0027test_bit()\u0027 directly.\n\nThis patch makes the situation more consistent and introduces helpers for the\nother 2 flags: \u0027ubifs_zn_cow()\u0027 and \u0027ubifs_zn_obsolete()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1f42596ec0a7d3d50a494d95e3f1afbd117250f8",
      "tree": "e0c3e0f5f75ea73ab8496ae07301e81c07c524a2",
      "parents": [
        "12e776a0882def45e7ee50918016968b392ac7bd"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 30 14:30:51 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: remove dead code\n\nRemove dead pieces of code under \"if (c-\u003emin_io_size \u003d\u003d 1)\" statement -\nwe never execute it because in UBIFS \u0027c-\u003emin_io_size\u0027 is always at least 8.\nThis are leftovers from old pre-mainline prototype.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "12e776a0882def45e7ee50918016968b392ac7bd",
      "tree": "bccc67f49b74a8f019940672ece19755133eb1b7",
      "parents": [
        "a29fa9dfa4d5d1b962825c79f19d9b6f3f15843b"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 27 15:50:39 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:27 2011 +0300"
      },
      "message": "UBIFS: remove unnecessary brackets\n\nRemove unnecessary brackets in \"inode-\u003ei_flags |\u003d (S_NOCMTIME)\" statement to\nmake the code not look silly.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "a29fa9dfa4d5d1b962825c79f19d9b6f3f15843b",
      "tree": "bd7aa3733a869c69038b4474229fbc9ada002cbf",
      "parents": [
        "1b51e98365e42c27eb2664f8353bc62ab8c55c85"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 09:43:34 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: minor cleanup: use S_ISREG helper\n\nInstead of using long \"(inode-\u003ei_mode \u0026 S_IFMT) !\u003d S_IFREG\" expression, use\nshorted \"!S_ISREG(inode-\u003ei_mode)\".\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1b51e98365e42c27eb2664f8353bc62ab8c55c85",
      "tree": "1c696ab1f78d2bed3b2a9a31e456a69bec3da20e",
      "parents": [
        "4315fb4072905e45da94d51e2c1e86fa41c5fc5f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed May 25 17:38:29 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: rename dbg_check_dir_size function\n\nSince this function is not only about size checking, rename it to\n\u0027dbg_check_dir()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "4315fb4072905e45da94d51e2c1e86fa41c5fc5f",
      "tree": "e8e5f514cddf7b0d13cfe71897a83019da58da5c",
      "parents": [
        "bfcf677decd8051c305b1d8fda407d069c2361e3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed May 25 17:32:42 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: improve inode dumping function\n\nTeach \u0027dbg_dump_inode()\u0027 dump directory entries for directory inodes.\nThis requires few additional changes:\n1. The \u0027c\u0027 argument of \u0027dbg_dump_inode()\u0027 cannot be const any more.\n2. Users of \u0027dbg_dump_inode()\u0027 should not have \u0027tnc_mutex\u0027 locked.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bfcf677decd8051c305b1d8fda407d069c2361e3",
      "tree": "ae3b439d285bc1fb3d03287c02d5fdd613a33142",
      "parents": [
        "ae380ce04731579f45f27b3a84d7d8d8ee1f9b1b"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 24 14:10:03 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: dump stack when pnode or nnode reading fails\n\nWhen we fail to read a pnode or nnode - print stacktrace if debugging is enabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ae380ce04731579f45f27b3a84d7d8d8ee1f9b1b",
      "tree": "f887f69b40899eb6bc5a61554da9485100ed2f89",
      "parents": [
        "549c999a768a7a144c60a0faa58f34c48f39112b"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 19 14:13:16 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: lessen the size of debugging info data structure\n\nThis patch lessens the \u0027struct ubifs_debug_info\u0027 size by 90 bytes by\nallocating less bytes for the debugfs root directory name. It introduces macros\nfor the name patter an length instead of hard-coding 100 bytes. It also makes\nUBIFS use \u0027snprintf()\u0027 and teaches it to gracefully catch situations when the\nname array is too short.\n\nAdditionally, this patch makes 2 unrelated changes - I just thought they do not\ndeserve separate commits: simplifies \u0027ubifs_assert()\u0027 for non-debugging case\nand makes \u0027dbg_debugfs_init()\u0027 properly verify debugfs return code which may be\nan error code or NULL, so we should you \u0027IS_ERR_OR_NULL()\u0027 instead of\n\u0027IS_ERR()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "549c999a768a7a144c60a0faa58f34c48f39112b",
      "tree": "c1bdefb19fafb74164331c21ebaee7b2a987441c",
      "parents": [
        "b0af8dfdd67699e25083478c63eedef2e72ebd85"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 16:57:14 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "dedekind1@gmail.com",
        "time": "Mon Jul 04 10:54:26 2011 +0300"
      },
      "message": "UBIFS: return EROFS in case of broken commit\n\nIf commit failed and it is in broken state, UBIFS switches to R/O mode. Most\noperations return -EROFS in this case, except of commit which returns -EINVAL.\nMake it return -EROFS too for consistency. This is also important for our power\ncut emulation testing.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "185bf87393afe6b966881e36c459949d90930a7a",
      "tree": "203f91dbfdb21f29de119cf79ccfed3bf2b15d31",
      "parents": [
        "8b97b21e0f4f59801d05a5c536417f04ecfb5603"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Mon Jun 20 10:10:24 2011 +0300"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jun 20 10:42:34 2011 -0400"
      },
      "message": "ubifs: dereferencing an ERR_PTR in ubifs_mount()\n\nd251ed271d5 \"ubifs: fix sget races\" left out the goto from this\nerror path so the static checkers complain that we\u0027re dereferencing\n\"sb\" when it\u0027s an ERR_PTR.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "d251ed271d528afb407cc2ede30923e34cb209a5",
      "tree": "b77e0133453057821ee50956c560013acb467c4c",
      "parents": [
        "b1c27ab3f93daede979f804afc38b189c2f17c60"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 12 10:24:33 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 12 17:45:34 2011 -0400"
      },
      "message": "ubifs: fix sget races\n\n* allocate ubifs_info in -\u003emount(), fill it enough for sb_test() and\nset -\u003es_fs_info to it in set() callback passed to sget().\n* do *not* free it in -\u003eput_super(); do that in -\u003ekill_sb() after we\u0027d\ndone kill_anon_super().\n* don\u0027t free it in ubifs_fill_super() either - deactivate_locked_super()\ndone by caller when ubifs_fill_super() returns an error will take care\nof that sucker.\n* get rid of kludge with passing ubi to ubifs_fill_super() in -\u003es_fs_info;\nwe only need it in alloc_ubifs_info(), so ubifs_fill_super() will need\nonly ubifs_info.  Which it will find in -\u003es_fs_info just fine, no need to\nreassign anything...\n\nAs the result, sb_test() becomes safe to apply to all superblocks that\ncan be found by sget() (and a kludge with temporary use of -\u003es_fs_info\nto store a pointer to very different structure goes away).\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b1c27ab3f93daede979f804afc38b189c2f17c60",
      "tree": "469479c334b7e346708b17e269e399e073a8098f",
      "parents": [
        "ff78fca2a03c08436535d3f7152a30752d8131d1"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 12 10:07:03 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jun 12 17:45:32 2011 -0400"
      },
      "message": "ubifs: split allocation of ubifs_info into a separate function\n\npreparation to ubifs sget() race fixes\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "098011940a2549ae7182db4bf101c3e3d2b4e6df",
      "tree": "2c4c1e51beee85fba008a81598a58efffa1443d0",
      "parents": [
        "781c5717a95a74b294beb38b8276943b0f8b5bb4"
      ],
      "author": {
        "name": "Ben Gardiner",
        "email": "bengardiner@nanometrics.ca",
        "time": "Mon May 30 14:56:16 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:31 2011 +0300"
      },
      "message": "UBIFS: fix-up free space earlier\n\nThe free space fixup is currently initiated during mount after the call to\nubifs_write_master() which results in a write to PEBs; this has been observed\nwith the patch \u0027assert no fixup when writing a node\u0027 applied:\n\nMove the free space fixup on mount to before the calls to\nubifs_recover_inl_heads() and ubifs_write_master(). This results in no\nassertions with the previously mentioned patch applied.\n\nArtem: tweaked the patch a bit\n\nSigned-off-by: Ben Gardiner \u003cbengardiner@nanometrics\u003e\nReviewed-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "781c5717a95a74b294beb38b8276943b0f8b5bb4",
      "tree": "ed8dfe3b7066e6d0854e381f46712c7280b2f05e",
      "parents": [
        "4f1ab9b01d34eac9fc958f7150d3bf266dcc1685"
      ],
      "author": {
        "name": "Ben Gardiner",
        "email": "bengardiner@nanometrics.ca",
        "time": "Mon May 30 14:56:15 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:31 2011 +0300"
      },
      "message": "UBIFS: intialize LPT earlier\n\nThe current \u0027mount_ubifs()\u0027 implementation does not initialize the LPT until the\nthe master node is marked dirty. Move the LPT initialization to before marking\nthe master node dirty. This is a preparation for the next patch which will move\nthe free-space-fixup check to before marking the master node dirty, because we\nhave to fix-up the free space before doing any writes.\n\nArtem: massaged the patch and commit message.\n\nSigned-off-by: Ben Gardiner \u003cbengardiner@nanometrics.ca\u003e\nReviewed-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "4f1ab9b01d34eac9fc958f7150d3bf266dcc1685",
      "tree": "77ff5efa6449743984e77f491902fa53f7716969",
      "parents": [
        "837072377034d0a0b18b851d1ab95676b245cc0a"
      ],
      "author": {
        "name": "Ben Gardiner",
        "email": "bengardiner@nanometrics.ca",
        "time": "Mon May 30 14:56:14 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:31 2011 +0300"
      },
      "message": "UBIFS: assert no fixup when writing a node\n\nThe current free space fixup can result in some writing to the UBI volume\nwhen the space_fixup flag is set.\n\nTo catch instances where UBIFS is writing to the NAND while the space_fixup\nflag is set, add an assert to ubifs_write_node().\n\nArtem: tweaked the patch, added similar assertion to the write buffer\n       write path.\n\nSigned-off-by: Ben Gardiner \u003cbengardiner@nanometrics.ca\u003e\nReviewed-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "837072377034d0a0b18b851d1ab95676b245cc0a",
      "tree": "7020b369ac3373f292d59fe5fd470f73ecb69897",
      "parents": [
        "812eb258311f89bcd664a34a620f249d54a2cd83"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 14:26:07 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:31 2011 +0300"
      },
      "message": "UBIFS: fix clean znode counter corruption in error cases\n\nUBIFS maintains per-filesystem and global clean znode counters\n(\u0027c-\u003eclean_zn_cnt\u0027 and \u0027ubifs_clean_zn_cnt\u0027). It is important to maintain\ncorrect values there since the shrinker relies on \u0027ubifs_clean_zn_cnt\u0027.\n\nHowever, in case of failures during commit the counters were corrupted. E.g.,\nif a failure happens in the middle of \u0027write_index()\u0027, then some nodes in the\ncommit list (\u0027c-\u003ecnext\u0027) are marked as clean, and some are marked as dirty. And\nthe \u0027ubifs_destroy_tnc_subtree()\u0027 frees does not retrun correct count, and we\nend up with non-zero \u0027c-\u003eclean_zn_cnt\u0027 when unmounting. This means that if we\nhave 2 file-sytem and one of them fails, and we unmount it,\n\u0027ubifs_clean_zn_cnt\u0027 stays incorrect and confuses the shrinker.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "812eb258311f89bcd664a34a620f249d54a2cd83",
      "tree": "2b1598190efd598cfbdff30fbca302426f796e3a",
      "parents": [
        "cf610bf4199770420629d3bc273494bd27ad6c1d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 08:40:40 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:31 2011 +0300"
      },
      "message": "UBIFS: fix memory leak on error path\n\nUBIFS leaks memory on error path in \u0027ubifs_jnl_update()\u0027 in case of write\nfailure because it forgets to free the \u0027struct ubifs_dent_node *dent\u0027 object.\nAlthough the object is small, the alignment can make it large - e.g., 2KiB\nif the min. I/O unit is 2KiB.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "cf610bf4199770420629d3bc273494bd27ad6c1d",
      "tree": "76418cad3b35d8b40090ae13d5100de598e6c4cb",
      "parents": [
        "da8b94ea61c5d80aae0cc7b7541f1e0fa7459391"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 31 07:03:21 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Jun 03 18:12:24 2011 +0300"
      },
      "message": "UBIFS: fix shrinker object count reports\n\nSometimes VM asks the shrinker to return amount of objects it can shrink,\nand we return the ubifs_clean_zn_cnt in that case. However, it is possible\nthat this counter is negative for a short period of time, due to the way\nUBIFS TNC code updates it. And I can observe the following warnings sometimes:\n\nshrink_slab: ubifs_shrinker+0x0/0x2b7 [ubifs] negative objects to delete nr\u003d-8541616642706119788\n\nThis patch makes sure UBIFS never returns negative count of objects.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "da8b94ea61c5d80aae0cc7b7541f1e0fa7459391",
      "tree": "5d0b7c64b7f5afd9c9b2c528ed08e7d8a0d97859",
      "parents": [
        "efcfde54ca68091b164f9aec544c7233a9760aff"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 08:58:19 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 12:29:06 2011 +0300"
      },
      "message": "UBIFS: fix recovery broken by the previous recovery fix\n\nUnfortunately, the recovery fix d1606a59b6be4ea392eabd40d1250aa1eeb19efb\n(UBIFS: fix extremely rare mount failure) broke recovery. This commit make\nUBIFS drop the last min. I/O unit in all journal heads, but this is needed only\nfor the GC head. And this does not work for non-GC heads. For example, if\nsuppose we have min. I/O units A and B, and A contains a valid node X, which\nwas fsynced, and then a group of nodes Y which spans the rest of A and B. In\nthis case we\u0027ll drop not only Y, but also X, which is obviously incorrect.\n\nThis patch fixes the issue and additionally makes recovery to drop last min.\nI/O unit only for the GC head, and leave things as they have been for ages for\nthe other heads - this is safer.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "efcfde54ca68091b164f9aec544c7233a9760aff",
      "tree": "f94cd590448a23c2ba7c6566dcbeb72eb3f3dd1d",
      "parents": [
        "1a0b06997ceca96db9259e537eb935f9fe59a3de"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 08:36:52 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 12:29:06 2011 +0300"
      },
      "message": "UBIFS: amend ubifs_recover_leb interface\n\nInstead of passing \"grouped\" parameter to \u0027ubifs_recover_leb()\u0027 which tells\nwhether the nodes are grouped in the LEB to recover, pass the journal head\nnumber and let \u0027ubifs_recover_leb()\u0027 look at the journal head\u0027s \u0027grouped\u0027 flag.\n\nThis patch is a preparation to a further fix where we\u0027ll need to know the\njournal head number for other purposes.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1a0b06997ceca96db9259e537eb935f9fe59a3de",
      "tree": "0428c1bb46987ae0deb05061d74f8c639ac879c8",
      "parents": [
        "ab75950b11e74145ffe61376ac073d56645aab8a"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 08:26:05 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 12:29:06 2011 +0300"
      },
      "message": "UBIFS: introduce a \"grouped\" journal head flag\n\nJournal heads are different in a way how UBIFS writes nodes there. All normal\njournal heads receive grouped nodes, while the GC journal heads receives\nungrouped nodes. This patch adds a \u0027grouped\u0027 flag to \u0027struct ubifs_jhead\u0027 which\ndescribes this property.\n\nThis patch is a preparation to a further recovery fix.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ab75950b11e74145ffe61376ac073d56645aab8a",
      "tree": "8c4a2548e00f6ed83fc209edcccc729fac76708e",
      "parents": [
        "55922c9d1b84b89cb946c777fddccb3247e7df2c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 26 06:51:48 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Jun 01 12:29:05 2011 +0300"
      },
      "message": "UBIFS: supress false error messages\n\nCommit ab51afe05273741f72383529ef488aa1ea598ec6 was a good clean-up, but\nit introduced a regression - now UBIFS prints scary error messages during\nrecovery on all corrupted nodes, even though the corruptions are expected\n(due to a power cut). This patch fixes the issue.\n\nAdditionally fix a typo in a commentary introduced by the same commit.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ef1d57599dc904fdb31b8e9b5336350d21a1fde1",
      "tree": "4e3f7d49c5a8c27efd5a1009131f4b3f87eff503",
      "parents": [
        "bc658c96037fc87463f0703ad2ea7c895344cb7e"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Sun May 29 13:46:08 2011 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 29 11:17:34 2011 -0700"
      },
      "message": "cifs/ubifs: Fix shrinker API change fallout\n\nCommit 1495f230fa77 (\"vmscan: change shrinker API by passing\nshrink_control struct\") changed the API of -\u003eshrink(), but missed ubifs\nand cifs instances.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e54ec1c3a002a9d5e57b5ac73a934cc15a0fe06",
      "tree": "6504d32b3d3e1a3dadc7d7083b5614702f479808",
      "parents": [
        "dfb55de89879a1c32a70d0a510b3701ed9a6b855"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri May 27 13:42:00 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat May 28 01:02:51 2011 -0400"
      },
      "message": "ubifs: remove unnecessary dentry_unhash from rmdir, dir rename\n\nubifs does not have problems with references to unlinked directories.\n\nCC: Artem Bityutskiy \u003cdedekind1@gmail.com\u003e\nCC: Adrian Hunter \u003cadrian.hunter@nokia.com\u003e\nCC: linux-mtd@lists.infradead.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "aa38572954ade525817fe88c54faebf85e5a61c0",
      "tree": "ef398ec06c97134592f62a49c99f3f80041b427c",
      "parents": [
        "d6e9bd256c88ce5f4b668249e363a74f51393daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri May 27 06:53:02 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri May 27 07:04:40 2011 -0400"
      },
      "message": "fs: pass exact type of data dirties to -\u003edirty_inode\n\nTell the filesystem if we just updated timestamp (I_DIRTY_SYNC) or\nanything else, so that the filesystem can track internally if it\nneeds to push out a transaction for fdatasync or not.\n\nThis is just the prototype change with no user for it yet.  I plan\nto push large XFS changes for the next merge window, and getting\nthis trivial infrastructure in this window would help a lot to avoid\ntree interdependencies.\n\nAlso remove incorrect comments that -\u003edirty_inode can\u0027t block.  That\nhas been changed a long time ago, and many implementations rely on it.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "32e51f141fd8d880f57b6a2eb53ce72856254d4a",
      "tree": "d8d7a0d503533a03fb07b2ebd5eccd9043f2d228",
      "parents": [
        "ca16d140af91febe25daeb9e032bf8bd46b8c31f",
        "b6ff24a333267a6810e28ee5b9fc539d149c52f0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:52:14 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 09:52:14 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (25 commits)\n  cifs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ocfs2: remove unnecessary dentry_unhash on rmdir/rename_dir\n  exofs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  nfs: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext2: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext3: remove unnecessary dentry_unhash on rmdir/rename_dir\n  ext4: remove unnecessary dentry_unhash on rmdir/rename_dir\n  btrfs: remove unnecessary dentry_unhash in rmdir/rename_dir\n  ceph: remove unnecessary dentry_unhash calls\n  vfs: clean up vfs_rename_other\n  vfs: clean up vfs_rename_dir\n  vfs: clean up vfs_rmdir\n  vfs: fix vfs_rename_dir for FS_RENAME_DOES_D_MOVE filesystems\n  libfs: drop unneeded dentry_unhash\n  vfs: update dentry_unhash() comment\n  vfs: push dentry_unhash on rename_dir into file systems\n  vfs: push dentry_unhash on rmdir into file systems\n  vfs: remove dget() from dentry_unhash()\n  vfs: dentry_unhash immediately prior to rmdir\n  vfs: Block mmapped writes while the fs is frozen\n  ...\n"
    },
    {
      "commit": "e4eaac06bcccb2a70bca6a2de9871882dce2aa14",
      "tree": "ca6736d96294cd6e65a1c3055718bfd5adc7336e",
      "parents": [
        "79bf7c732b5ff75b96022ed9d29181afd3d2509c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:07 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:48 2011 -0400"
      },
      "message": "vfs: push dentry_unhash on rename_dir into file systems\n\nOnly a few file systems need this.  Start by pushing it down into each\nrename method (except gfs2 and xfs) so that it can be dealt with on a\nper-fs basis.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "79bf7c732b5ff75b96022ed9d29181afd3d2509c",
      "tree": "74b8cc690f9a37fff02d0685464e1c695a25ef94",
      "parents": [
        "64252c75a2196a0cf1e0d3777143ecfe0e3ae650"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue May 24 13:06:06 2011 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu May 26 07:26:47 2011 -0400"
      },
      "message": "vfs: push dentry_unhash on rmdir into file systems\n\nOnly a few file systems need this.  Start by pushing it down into each\nfs rmdir method (except gfs2 and xfs) so it can be dealt with on a per-fs\nbasis.\n\nThis does not change behavior for any in-tree file systems.\n\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "56e46742e846e4de167dde0e1e1071ace1c882a5",
      "tree": "ffed000ab5bb33d482878bd72420474bdab1eec4",
      "parents": [
        "bdc1a1b6100c78a6002b1761ebe36d5fe8f8585b"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 17 15:15:30 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 23 08:22:20 2011 +0300"
      },
      "message": "UBIFS: switch to dynamic printks\n\nSwitch to debugging using dynamic printk (pr_debug()). There is no good reason\nto carry custom debugging prints if there is so cool and powerful generic\ndynamic printk infrastructure, see Documentation/dynamic-debug-howto.txt. With\ndynamic printks we can switch on/of individual prints, per-file, per-function\nand per format messages. This means that instead of doing old-fashioned\n\necho 1 \u003e /sys/module/ubifs/parameters/debug_msgs\n\nto enable general messages, we can do:\n\necho \u0027format \"UBIFS DBG gen\" +ptlf\u0027 \u003e control\n\nto enable general messages and additionally ask the dynamic printk\ninfrastructure to print process ID, line number and function name. So there is\nno reason to keep UBIFS-specific crud if there is more powerful generic thing.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bdc1a1b6100c78a6002b1761ebe36d5fe8f8585b",
      "tree": "2ae75adab61f3c3d6cd86f23329b404b33bbe3f9",
      "parents": [
        "bbf2b37a98d22d5b111f03674dd4f093dd6c0ae5"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue May 17 14:07:24 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 20 08:30:13 2011 +0300"
      },
      "message": "UBIFS: fix kernel-doc comments\n\nThis is a minor fix for UBIFS kernel-doc comments - we forgot the \"@\" symbol\nfor several \u0027struct ubifs_debug_info\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bbf2b37a98d22d5b111f03674dd4f093dd6c0ae5",
      "tree": "0d95805a339bdb7cd85b2af6bf8546e1ab02c39f",
      "parents": [
        "43e07073865ae540e3b463f437f0f837f17714ba"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 15:15:52 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 15:48:48 2011 +0300"
      },
      "message": "UBIFS: fix extremely rare mount failure\n\nThis patch fixes an extremely rare mount failure after a power cut, when mount\nfails with ENOSPC error because UBIFS could not find the GC LEB.\n\nIn short, the reason for this failure is that after recovery the GC head LEB\ncontains less free space than it had contained just before the power cut\nhappened. As a result, if the FS is full, \u0027ubifs_rcvry_gc_commit()\u0027 is unable\nto find a dirty LEB to GC and a free LEB, so mount fails.\n\nThis patch contains a huge comment with more detailed explanation, please refer\nthat comment.\n\nSince this is really really rare and unlikely situation, I do not send this\npatch to the stable tree, also because it requires a lot of preparation\npatches which I did before. So sending this to -stable would be too risky.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "43e07073865ae540e3b463f437f0f837f17714ba",
      "tree": "41d145642dd7e8dc3da4e94c075daee61a71867f",
      "parents": [
        "7c47bfd0dbb20e5d7fa4e37cfd76bb73d39b32b4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:21:51 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 15:48:48 2011 +0300"
      },
      "message": "UBIFS: simplify LEB recovery function further\n\nFurther simplify \u0027ubifs_recover_leb()\u0027 by noticing that we have to call\n\u0027clean_buf()\u0027 in any case, and it is fine to call it if the offset is\naligned to \u0027c-\u003emin_io_size\u0027. Thus, we do not have to call it separately\nfrom every \"if\" - just call it once at the end.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7c47bfd0dbb20e5d7fa4e37cfd76bb73d39b32b4",
      "tree": "277a373b3262229f31d3a2733a55cacaac5e5ef7",
      "parents": [
        "617992069513c1e789c707c4d75ff03bf7dd0fb0"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 13:44:48 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 15:48:48 2011 +0300"
      },
      "message": "UBIFS: always cleanup the recovered LEB\n\nNow when we call \u0027ubifs_recover_leb()\u0027 only for LEBs which are potentially\ncorrupted (i.e., only for last buds, not for all of them), we can cleanup every\nLEB, not only those where we find corruption. The reason - unstable bits. Even\nthough the LEB may look good now, it might contain unstable bits which may hit\nus a bit later.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "617992069513c1e789c707c4d75ff03bf7dd0fb0",
      "tree": "04ee36190d991f0b7836fff0a666b9847bf32d92",
      "parents": [
        "9d510db423303b4f3555074dd7bdd0d692e432a4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 13:41:55 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 15:48:48 2011 +0300"
      },
      "message": "UBIFS: clean up LEB recovery function\n\nThis patch cleans up \u0027ubifs_recover_leb()\u0027 function and makes it more readable.\nMove things which are done only once out of the loop and kill unneeded \u0027switch\u0027\nstatement.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "9d510db423303b4f3555074dd7bdd0d692e432a4",
      "tree": "e05516d94fe62492e41b7ccc219db8abfe1c6ab8",
      "parents": [
        "6554a6578131a217d4ea6d779a62f120081a2e8b"
      ],
      "author": {
        "name": "Matthew L. Creech",
        "email": "mlcreech@gmail.com",
        "time": "Fri May 06 18:58:23 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:12:15 2011 +0300"
      },
      "message": "UBIFS: fix-up free space on mount if flag is set\n\nIf a UBIFS filesystem is being mounted read-write, or is being remounted\nfrom read-only to read-write, check for the \"space_fixup\" flag and fix\nall LEBs containing empty space if necessary.\n\nArtem: tweaked the patch a bit\n\nSigned-off-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "6554a6578131a217d4ea6d779a62f120081a2e8b",
      "tree": "6be11a0c552de1cc91af01e0011badc4ca185b39",
      "parents": [
        "9f58d3503a1368673609db1962e4a584261b62eb"
      ],
      "author": {
        "name": "Matthew L. Creech",
        "email": "mlcreech@gmail.com",
        "time": "Fri May 06 18:58:22 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:12:15 2011 +0300"
      },
      "message": "UBIFS: add the fixup function\n\nThis patch adds the \u0027ubifs_fixup_free_space()\u0027 function which scans all\nLEBs in the filesystem for those that are in-use but have one or more\nempty pages, then re-maps the LEBs in order to erase the empty portions.\nAfterward it removes the \"space_fixup\" flag from the UBIFS superblock.\n\nArtem: massaged the patch\n\nSigned-off-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "9f58d3503a1368673609db1962e4a584261b62eb",
      "tree": "9b31f7f6f6c8513d80b5e807f029d225c9be9b25",
      "parents": [
        "e11602ea3e43392904db7a579dc990062ebb7151"
      ],
      "author": {
        "name": "Matthew L. Creech",
        "email": "mlcreech@gmail.com",
        "time": "Thu May 05 16:33:20 2011 -0400"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:12:14 2011 +0300"
      },
      "message": "UBIFS: add a superblock flag for free space fix-up\n\nThe \u0027space_fixup\u0027 flag can be set in the superblock of a new filesystem by\nmkfs.ubifs to indicate that any eraseblocks with free space remaining should be\nfixed-up the first time it\u0027s mounted (after which the flag is un-set). This\nmeans that the UBIFS image has been flashed by a \"dumb\" flasher and the free\nspace has been actually programmed (writing all 0xFFs), so this free space\ncannot be used. UBIFS fixes the free space up by re-writing the contents of all\nLEBs with free space using the atomic LEB change UBI operation.\n\nArtem: improved commit message, add some more commentaries to the code.\n\nSigned-off-by: Matthew L. Creech \u003cmlcreech@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e11602ea3e43392904db7a579dc990062ebb7151",
      "tree": "3930553264a369773cc1f66aa33b790d17589a40",
      "parents": [
        "91c66083fca36cdf496e927ef8bea19e6b1bbdce"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 17:52:32 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:12:12 2011 +0300"
      },
      "message": "UBIFS: share the next_log_lnum helper\n\nWe\u0027ll need to use the \u0027next_log_lnum()\u0027 helper function from log.c in the fixup\ncode, so let\u0027s move it to misc.h. IOW, this is a preparation to the following\nfree space fixup changes.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "91c66083fca36cdf496e927ef8bea19e6b1bbdce",
      "tree": "8298bc056e929e1c946b1b2d6acbcc21dd54e235",
      "parents": [
        "cb14a18465686ea6add51b1008865b8174c28bd7"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 13:11:00 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 14:11:25 2011 +0300"
      },
      "message": "UBIFS: expect corruption only in last journal head LEBs\n\nThis patch improves UBIFS recovery and teaches it to expect corruption only\nin the last buds. Indeed, currently we just recover all buds, which is\nincorrect because only the last buds can have corruptions in case of a power\ncut. So it is inconsistent with the rest of the recovery strategy which tries\nhard to distinguish between corruptions cause by power cuts and other types of\ncorruptions.\n\nThis patch also adds one quirk - a bit older UBIFS was could have corruption in\nthe next to last bud because of the way it switched buds: when bud A is full,\nit first searched for the next bud B, the wrote a reference node to the log\nabout B, and then synchronized the write-buffer of A. So we could end up with\nbuds A and B, where B is the last, but A had corruption. The UBIFS behavior\nwas fixed, though, so currently it always first synchronizes A\u0027s write-buffer\nand only after this adds B to the log. However, to be make sure that we handle\nunclean (after a power cut) UBIFS images belonging to older UBIFS - we need to\nadd a quirk and keep it for some time: we need to check for the situation\ndescribed above.\n\nThankfully, it is easy to check for that situation. When UBIFS adds B to the\nlog, it always first unmaps B, then maps it, and then syncs A\u0027s write-buffer.\nThus, in that situation we can check that B is empty, in which case it is OK to\nhave corruption in A. To check that B is empty it is enough to just read the\nfirst few bytes of the bud and compare them with 0xFFs. This quirk may be\nremoved in a couple of years.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "cb14a18465686ea6add51b1008865b8174c28bd7",
      "tree": "9e1b7aa466e83c77628fa74af00049893db84c40",
      "parents": [
        "c49139d8096dc1c392455dbc3f158b46038fc9d4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 14:51:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:41 2011 +0300"
      },
      "message": "UBIFS: synchronize write-buffer before switching to the next bud\n\nCurrently when UBIFS fills up the current bud (which is the last in the journal\nhead) and switches to the next bud, it first writes the log reference node for\nthe next bud and only after this synchronizes the write-buffer of the previous\nbud. This is not a big deal, but an unclean power cut may lead to a situation\nwhen we have corruption in a next-to-last bud, although it is much more logical\nthat we have to have corruption only in the last bud.\n\nThis patch also removes write-buffer synchronization from\n\u0027ubifs_wbuf_seek_nolock()\u0027 because this is not needed anymore (we synchronize\nthe write-buffer explicitly everywhere now) and also because this is just\nprone to various errors.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "c49139d8096dc1c392455dbc3f158b46038fc9d4",
      "tree": "cc0eaf76b5221fccc6f67ba616dd00be053de038",
      "parents": [
        "e76a452640dc110147f7a7da1dcfb1c5026f982d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 12:40:46 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:41 2011 +0300"
      },
      "message": "UBIFS: remove BUG statement\n\nRemove a \u0027BUG()\u0027 statement when we are unable to find a bud and add a\nsimilar \u0027ubifs_assert()\u0027 statement instead.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e76a452640dc110147f7a7da1dcfb1c5026f982d",
      "tree": "20a6a5716e655817022c7c69d46d56c95161d06c",
      "parents": [
        "debf12d54182b324a01c4276b003669c94b7b531"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 12:34:29 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:41 2011 +0300"
      },
      "message": "UBIFS: change bud replay function conventions\n\nThis is a minor preparation patch which changes \u0027replay_bud()\u0027 interface -\ninstead of passing bud lnum, offs, jhead, etc directly, pass a pointer to the\nbud entry which contains all the information. The bud entry will be also needed\nin one of the following patches.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "debf12d54182b324a01c4276b003669c94b7b531",
      "tree": "972640a41690e8946bd89636765cbaa6a5aa63f5",
      "parents": [
        "074bcb9b5ce698bd7b02ddb469da9cba21fe83fd"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 12:05:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:40 2011 +0300"
      },
      "message": "UBIFS: substitute the replay tree with a replay list\n\nThis patch simplifies replay even further - it removes the replay tree and\nadds the replay list instead. Indeed, we just do not need to use a tree here -\nall we need to do is to add all nodes to the list and then sort it. Using\nRB-tree is an overkill - more code and slower. And since we replay buds in\norder, we expect the nodes to follow in _mostly_ sorted order, so the merge\nsort becomes much cheaper in average than an RB-tree.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "074bcb9b5ce698bd7b02ddb469da9cba21fe83fd",
      "tree": "98a46a995a17e7199116a9c3970f9299a16effcc",
      "parents": [
        "af1dd412646a58b29522f93f7befa944d7d361c0"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 11:37:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:40 2011 +0300"
      },
      "message": "UBIFS: simplify replay\n\nThis patch simplifies the replay code and makes it smaller. First of all, we\ncan notice that we do not really need to create bud replay entries and insert\nthem to the replay tree, because the only reason we do this is to set buds\nlprops correctly at the end. Instead, we can just walk the list of buds at the\nvery end and set lprops for each bud. This allows us to get rid of whole\n\u0027insert_ref_node()\u0027 function, the \u0027REPLAY_REF\u0027 flag, and several fields in\n\u0027struct replay_entry\u0027. Then we can also notice that we do not need the \u0027flags\u0027\n\u0027struct replay_entry\u0027 field, because there is only one flag -\n\u0027REPLAY_DELETION\u0027. Instead, we can just add a \u0027deletion\u0027 bit fields. As a\nresult, this patch deletes much more lines that in adds.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "af1dd412646a58b29522f93f7befa944d7d361c0",
      "tree": "fb2c3ac218d4978bec8e872264ca3afd9bf07716",
      "parents": [
        "12f338914e7f2a9ab0def09564b9e78ab45a474f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun May 15 11:14:57 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:40 2011 +0300"
      },
      "message": "UBIFS: store free and dirty space in the bud replay entry\n\nThis is just a small preparation patch which adds \u0027free\u0027 and \u0027drity\u0027 fields to\n\u0027struct bud_entry\u0027. They will be used to set bud lprops.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "12f338914e7f2a9ab0def09564b9e78ab45a474f",
      "tree": "58730ff8615d2a82fc52566cb235ce053437c0f1",
      "parents": [
        "7703f09ded1b8719d2defe0f61215b4a08702ffa"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sat May 14 17:37:47 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:40 2011 +0300"
      },
      "message": "UBIFS: remove unnecessary stack variable\n\nThis is patch removes an unnecessary \u0027offs\u0027 variable from \u0027ubifs_wbuf_write_nolock()\u0027\n- we can just keep \u0027wbuf-\u003eoffs\u0027 up-to-date instead. This patch is very minor\nthe only motivation for it was that it is cleaner to keep wbuf-\u003eoffs up-to-date\nby the time we call \u0027ubifs_leb_write()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7703f09ded1b8719d2defe0f61215b4a08702ffa",
      "tree": "4783cecf73b55e4a402e227fd5ef43a669806c44",
      "parents": [
        "e9ef7b5f25d31c5660fb4a87f4b40ac48070fcb7"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 16:02:19 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:40 2011 +0300"
      },
      "message": "UBIFS: double check that buds are replied in order\n\nCommit 52c6e6f990669deac3f370f1603815adb55a1dbd provides misleading infomation\nin the commit messages - buds are replied in order. And the real reason why\nthat fix helped is probably because it made sure we seek head even in read-only\nmode (so deferred recovery will have seeked heads).\n\nThis patch adds an assertion which will fire if we reply buds out of order.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "e9ef7b5f25d31c5660fb4a87f4b40ac48070fcb7",
      "tree": "8ae85360dd0b0eee05bc4f3f22729f1234f998cd",
      "parents": [
        "7a9c3e399389723f01be3dab50991604d2bc0409"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 13:22:19 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:39 2011 +0300"
      },
      "message": "UBIFS: make 2 functions static\n\nThis is a minor change which makes 2 functions static because they\nare not used outside the gc.c file: \u0027data_nodes_cmp()\u0027 and\n\u0027nondata_nodes_cmp()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7a9c3e399389723f01be3dab50991604d2bc0409",
      "tree": "769e44a347090f15793384f548366676e8966835",
      "parents": [
        "c839e29768059c56ef233586e66a2a66edbe93a3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 13:02:00 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:39 2011 +0300"
      },
      "message": "UBIFS: improve commentary\n\nThis is a tiny clean-up patch which improves replay commentaries.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "c839e29768059c56ef233586e66a2a66edbe93a3",
      "tree": "f4db1482edce7ccfd37d0e701b7359427080722d",
      "parents": [
        "12346037a71809197b22e223c3a719190a26172d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 12:26:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:39 2011 +0300"
      },
      "message": "UBIFS: improve debugging messages\n\nPrint a bit more information is some recovery and replay paths.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "12346037a71809197b22e223c3a719190a26172d",
      "tree": "cdb04727a8e602ecde96f4e91be453313e48864b",
      "parents": [
        "34bdc3e2578cae3162e481203a2980d55e184a73"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 21:23:25 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:39 2011 +0300"
      },
      "message": "UBIFS: dump more in the lprops debugging check\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "34bdc3e2578cae3162e481203a2980d55e184a73",
      "tree": "baeb3a1f175d381fb58e565c6f79b7758e7e5575",
      "parents": [
        "dcc50c8ee334d570cef84fc956084d567f32a8a3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 20:58:08 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:39 2011 +0300"
      },
      "message": "UBIFS: simplify lprops debugging check\n\nNow we return all errors from \u0027scan_check_cb()\u0027 directly, so we do not need\n\u0027struct scan_check_data\u0027 any more, and this patch removes it.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "dcc50c8ee334d570cef84fc956084d567f32a8a3",
      "tree": "3a8a7709df4084a82348279babd29139cd229873",
      "parents": [
        "8ca5175b02b77178a70cbb9fd7020c4938e3d3a6"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 20:47:14 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:38 2011 +0300"
      },
      "message": "UBIFS: simplify error path in lprops debugging check\n\nSimplify error path in \u0027scan_check_cb()\u0027 and stop using the special \u0027data-\u003eerr\u0027\nfield, but instead return the error code directly.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8ca5175b02b77178a70cbb9fd7020c4938e3d3a6",
      "tree": "a29fbf5c89250ce62eb0c6e7099a18a1de5b46ca",
      "parents": [
        "eaeee242c531cd4b0a4a46e8b5dd7ef504380c42"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 20:41:48 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 16 10:31:38 2011 +0300"
      },
      "message": "UBIFS: improve debugging lprops scanning a little\n\nWhen doing the lprops extra check (\u0027dbg_check_lprops()\u0027) we scan whole media.\nWe even scan empty and freeable LEBs which may contain garbage, which we handle\nafter scanning. This patch teach the lprops checking function\n(\u0027scan_check_cb()\u0027) to avoid scanning for free and freeable LEBs and save time.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "eaeee242c531cd4b0a4a46e8b5dd7ef504380c42",
      "tree": "7009f5a79dd67d5eb29140b8cfe4c9dc11dfcae7",
      "parents": [
        "c1f1f91d2183b91c684900b529b6c336ad3dd27c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 06 17:08:56 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:57 2011 +0300"
      },
      "message": "UBIFS: fix a rare memory leak in ro to rw remounting path\n\nWhen re-mounting from R/O mode to R/W mode and the LEB count in the superblock\nis not up-to date, because for the underlying UBI volume became larger, we\nre-write the superblock. We allocate RAM for these purposes, but never free it.\nSo this is a memory leak, although very rare one.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "c1f1f91d2183b91c684900b529b6c336ad3dd27c",
      "tree": "a4df1e218b75bfbfa60c304a83d6364ef0320ce4",
      "parents": [
        "45cd5cddbfbdf0993dbc76d06ed77d0bf547b421"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu May 05 14:16:32 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:57 2011 +0300"
      },
      "message": "UBIFS: fix inode size debugging check failure\n\nThis patch fixes a problem with the following symptoms:\n\nUBIFS: deferred recovery completed\nUBIFS error (pid 15676): dbg_check_synced_i_size: ui_size is 11481088, synced_i_size is 11459081, but inode is clean\nUBIFS error (pid 15676): dbg_check_synced_i_size: i_ino 128, i_mode 0x81a4, i_size 11481088\n\nIt happens when additional debugging checks are enabled and we are recovering\nfrom a power cut. When we fixup corrupted inode size during recovery, we change\nthem in-place and we change ui_size as well, but not synced_i_size, which\ncauses this failure. This patch makes sure we change both fields and fixes the\nissue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "45cd5cddbfbdf0993dbc76d06ed77d0bf547b421",
      "tree": "90fb0e0924d94de9b6a5d2dc3b27841fd882c5d5",
      "parents": [
        "69f8a75a7d9db05a7ee708514d605ab74956c73e"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 02 22:34:39 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:57 2011 +0300"
      },
      "message": "UBIFS: fix debugging FS checking failure\n\nWhen the debugging self-checks are enabled, we go trough whole file-system\nafter mount and check/validate every single node referred to by the index.\nThis is implemented by the \u0027dbg_check_filesystem()\u0027 function. However, this\nfunction fails if we mount \"unclean\" file-system, i.e., if we mount the\nfile-system after a power cut. It fails with the following symptoms:\n\nUBIFS DBG (pid 8171): ubifs_recover_size: ino 937 size 3309925 -\u003e 3317760\nUBIFS: recovery deferred\nUBIFS error (pid 8171): check_leaf: data node at LEB 1000:0 is not within inode size 3309925\n\nThe reason of failure is that recovery fixed up the inode size in memory, but\nnot on the flash so far. So the value on the flash is incorrect so far,\nand would be corrected when we re-mount R/W. But \u0027check_leaf()\u0027 ignores\nthis fact and tries to validate the size of the on-flash inode, which is\nincorrect, so it fails.\n\nThis patch teaches the checking code to look at the VFS inode cache first,\nand if there is the inode in question, use that inode instead of the inode\non the flash media. This fixes the issue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "69f8a75a7d9db05a7ee708514d605ab74956c73e",
      "tree": "13ed17ef36eb390a187feb34beafc2a266dda288",
      "parents": [
        "4c9545200a3bd9e87b36475c263034a38be02e44"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 02 21:51:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:57 2011 +0300"
      },
      "message": "UBIFS: remove an unneeded check\n\nIn \u0027ubifs_recover_size()\u0027 we have an \"if (!e-\u003einode \u0026\u0026 c-\u003ero_mount)\" statement.\nBut if \u0027c-\u003ero_mount\u0027 is true, then \u0027!e-\u003einode\u0027 must always be true as well. So\nwe can remove the unnecessary \u0027!e-\u003einode\u0027 test and put an\n\u0027ubifs_assert(!e-\u003einode)\u0027 instead.\n\nThis patch also removes an extra trailing white-space in a debugging print,\nas well as adds few empty lines to \u0027ubifs_recover_size()\u0027 to make it a bit more\nreadable.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "4c9545200a3bd9e87b36475c263034a38be02e44",
      "tree": "b955afcf998294cb8e2025e4e9ddf593b91f258a",
      "parents": [
        "fe79c05f03777acf87acc54fa3ad357ed5ee3b81"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 02 21:43:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:56 2011 +0300"
      },
      "message": "UBIFS: fix debugging message\n\nWhen recovering the inode size, one of the debugging messages was printed\nincorrecly, this patches fixes it.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "fe79c05f03777acf87acc54fa3ad357ed5ee3b81",
      "tree": "2a16b31eb5e71c5133db06d6d8fa04322db6e79c",
      "parents": [
        "447442139c764fd75cf892905d0feb08a9b983ed"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 29 16:35:46 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:56 2011 +0300"
      },
      "message": "UBIFS: refactor ubifs_rcvry_gc_commit\n\nThis commits refactors and cleans up \u0027ubifs_rcvry_gc_commit()\u0027 which was quite\nuntidy, also removes the commentary which was not 100% correct.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "447442139c764fd75cf892905d0feb08a9b983ed",
      "tree": "2a3f547c28d5e28b25ce54980539e09eff6d6375",
      "parents": [
        "ec0681426526b23d3e12cf247d64676806c30b7f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 27 14:52:35 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:56 2011 +0300"
      },
      "message": "UBIFS: split ubifs_rcvry_gc_commit\n\nSplit the \u0027ubifs_rcvry_gc_commit()\u0027 function and introduce a \u0027grab_empty_leb()\u0027\nheler. This cleans \u0027ubifs_rcvry_gc_commit()\u0027 a little and makes it a bit less\nof spagetti.\n\nAlso, add a commentary which explains why it is crucial to first search for an\nempty LEB and then run commit.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "ec0681426526b23d3e12cf247d64676806c30b7f",
      "tree": "181b2a911800e86e48c40c2846291ac3e7a9df80",
      "parents": [
        "6d5904e062d5cb28b705d49a35682e0871b3f382"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 26 10:21:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:56 2011 +0300"
      },
      "message": "UBIFS: dump the stack on errors in failure mode too\n\nWhen UBIFS is in the failure mode (used for power cut emulation testing) we for\nsome reasons do not dump the stack in many places, e.g., in assertions.\nProbably at early days we had too many of them and disabled this to make the\ndevelopment easier, but then never enabled. Nowadays I sometimes observe\nassertion failures during power cut testing, but the useful stackdump is not\nprinted, which is bad. This patch makes UBIFS always print the stackdump when\ndebugging is enabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "6d5904e062d5cb28b705d49a35682e0871b3f382",
      "tree": "9133ff98bb42d66f950a4a18359e120a552c26da",
      "parents": [
        "bcdca3e10ac22c208955a63c907a0988550bc666"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 26 10:17:00 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:56 2011 +0300"
      },
      "message": "UBIFS: print useful debugging messages when cannot recover gc_lnum\n\nIf we fail to recover the gc_lnum we just return an error and it then\nit is difficult to figure out why this happened. This patch adds useful\ndebugging information which should make it easier to debug the failure.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bcdca3e10ac22c208955a63c907a0988550bc666",
      "tree": "f6afca170ebb3024a28814af050c706888f2cfaa",
      "parents": [
        "2405f5948119cdc1c28697fd3110124dad974898"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 26 10:07:50 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: remove dead GC LEB recovery piece of code\n\nThis patch removes a piece of code in \u0027ubifs_rcvry_gc_commit()\u0027 which is never\nexecuted. We call \u0027ubifs_find_dirty_leb()\u0027 function with min_space \u003d\nwbuf-\u003eoffs, so if it returns us an LEB, it is guaranteed to have at lease\n\u0027wbuf-\u003eoffs\u0027 bytes of free+dirty space. So we can remove the subsequent code\nwhich deals with \"returned LEB has less than \u0027wbuf-\u003eoffs\u0027 bytes of free+dirty\nspace\". This simplifies \u0027ubifs_rcvry_gc_commit()\u0027 a little.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2405f5948119cdc1c28697fd3110124dad974898",
      "tree": "04bad5852693a5a18cb919c298e59dbf385c1d96",
      "parents": [
        "2cd0a60cf49db4722445337b90fb06c9672f1128"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 26 09:49:32 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: remove duplicated code\n\nWe have duplicated code in \u0027ubifs_garbage_collect()\u0027 and\n\u0027ubifs_rcvry_gc_commit()\u0027, which is about handling the special case of free\nLEB. In both cases we just want to garbage-collect the LEB using\n\u0027ubifs_garbage_collect_leb()\u0027.\n\nThis patch teaches \u0027ubifs_garbage_collect_leb()\u0027 to handle free LEB\u0027s so that\nthe caller does not have to do this and the duplicated code is removed.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2cd0a60cf49db4722445337b90fb06c9672f1128",
      "tree": "4410f113a75068d65134d08309fede29090f6bf4",
      "parents": [
        "341e262f903afbb8c23133ed6e193ea6254f73c4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Apr 24 15:35:11 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: remove strange commentary\n\nRemove the following commentary from \u0027ubifs_file_mmap()\u0027:\n\n/* \u0027generic_file_mmap()\u0027 takes care of NOMMU case */\n\nI do not understand what it means, and I could not find anything relater to\nNOMMU in \u0027generic_file_mmap()\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "341e262f903afbb8c23133ed6e193ea6254f73c4",
      "tree": "5e30a1697788e1640f2d2d06c2a1a1739a0b8ff2",
      "parents": [
        "1321657d8f843641529eff26e25722158cc29349"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 22 12:11:12 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: do not change debugfs file position\n\nThis patch is a tiny improvement which removes few bytes of code.\nUBIFS debugfs files are non-seekable and the file position is ignored,\nso do not increase it in the write handler.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1321657d8f843641529eff26e25722158cc29349",
      "tree": "d3d0ad3cc1f8074f4ffb3a4700e63f0a15ee35c6",
      "parents": [
        "3b2f9a019e655f3407e4e69cdbaf8b75699b79a4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Sun Apr 24 10:53:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: fix oops in lprops dump function\n\nThe \u0027dbg_dump_lprop()\u0027 is trying to detect journal head LEBs when printing,\nso it looks at the write-buffers. However, if we are in R/O mode, we\nde-allocate the write-buffers, so \u0027dbg_dump_lprop()\u0027 oopses. This patch fixes\nthe issue.\n\nNote, this patch is not critical, it is only about the debugging code path, and\nit is unlikely that anyone but UBIFS developers would ever hit this issue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "3b2f9a019e655f3407e4e69cdbaf8b75699b79a4",
      "tree": "6cb40aec6dd430b1af32a4d20ffbe346ea6b9b3f",
      "parents": [
        "1a29af8bd740b2720caeafbffece1c0be6a9d06d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 21 15:11:33 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:55 2011 +0300"
      },
      "message": "UBIFS: use ro_mount instead of MS_RDONLY\n\nWe have our own flags indicating R/O mode, and c-\u003ero_mode is equivalent\nto MS_RDONLY. Let\u0027s be consistent and use UBIFS flags everywhere.\nThis patch is just a minor cleanup.\n\nAdditionally, add a comment that we are surprised with VFS behavior -\nas a reminder to look at this some day.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1a29af8bd740b2720caeafbffece1c0be6a9d06d",
      "tree": "ab0e9e7c327b20afbcbbc3ccf4063e8cd54a41a2",
      "parents": [
        "14ffd5d0b051b0b937df0cf3580a92f428ff70b1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 20 17:06:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:54 2011 +0300"
      },
      "message": "UBIFS: use EROFS when emulating failures\n\nWhen the debugging failure emulation is enabled and UBIFS decides to\nemulate an I/O error, it uses EIO error code. In which case UBIFS\nswitches into R/O mode later on. The for the user-space is that when\na failure is emulated, the file-system sometimes returns EIO and\nsometimes EROFS. This makes it more difficult to implement user-space\ntests for the failure mode. Let\u0027s be consistent and return EROFS in\nall the cases.\n\nThis patch is an improvement for the debugging code and does not affect\nthe functionality at all.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "14ffd5d0b051b0b937df0cf3580a92f428ff70b1",
      "tree": "aa38357d51a476e25130eb0e480515999d71efc3",
      "parents": [
        "cdd8ad6e9e78b295e71265762926342523579d10"
      ],
      "author": {
        "name": "Sedat Dilek",
        "email": "sedat.dilek@googlemail.com",
        "time": "Mon Apr 04 01:55:39 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:54 2011 +0300"
      },
      "message": "UBIFS: make xattr operations names consistent\n\nThis is just a tiny clean-up patch. The variable name for empty address\nspace operations is \"empty_aops\". Let\u0027s use consistent names for empty\ninode and file operations: \"empty_iops\" and \"empty_fops\", instead of\ninconsistent \"none_inode_operations\" and \"none_file_operations\".\n\nArtem: re-write the commit message.\n\nSigned-off-by: Sedat Dilek \u003csedat.dilek@gmail.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "cdd8ad6e9e78b295e71265762926342523579d10",
      "tree": "7bd96a6f36908b894ca4ceb0419f8da669bd5531",
      "parents": [
        "bc3f07f0906e867270fdc2006b0bbcb130a722c1"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 15:43:44 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:54 2011 +0300"
      },
      "message": "UBIFS: introduce lsave debugging\n\nTry to improve UBIFS testing coverage by randomly picking LEBs to\nstore in lsave, rather than picking them optimally. Create a debugging\nversion of \u0027populate_lsave()\u0027 for these purposes and enable it when\ngeneral debugging self-checks are enabled.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "bc3f07f0906e867270fdc2006b0bbcb130a722c1",
      "tree": "e290a98b57187896c2e5cefabc55a578f155803c",
      "parents": [
        "f1bd66afb14c25095cf6ff499c1388db423acc9e"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 13:52:20 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:54 2011 +0300"
      },
      "message": "UBIFS: make force in-the-gaps to be a general self-check\n\nUBIFS can force itself to use the \u0027in-the-gaps\u0027 commit method - the last resort\nmethod which is normally invoced very very rarely. Currently this \"force\nint-the-gaps\" debugging feature is a separate test mode. But it is a bit saner\nto make it to be the \"general\" self-test check instead.\n\nThis patch is just a clean-up which should make the debugging code look a bit\nnicer and easier to use - we have way too many debugging options.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f1bd66afb14c25095cf6ff499c1388db423acc9e",
      "tree": "9199aab4896fc9ed89213a407942bf4e49232fe0",
      "parents": [
        "8c3067e445fb25119761356c88abc39dacfb9524"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Mar 29 18:36:21 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:54 2011 +0300"
      },
      "message": "UBIFS: improve space checking debugging feature\n\nThis patch improves the \u0027dbg_check_space_info()\u0027 function which checks\nwhether the amount of space before re-mounting and after re-mounting\nis the same (remounting from R/O to R/W modes and vice-versa).\n\nThe problem is that \u0027dbg_check_space_info()\u0027 does not save the budgeting\ninformation before re-mounting, so when an error is reported, we do not\nknow why the amount of free space changed.\n\nThis patches makes the following changes:\n\n1. Teaches \u0027dbg_dump_budg()\u0027 function to accept a \u0027struct ubifs_budg_info\u0027\n   argument and print out the this argument. This way we may ask it to\n   print any saved budgeting info, no only the current one.\n2. Accordingly changes all the callers of \u0027dbg_dump_budg()\u0027 to comply with\n   the changed interface.\n3. Introduce a \u0027saved_bi\u0027 (saved budgeting info) field to\n   \u0027struct ubifs_debug_info\u0027 and save the budgeting info before re-mounting\n   there.\n4. Change \u0027dbg_check_space_info()\u0027 and make it print both old and new\n   budgeting information.\n5. Additionally, save \u0027c-\u003eigx_gc_cnt\u0027 and print it if and error happens. This\n   value contributes to the amount of free space, so we have to print it.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8c3067e445fb25119761356c88abc39dacfb9524",
      "tree": "832aafb6b5c0d5d621d014ee346c99c3c8eb9efd",
      "parents": [
        "8ff83089f8bcbd9a2e898b68f1a46487c8b6e38c"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 30 13:18:58 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: rearrange the budget dump\n\nRe-arrange the budget dump and make sure we first dump all\nthe \u0027struct ubifs_budg_info\u0027 fields, and then the other information.\nAdditionally, print the \u0027uncommitted_idx\u0027 variable.\n\nThis change is required for to the following dumping function\nenhancement where it will be possible to dump saved\n\u0027struct ubifs_budg_info\u0027 objects, not only the current one.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    }
  ],
  "next": "8ff83089f8bcbd9a2e898b68f1a46487c8b6e38c"
}
