)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "8ff83089f8bcbd9a2e898b68f1a46487c8b6e38c",
      "tree": "36b286946894a4b797d850cca67603cac89ec1f2",
      "parents": [
        "b137545c44fc0c80fb778abb0c582bda5601e8f8"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Mar 29 18:19:50 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: simplify dbg_dump_budg calling conventions\n\nThe current \u0027dbg_dump_budg()\u0027 calling convention is that the\n\u0027c-\u003espace_lock\u0027 spinlock is held. However, none of the callers\nactually use it from contects which have \u0027c-\u003espace_lock\u0027 locked,\nso all callers have to explicitely lock and unlock the spinlock.\nThis is not very sensible convention. This patch changes it and\nmakes \u0027dbg_dump_budg()\u0027 lock the spinlock instead of imposing this\nto the callers. This simplifies the code a little.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "b137545c44fc0c80fb778abb0c582bda5601e8f8",
      "tree": "fb3da759a3c64587bee8bacf408cf774adb8b09a",
      "parents": [
        "cc64f774b4acd4954abe54f5919f50d78aba1e5f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Mar 29 18:04:05 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: introduce a separate structure for budgeting info\n\nThis patch separates out all the budgeting-related information\nfrom \u0027struct ubifs_info\u0027 to \u0027struct ubifs_budg_info\u0027. This way the\ncode looks a bit cleaner. However, the main driver for this is\nthat we want to save budgeting information and print it later,\nso a separate data structure for this is helpful.\n\nThis patch is a preparation for the further debugging output\nimprovements.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "cc64f774b4acd4954abe54f5919f50d78aba1e5f",
      "tree": "9b8058302b65896e1dcf2bdac408939680fcba2e",
      "parents": [
        "c43615702f9c5957981693a4d966ed81d8fc1ecc"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 15:37:35 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: use __packed instead of __attribute__((packed))\n\nThere was an attempt to standartize various \"__attribute__\" and\nother macros in order to have potentially portable and more\nconsistent code, see commit 82ddcb040570411fc2d421d96b3e69711c670328.\n\nNote, that commit refers Rober Love\u0027s blog post, but the URL\nis broken, the valid URL is:\nhttp://blog.rlove.org/2005/10/with-little-help-from-your-compiler.html\n\nMoreover, nowadays checkpatch.pl warns about using\n__attribute__((packed)):\n\n\"WARNING: __packed is preferred over __attribute__((packed))\"\n\nIt is not a big deal for UBIFS to use __packed, so let\u0027s do it.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "c43615702f9c5957981693a4d966ed81d8fc1ecc",
      "tree": "2ebe066623e693e2f0d85a609b19a5ccd27a0993",
      "parents": [
        "1bbfc848a915081237660d898bbcf50e4a8fc59f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 15:27:40 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: fix minor stylistic issues\n\nFix several minor stylistic issues:\n* lines longer than 80 characters\n* space before closing parenthesis \u0027)\u0027\n* spaces in the indentations\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "1bbfc848a915081237660d898bbcf50e4a8fc59f",
      "tree": "50016a57e5f1e2e8f0521a49a66e5cb0ad637ff9",
      "parents": [
        "693d92a1bbc9e42681c42ed190bd42b636ca876f"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Mar 21 16:26:42 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri May 13 19:23:53 2011 +0300"
      },
      "message": "UBIFS: make debugfs files non-seekable\n\nTurn the debufs files UBIFS maintains into non-seekable. Indeed, none\nof them is supposed to be seek\u0027ed.\n\nDo this by making the \u0027.lseek()\u0027 handler to be \u0027no_llseek()\u0027 and by\nusing \u0027nonseekable_open()\u0027 in the \u0027.open()\u0027 operation.\n\nThis does mean an API break but this debugging API is only used by a couple\nof test scripts which do not rely in the \u0027llseek()\u0027 operation.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "52c6e6f990669deac3f370f1603815adb55a1dbd",
      "tree": "11e1cf3982cfffb36010faef4a77903473b89d4f",
      "parents": [
        "b50b9f408502a2ea90459ae36ba8cdc9cc005cfe"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Apr 25 18:46:31 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 02 19:23:48 2011 +0300"
      },
      "message": "UBIFS: seek journal heads to the latest bud in replay\n\nThis is the second fix of the following symptom:\n\nUBIFS error (pid 34456): could not find an empty LEB\n\nwhich sometimes happens after power cuts when we mount the file-system - UBIFS\nrefuses it with the above error message which comes from the\n\u0027ubifs_rcvry_gc_commit()\u0027 function. I can reproduce this using the integck test\nwith the UBIFS power cut emulation enabled.\n\nAnalysis of the problem.\n\nCurrently UBIFS replay seeks the journal heads to the last _replayed_ bud.\nBut the buds are replayed out-of-order, so the replay basically seeks journal\nheads to the \"random\" bud belonging to this head, and not to the _last_ one.\n\nThe result of this is that the GC head may be seeked to a full LEB with no free\nspace, or very little free space. And \u0027ubifs_rcvry_gc_commit()\u0027 tries to find a\nfully or mostly dirty LEB to match the current GC head (because we need to\ngarbage-collect that dirty LEB at one go, because we do not have @c-\u003egc_lnum).\nSo \u0027ubifs_find_dirty_leb()\u0027 fails and we fall back to finding an empty LEB and\nalso fail. As a result - recovery fails and mounting fails.\n\nThis patch teaches the replay to initialize the GC heads exactly to the latest\nbuds, i.e. the buds which have the largest sequence number in corresponding\nlog reference nodes.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "b50b9f408502a2ea90459ae36ba8cdc9cc005cfe",
      "tree": "07c53213eaa3017282a5876eb34037fcff4a9441",
      "parents": [
        "8e10cd74342c7f5ce259cceca36f6eba084f5d58"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Apr 25 18:17:09 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon May 02 19:23:36 2011 +0300"
      },
      "message": "UBIFS: do not free write-buffers when in R/O mode\n\nCurrently UBIFS has a small optimization - it frees write-buffers when it is\nre-mounted from R/W mode to R/O mode. Of course, when it is mounted R/O, it\ndoes not allocate write-buffers as well.\n\nThis optimization is nice but it leads to subtle problems and complications\nin recovery, which I can reproduce using the integck test. The symptoms are\nthat after a power cut the file-system cannot be mounted if we first mount\nit R/O, and then re-mount R/W - \u0027ubifs_rcvry_gc_commit()\u0027 prints:\n\nUBIFS error (pid 34456): could not find an empty LEB\n\nAnalysis of the  problem.\n\nWhen mounting R/W, the reply process sets journal heads to buds [1], but\nwhen mounting R/O - it does not do this, because the write-buffers are not\nallocated. So \u0027ubifs_rcvry_gc_commit()\u0027 works completely differently for the\nsame file-system but for the following 2 cases:\n\n1. mounting R/W after a power cut and recover\n2. mounting R/O after a power cut, re-mounting R/W and run deferred recovery\n\nIn the former case, we have journal heads seeked to the a bud, in the latter\ncase, they are non-seeked (wbuf-\u003elnum \u003d\u003d -1). So in the latter case we do not\ntry to recover the GC LEB by garbage-collecting to the GC head, but we just\ntry to find an empty LEB, and there may be no empty LEBs, so we just fail.\nOn the other hand, in the former case (mount R/W), we are able to make a GC LEB\n(@c-\u003egc_lnum) by garbage-collecting.\n\nThus, let\u0027s remove this small nice optimization and always allocate\nwrite-buffers. This should not make too big difference - we have only 3\nof them, each of max. write unit size, which is usually 2KiB. So this is\nabout 6KiB of RAM for the typical case, and only when mounted R/O.\n\n[1]: Note, currently the replay process is setting (seeking) the journal heads\nto _some_ buds, not necessarily to the buds which had been the journal heads\nbefore the power cut happened. This will be fixed separately.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e0d9fd38b750d678bf9fd07db23582f52fafa55",
      "tree": "e802c35a4543f1f55f782838cb946c81c124843a",
      "parents": [
        "1a067a22e466d2910d10d47a7125bf7ced943165"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 21 14:49:55 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 21 15:27:21 2011 +0300"
      },
      "message": "UBIFS: fix master node recovery\n\nThis patch fixes the following symptoms:\n1. Unmount UBIFS cleanly.\n2. Start mounting UBIFS R/W and have a power cut immediately\n3. Start mounting UBIFS R/O, this succeeds\n4. Try to re-mount UBIFS R/W - this fails immediately or later on,\n   because UBIFS will write the master node to the flash area\n   which has been written before.\n\nThe analysis of the problem:\n\n1. UBIFS is unmounted cleanly, both copies of the master node are clean.\n2. UBIFS is being mounter R/W, starts changing master node copy 1, and\n   a power cut happens. The copy N1 becomes corrupted.\n3. UBIFS is being mounted R/O. It notices the copy N1 is corrupted and\n   reads copy N2. Copy N2 is clean.\n4. Because of R/O mode, UBIFS cannot recover copy 1.\n5. The mount code (ubifs_mount()) sees that the master node is clean,\n   so it decides that no recovery is needed.\n6. We are re-mounting R/W. UBIFS believes no recovery is needed and\n   starts updating the master node, but copy N1 is still corrupted\n   and was not recovered!\n\nFix this problem by marking the master node as dirty every time we\nrecover it and we are in R/O mode. This forces further recovery and\nthe UBIFS cleans-up the corruptions and recovers the copy N1 when\nre-mounting R/W later.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1a067a22e466d2910d10d47a7125bf7ced943165",
      "tree": "7bd2bd95730d063bcdc1b8bf1a03bb8e540e2284",
      "parents": [
        "8c230d9a5b5ec7970139acb7e2d165d7a3fe9f9e"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 21 10:39:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Apr 21 15:27:12 2011 +0300"
      },
      "message": "UBIFS: fix false assertion warning in case of I/O failures\n\nWhen UBIFS switches to R/O mode because it detects I/O failures, then\nwhen we unmount, we still may have allocated budget, and the assertions\nwhich verify that we have not budget will fire. But it is expected to\nhave the budget in case of I/O failures, so the assertion warnings will\nbe false. Suppress them for the I/O failure case.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "8c230d9a5b5ec7970139acb7e2d165d7a3fe9f9e",
      "tree": "734751f33b8a49894df52a5c23bcb39217ba6766",
      "parents": [
        "f0e615c3cb72b42191b558c130409335812621d8"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 20 18:02:45 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 20 18:16:37 2011 +0300"
      },
      "message": "UBIFS: fix false space checking failure\n\nThis patch fixes UBIFS mount failure when the debugging support is enabled,\nwe are recovering from a power cut, we were first mounter R/O and we are\nre-mounting R/W. In this case we should not assume that the amount of free\nspace before we have re-mounted R/W and after are equivalent, because\nwhen we have mounted R/O the file-system is in a non-committed state so\nthe amount of free space is slightly smaller, due to the fact that we cannot\npredict the amount of free space precisely before we commit.\n\nThis patch fixes the issue by skipping the debugging check in case of\nrecovery. This issue was reported by Caizhiyong \u003ccaizhiyong@huawei.com\u003e\nhere: http://thread.gmane.org/gmane.linux.drivers.mtd/34350/focus\u003d34387\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReported-by: Caizhiyong \u003ccaizhiyong@huawei.com\u003e\nCc: stable@kernel.org [2.6.30+]\n"
    },
    {
      "commit": "1dcffad74183bb00e8129ba1c5bb2c9931d31bd7",
      "tree": "a7553e2f7a24fd24f3313fd15140b0200d6c56ad",
      "parents": [
        "78530bf7f2559b317c04991b52217c1608d5a58d"
      ],
      "author": {
        "name": "Maksim Rayskiy",
        "email": "maksim.rayskiy@gmail.com",
        "time": "Tue Apr 12 15:14:56 2011 -0700"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 13 11:59:09 2011 +0300"
      },
      "message": "UBIFS: fix compilation warnings when compiling with gcc 4.5\n\nWhen compiling UBIFS with CONFIG_UBIFS_FS_DEBUG not set,\ngcc-4.5.2 generates a slew of \"warning: statement with no effect\"\non references to non-void functions defined as 0.\nTo avoid these warnings, replace #defines with dummy inline functions.\n\nArtem: massage the patch a bit, also remove the duplicate\n       \u0027dbg_check_lprops()\u0027 prototype.\n\nSigned-off-by: Maksim Rayskiy \u003cmaksim.rayskiy@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "78530bf7f2559b317c04991b52217c1608d5a58d",
      "tree": "c7f34bbcee5861a1fda8482afb36b168910e7cc7",
      "parents": [
        "a6360dd37e1a144ed11e6548371bade559a1e4df"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 13 10:31:52 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Apr 13 10:43:32 2011 +0300"
      },
      "message": "UBIFS: fix oops when R/O file-system is fsync\u0027ed\n\nThis patch fixes severe UBIFS bug: UBIFS oopses when we \u0027fsync()\u0027 an\nfile on R/O-mounter file-system. We (the UBIFS authors) incorrectly\nthought that VFS would not propagate \u0027fsync()\u0027 down to the file-system\nif it is read-only, but this is not the case.\n\nIt is easy to exploit this bug using the following simple perl script:\n\nuse strict;\nuse File::Sync qw(fsync sync);\n\ndie \"File path is not specified\" if not defined $ARGV[0];\nmy $path \u003d $ARGV[0];\n\nopen FILE, \"\u003c\", \"$path\" or die \"Cannot open $path: $!\";\nfsync(\\*FILE) or die \"cannot fsync $path: $!\";\nclose FILE or die \"Cannot close $path: $!\";\n\nThanks to Reuben Dowle \u003cReuben.Dowle@navico.com\u003e for reporting about this\nissue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nReported-by: Reuben Dowle \u003cReuben.Dowle@navico.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "ccfeef0ff76ebd632ae51bc56700f0072c4f1864",
      "tree": "83ec5932dac631a455a69212b505f68f57f68cdf",
      "parents": [
        "42933bac11e811f02200c944d8562a15f8ec4ff0",
        "6bef0b67474d71e0d6484cbabcc87657a1176d8d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:31:03 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:31:03 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027for-linus\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBI: do not select KALLSYMS_ALL\n  UBI: do not compare array with NULL\n  UBI: check if we are in RO mode in the erase routine\n  UBIFS: fix debugging failure in dbg_check_space_info\n  UBIFS: fix error path in dbg_debugfs_init_fs\n  UBIFS: unify error path dbg_debugfs_init_fs\n  UBIFS: do not select KALLSYMS_ALL\n  UBIFS: fix assertion warnings\n  UBIFS: fix oops on error path in read_pnode\n  UBIFS: do not read flash unnecessarily\n"
    },
    {
      "commit": "42933bac11e811f02200c944d8562a15f8ec4ff0",
      "tree": "fcdd9afe56eb0e746565ddd1f92f22d36678b843",
      "parents": [
        "2b9accbee563f535046ff2cd382d0acaa92e130c",
        "25985edcedea6396277003854657b5f3cb31a628"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 07 11:14:49 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6\n\n* \u0027for-linus2\u0027 of git://git.profusion.mobi/users/lucas/linux-2.6:\n  Fix common misspellings\n"
    },
    {
      "commit": "7dcda1c96d7c643101d4a05579ef4512a4baa7ef",
      "tree": "62051d63c47a3df7381cdc294815e79da5ebdc93",
      "parents": [
        "929e27252e8ca69363f81f26af5eaba62cb4c572"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Tue Apr 05 23:51:48 2011 +0200"
      },
      "message": "fs: export empty_aops\n\nWith the -\u003esync_page() hook gone, we have a few users that\nadd their own static address_space_operations without any\nfunctions defined.\n\nfs/inode.c already has an empty_aops that it uses for init\npurposes. Lets export that and use it in the places where\nan otherwise empty aops was defined.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7da6443aca9be29c6948dcbd636ad50154d0bc0c",
      "tree": "e7489f3d988171c4737f46ce6120411e995ed2ac",
      "parents": [
        "95169535113073993a3ed97ecc21831657f42a80"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Apr 04 17:16:39 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 11:07:37 2011 +0300"
      },
      "message": "UBIFS: fix debugging failure in dbg_check_space_info\n\nThis patch fixes a debugging failure with which looks like this:\nUBIFS error (pid 32313): dbg_check_space_info: free space changed from 6019344 to 6022654\n\nThe reason for this failure is described in the comment this patch adds\nto the code. But in short - \u0027c-\u003efreeable_cnt\u0027 may be different before\nand after re-mounting, and this is normal. So the debugging code should\nmake sure that free space calculations do not depend on \u0027c-\u003efreeable_cnt\u0027.\n\nA similar issue has been reported here:\nhttp://lists.infradead.org/pipermail/linux-mtd/2011-April/034647.html\n\nThis patch should fix it.\n\nFor the -stable guys: this patch is only relevant for kernels 2.6.30\nonwards.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org [2.6.30+]\n"
    },
    {
      "commit": "95169535113073993a3ed97ecc21831657f42a80",
      "tree": "7f118921eb0d46effe0f9bd4e4d766ead16bd663",
      "parents": [
        "cc6a86b950d69cfe542ee0d0ff30790152936a00"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 01 10:16:17 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:46:01 2011 +0300"
      },
      "message": "UBIFS: fix error path in dbg_debugfs_init_fs\n\nThe debug interface is substandard and on error returns either\nNULL or an error code packed in the pointer. So using \"IS_ERR\"\nfor the pointers returned by debugfs function is incorrect.\nInstead, we should use IS_ERR_OR_NULL.\n\nThis path is an improved vestion of the original patch from\nPhil Carmody.\n\nReported-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\n"
    },
    {
      "commit": "cc6a86b950d69cfe542ee0d0ff30790152936a00",
      "tree": "209ac625bd17d661bc086f75615c8ac712309981",
      "parents": [
        "81354de3d8691c2dedcc686cd2c167819ff0df10"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Apr 01 10:10:52 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:46:01 2011 +0300"
      },
      "message": "UBIFS: unify error path dbg_debugfs_init_fs\n\nThis is just a small clean-up patch which simlifies and unifies the\nerror path in the dbg_debugfs_init_fs(). We have common error path\nfor all failure cases in this function except of the very first\ncase. And this patch makes the first failure case use the same\nerror path as the other cases by using the \u0027fname\u0027 and \u0027dent\u0027\nvariables.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\n"
    },
    {
      "commit": "81354de3d8691c2dedcc686cd2c167819ff0df10",
      "tree": "0e48973dcf80774eef93575effdb4982689e5909",
      "parents": [
        "c88ac00c5af70c2a0741da14b22cdcf8507ddd92"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 30 11:18:54 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:45:45 2011 +0300"
      },
      "message": "UBIFS: do not select KALLSYMS_ALL\n\nAll UBIFS needs is to make sure we stacktraces when UBIFS debugging\nis enabled. It is enough to select KALLSYMS for this, KALLSYMS_ALL\nis not necessary. Moreover, Randy Dunlap reported that UBIFS causes\nthe following Kconfig dependency warning:\n\nwarning: (UBIFS_FS_DEBUG \u0026\u0026 LOCKDEP \u0026\u0026 LATENCYTOP) selects KALLSYMS_ALL\nwhich has unmet direct dependencies (DEBUG_KERNEL \u0026\u0026 KALLSYMS)\n\nThe reason is that KALLSYMS_ALL requires DEBUG_KERNEL and KALLSYMS, so\nideally, to select KALLSYMS_ALL we\u0027d need to select DEBUG_KERNEL and\nKALLSYMS first.\n\nThis seems to be too much to select. The easiest way to go is to forget\nabout KALLSYMS_ALL and just select KALLSYMS when UBIFS debugging is\nenabled - that should be enough for stackdumps.\n\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nAcked-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\n"
    },
    {
      "commit": "c88ac00c5af70c2a0741da14b22cdcf8507ddd92",
      "tree": "5561ff6e47406f58e71eda4700c5a3f2694c6f71",
      "parents": [
        "54acbaaa523ca0bd284a18f67ad213c379679e86"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Mar 29 09:45:21 2011 +0300"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:45:09 2011 +0300"
      },
      "message": "UBIFS: fix assertion warnings\n\nThis patch fixes UBIFS assertion warnings like:\n\nUBIFS assert failed in ubifs_leb_unmap at 135 (pid 29365)\nPid: 29365, comm: integck Tainted: G          I 2.6.37-ubi-2.6+ #34\nCall Trace:\n [\u003cffffffffa047c663\u003e] ubifs_lpt_init+0x95e/0x9ee [ubifs]\n [\u003cffffffffa04623a7\u003e] ubifs_remount_fs+0x2c7/0x762 [ubifs]\n [\u003cffffffff810f066e\u003e] do_remount_sb+0xb6/0x101\n [\u003cffffffff81106ff4\u003e] ? do_mount+0x191/0x78e\n [\u003cffffffff811070bb\u003e] do_mount+0x258/0x78e\n [\u003cffffffff810da1e8\u003e] ? alloc_pages_current+0xa2/0xc5\n [\u003cffffffff81107674\u003e] sys_mount+0x83/0xbd\n [\u003cffffffff81009a12\u003e] system_call_fastpath+0x16/0x1b\n\nThey happen when we re-mount from R/O mode to R/W mode. While\nre-mounting, we write to the media, but we still have the c-\u003ero_mount\nflag set. The fix is very simple - just clear the flag before\nstarting re-mounting R/W.\n\nThese warnings are caused by the following commit:\n2ef13294d29bcfb306e0d360f1b97f37b647b0c0\n\nFor -stable guys: this bug was introduced in 2.6.38, this is materieal\nfor 2.6.38-stable.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org [2.6.38]\n"
    },
    {
      "commit": "54acbaaa523ca0bd284a18f67ad213c379679e86",
      "tree": "c6ed0d74270ef84bc605d71feaa09b0511ccece6",
      "parents": [
        "8b229c76765816796eec7ccd428f03bd8de8b525"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 19:09:54 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:40:31 2011 +0300"
      },
      "message": "UBIFS: fix oops on error path in read_pnode\n\nThanks to coverity which spotted that UBIFS will oops if \u0027kmalloc()\u0027\nin \u0027read_pnode()\u0027 fails and we dereference a NULL \u0027pnode\u0027 pointer\nwhen we \u0027goto out\u0027.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "8b229c76765816796eec7ccd428f03bd8de8b525",
      "tree": "fa8e30710d9365d0f26215d0027dd5408ee2d5fc",
      "parents": [
        "0ce790e7d736cedc563e1fb4e998babf5a4dbc3d"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 25 18:33:57 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Apr 05 10:39:40 2011 +0300"
      },
      "message": "UBIFS: do not read flash unnecessarily\n\nThis fix makes the \u0027dbg_check_old_index()\u0027 function return\nimmediately if debugging is disabled, instead of executing\nincorrect \u0027goto out\u0027 which causes UBIFS to:\n\n1. Allocate memory\n2. Read the flash\n\nOn every commit. OK, we do not commit that often, but it is\nstill silly to do unneeded I/O anyway.\n\nCredits to coverity for spotting this silly issue.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "6c5103890057b1bb781b26b7aae38d33e4c517d8",
      "tree": "e6e57961dcddcb5841acb34956e70b9dc696a880",
      "parents": [
        "3dab04e6978e358ad2307bca563fabd6c5d2c58b",
        "9d2e157d970a73b3f270b631828e03eb452d525e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 10:16:26 2011 -0700"
      },
      "message": "Merge branch \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.39/core\u0027 of git://git.kernel.dk/linux-2.6-block: (65 commits)\n  Documentation/iostats.txt: bit-size reference etc.\n  cfq-iosched: removing unnecessary think time checking\n  cfq-iosched: Don\u0027t clear queue stats when preempt.\n  blk-throttle: Reset group slice when limits are changed\n  blk-cgroup: Only give unaccounted_time under debug\n  cfq-iosched: Don\u0027t set active queue in preempt\n  block: fix non-atomic access to genhd inflight structures\n  block: attempt to merge with existing requests on plug flush\n  block: NULL dereference on error path in __blkdev_get()\n  cfq-iosched: Don\u0027t update group weights when on service tree\n  fs: assign sb-\u003es_bdi to default_backing_dev_info if the bdi is going away\n  block: Require subsystems to explicitly allocate bio_set integrity mempool\n  jbd2: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  jbd: finish conversion from WRITE_SYNC_PLUG to WRITE_SYNC and explicit plugging\n  fs: make fsync_buffers_list() plug\n  mm: make generic_writepages() use plugging\n  blk-cgroup: Add unaccounted time to timeslice_used.\n  block: fixup plugging stubs for !CONFIG_BLOCK\n  block: remove obsolete comments for blkdev_issue_zeroout.\n  blktrace: Use rq-\u003ecmd_flags directly in blk_add_trace_rq.\n  ...\n\nFix up conflicts in fs/{aio.c,super.c}\n"
    },
    {
      "commit": "fdc0ad80a4f27efcb457b49f5dd8455a3d623559",
      "tree": "189cde09de3a52aece0493385921b4dd7e096ed2",
      "parents": [
        "dc87c55120b0a5b0c4d731183f8bb348981aba65",
        "6ed09c34b7984a978a73a855f4c2e6662acc8bdb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:22:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 24 08:22:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.infradead.org/ubi-2.6\n\n* \u0027for-linus\u0027 of git://git.infradead.org/ubi-2.6:\n  UBIFS: fix assertion warning and refine comments\n  UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS\n  UBIFS: use GFP_NOFS properly\n  UBI: use GFP_NOFS properly\n"
    },
    {
      "commit": "6ed09c34b7984a978a73a855f4c2e6662acc8bdb",
      "tree": "c6177f03d1a523d1ae66c2b26ac2c8817df70b29",
      "parents": [
        "9d523cafbe0dab5a2b873ecd85c37fec9d1368f3"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 23 10:32:58 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:16:18 2011 +0200"
      },
      "message": "UBIFS: fix assertion warning and refine comments\n\nThis patch fixes the following UBIFS assertion warning:\n\nUBIFS assert failed in do_readpage at 115 (pid 199)\n[\u003cb00321b8\u003e] (unwind_backtrace+0x0/0xdc) from [\u003caf025118\u003e]\n(do_readpage+0x108/0x594 [ubifs])\n[\u003caf025118\u003e] (do_readpage+0x108/0x594 [ubifs]) from [\u003caf025764\u003e]\n(ubifs_write_end+0x1c0/0x2e8 [ubifs])\n[\u003caf025764\u003e] (ubifs_write_end+0x1c0/0x2e8 [ubifs]) from\n[\u003cb00a0164\u003e] (generic_file_buffered_write+0x18c/0x270)\n[\u003cb00a0164\u003e] (generic_file_buffered_write+0x18c/0x270) from\n[\u003cb00a08d4\u003e] (__generic_file_aio_write+0x478/0x4c0)\n[\u003cb00a08d4\u003e] (__generic_file_aio_write+0x478/0x4c0) from\n[\u003cb00a0984\u003e] (generic_file_aio_write+0x68/0xc8)\n[\u003cb00a0984\u003e] (generic_file_aio_write+0x68/0xc8) from\n[\u003caf024a78\u003e] (ubifs_aio_write+0x178/0x1d8 [ubifs])\n[\u003caf024a78\u003e] (ubifs_aio_write+0x178/0x1d8 [ubifs]) from\n[\u003cb00d104c\u003e] (do_sync_write+0xb0/0x100)\n[\u003cb00d104c\u003e] (do_sync_write+0xb0/0x100) from [\u003cb00d1abc\u003e]\n(vfs_write+0xac/0x154)\n[\u003cb00d1abc\u003e] (vfs_write+0xac/0x154) from [\u003cb00d1c10\u003e]\n(sys_write+0x3c/0x68)\n[\u003cb00d1c10\u003e] (sys_write+0x3c/0x68) from [\u003cb002d9a0\u003e]\n(ret_fast_syscall+0x0/0x2c)\n\nThe \u0027PG_checked\u0027 flag is used to indicate that the page does not\nsupposedly exist on the media (e.g., a hole or a page beyond the\ninode size), so it requires slightly bigger budget, because we have\nto account the indexing size increase. And this flag basically\ntells that the budget for this page has to be \"new page budget\".\nThe \"new page budget\" is slightly bigger than the \"existing page\nbudget\".\n\nThe \u0027do_readpage()\u0027 function has the following assertion which\nsometimes is hit: \u0027ubifs_assert(!PageChecked(page))\u0027. Obviously,\nthe meaning of this assertion is: \"I should not be asked to read\na page which does not exist on the media\".\n\nHowever, in \u0027ubifs_write_begin()\u0027 we have a small \"trick\". Notice,\nthat VFS may write pages which were not read yet, so the page data\nwere not loaded from the media to the page cache yet. If VFS tells\nthat it is going to change only some part of the page, we obviously\nhave to load it from the media. However, if VFS tells that it is\ngoing to change whole page, we do not read it from the media for\noptimization purposes.\n\nHowever, since we do not read it, we do not know if it exists on\nthe media or not (a hole, etc). So we set the \u0027PG_checked\u0027 flag\nto this page to force bigger budget, just in case.\n\nSo \u0027ubifs_write_begin()\u0027 sets \u0027PG_checked\u0027. Then we are in\n\u0027ubifs_write_end()\u0027. And VFS tells us: \"hey, for some reasons I\nchanged my mind and did not change whole page\". Frankly, I do not\nknow why this happens, but I hit this somehow on an ARM platform.\nAnd this is extremely rare.\n\nSo in this case UBIFS does the following:\n\n1. Cancels allocated budget.\n2. Loads the page from the media by calling \u0027do_readpage()\u0027.\n3. Asks VFS to repeat the whole write operation from the very\n   beginning (call \u0027-\u003ewrite_begin() again, etc).\n\nAnd the assertion warning is hit at the step 2 - remember we have\nthe \u0027PG_checked\u0027 set for this page, and \u0027do_readpage()\u0027 does not\nlike this. So this patch fixes the problem by adding step 1.5 and\ncleaning the \u0027PG_checked\u0027 before calling \u0027do_readpage()\u0027.\n\nAll in all, this patch does not fix any functionality issue, but it\nsilences UBIFS false positive warning which may happen in very very\nrare cases.\n\nAnd while on it, this patch also improves a commentary which explains\nthe reasons of setting the \u0027PG_checked\u0027 flag for the page. The old\ncommentary was a bit difficult to understand.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "9d523cafbe0dab5a2b873ecd85c37fec9d1368f3",
      "tree": "b9555d625c0c9fb6e7036e28f53eef7b118513b3",
      "parents": [
        "fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Mar 21 16:16:29 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:16:08 2011 +0200"
      },
      "message": "UBIFS: kill CONFIG_UBIFS_FS_DEBUG_CHKS\n\nSimplify UBIFS configuration menu and kill the option to enable self-check\ncompile-time. We do not really need this because we can do this run-time\nusing the module parameters or the corresponding sysfs interfaces. And\nthere is a value in simplifying the kernel configuration menu which becomes\nincreasingly large.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "fc5e58c0c4fd86881ec8ba8e46e41a07e25dc7a6",
      "tree": "21c1223c94bc366e48a7f4f5a19011f7defc7631",
      "parents": [
        "3d46b316bcc1ecb17f8e7874a8ec620c64864898"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:14:26 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Thu Mar 24 16:14:26 2011 +0200"
      },
      "message": "UBIFS: use GFP_NOFS properly\n\nThis patch fixes a brown-paperbag bug which was introduced by me:\nI used incorrect \"GFP_KERNEL | GFP_NOFS\" allocation flags to make\nsure my allocations do not cause write-back. But the correct form\nis \"GFP_NOFS\".\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "2e1496707560ecf98e9b0604622c0990f94861d3",
      "tree": "d1473b70fad31a903fedc87221680678a6c6c5f6",
      "parents": [
        "e795b71799ff0b27365020c9ddaa25d0d83f99c8"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serge@hallyn.com",
        "time": "Wed Mar 23 16:43:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:47:13 2011 -0700"
      },
      "message": "userns: rename is_owner_or_cap to inode_owner_or_capable\n\nAnd give it a kernel-doc comment.\n\n[akpm@linux-foundation.org: btrfs changed in linux-next]\nSigned-off-by: Serge E. Hallyn \u003cserge.hallyn@canonical.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Daniel Lezcano \u003cdaniel.lezcano@free.fr\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f627a8a881481598c2591c3acc122fb9be7bac4",
      "tree": "06497d25e30824500aeaf8c736c45b070f121234",
      "parents": [
        "fd57ed021990157ee5b3997c3f21c734093a9e23",
        "5d630e43284fdb0613e4e7e7dd906f27bc25b6af"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 18 10:50:27 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 18 10:50:27 2011 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6: (25 commits)\n  UBIFS: clean-up commentaries\n  UBIFS: save 128KiB or more RAM\n  UBIFS: allocate orphans scan buffer on demand\n  UBIFS: allocate lpt dump buffer on demand\n  UBIFS: allocate ltab checking buffer on demand\n  UBIFS: allocate scanning buffer on demand\n  UBIFS: allocate dump buffer on demand\n  UBIFS: do not check data crc by default\n  UBIFS: simplify UBIFS Kconfig menu\n  UBIFS: print max. index node size\n  UBIFS: handle allocation failures in UBIFS write path\n  UBIFS: use max_write_size during recovery\n  UBIFS: use max_write_size for write-buffers\n  UBIFS: introduce write-buffer size field\n  UBI: incorporate LEB offset information\n  UBIFS: incorporate maximum write size\n  UBI: provide LEB offset information\n  UBI: incorporate maximum write size\n  UBIFS: fix LEB number in printk\n  UBIFS: restrict world-writable debugfs files\n  ...\n"
    },
    {
      "commit": "5d630e43284fdb0613e4e7e7dd906f27bc25b6af",
      "tree": "c0b71e4ccfd401044a5a3b10c5d58704d3fb89d7",
      "parents": [
        "7c83cc91ab1505e53ebfb99b1ea19ed1cf01c1b0"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Mon Mar 14 17:55:40 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 16 14:05:25 2011 +0200"
      },
      "message": "UBIFS: clean-up commentaries\n\nClean-up commentaries in debug.h and remove references to non-existing\nsymblols.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "7c83cc91ab1505e53ebfb99b1ea19ed1cf01c1b0",
      "tree": "7c21e030b4b904b9c201d0e20658ac32867a458b",
      "parents": [
        "f5cf319cf32d2284b3fbc24f3c526e2a9363b4ac"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 11 17:15:55 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 16 14:05:25 2011 +0200"
      },
      "message": "UBIFS: save 128KiB or more RAM\n\nWhen debugging is enabled, we allocate a buffer of PEB size for\nvarious debugging purposes. However, now all users of this buffer\nare gone and we can safely remove it and save 128KiB or more RAM.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "f5cf319cf32d2284b3fbc24f3c526e2a9363b4ac",
      "tree": "0d9a970edf83931e3fe7dbda8e2501aed87eb6c2",
      "parents": [
        "cab95d446cb766062fa7e2e7e326035d7c65b803"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 11 17:11:25 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 16 14:05:25 2011 +0200"
      },
      "message": "UBIFS: allocate orphans scan buffer on demand\n\nInstead of using pre-allocated \u0027c-\u003edbg-\u003ebuf\u0027 buffer in\n\u0027dbg_scan_orphans()\u0027, dynamically allocate it when needed. The intend\nis to get rid of the pre-allocated \u0027c-\u003edbg-\u003ebuf\u0027 buffer and save\n128KiB of RAM (or more if PEB size is larger). Indeed, currently we\nallocate this memory even if the user never enables any self-check,\nwhich is wasteful.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    },
    {
      "commit": "cab95d446cb766062fa7e2e7e326035d7c65b803",
      "tree": "5024518810d8d2b3d4e3ff43d003142a42184552",
      "parents": [
        "6fb324a4b0c3c9297cd569bd125ed691f2f98d57"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Fri Mar 11 16:58:39 2011 +0200"
      },
      "committer": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Wed Mar 16 14:05:25 2011 +0200"
      },
      "message": "UBIFS: allocate lpt dump buffer on demand\n\nInstead of using pre-allocated \u0027c-\u003edbg-\u003ebuf\u0027 buffer in\n\u0027dump_lpt_leb()\u0027, dynamically allocate it when needed. The intend\nis to get rid of the pre-allocated \u0027c-\u003edbg-\u003ebuf\u0027 buffer and save\n128KiB of RAM (or more if PEB size is larger). Indeed, currently we\nallocate this memory even if the user never enables any self-check,\nwhich is wasteful.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\n"
    }
  ],
  "next": "6fb324a4b0c3c9297cd569bd125ed691f2f98d57"
}
