)]}'
{
  "log": [
    {
      "commit": "6441177128e959f07ec37a3db8d8e7a6556f8599",
      "tree": "ca14685c570b7ee5274db4b82ea04eea4b4a9632",
      "parents": [
        "d453a947e726ad7549017590f2f4eaebb22f219a"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Sep 11 14:26:32 2013 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:59 2015 -0400"
      },
      "message": "lz4: fix compression/decompression signedness mismatch\n\nLZ4 compression and decompression functions require different in\nsignedness input/output parameters: unsigned char for compression and\nsigned char for decompression.\n\nChange decompression API to require \"(const) unsigned char *\".\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Yann Collet \u003cyann.collet.73@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d453a947e726ad7549017590f2f4eaebb22f219a",
      "tree": "796e089cfa49c2d50a3ee657beed42dd3dd7d149",
      "parents": [
        "ef5831e6d41df31f995763118e9eaa2649428945"
      ],
      "author": {
        "name": "Richard Laager",
        "email": "rlaager@wiktel.com",
        "time": "Thu Aug 22 16:35:47 2013 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:59 2015 -0400"
      },
      "message": "lib/lz4: correct the LZ4 license\n\nThe LZ4 code is listed as using the \"BSD 2-Clause License\".\n\nSigned-off-by: Richard Laager \u003crlaager@wiktel.com\u003e\nAcked-by: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nCc: Chanho Min \u003cchanho.min@lge.com\u003e\nCc: Richard Yao \u003cryao@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n[ The 2-clause BSD can be just converted into GPL, but that\u0027s rude and\n  pointless, so don\u0027t do it   - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef5831e6d41df31f995763118e9eaa2649428945",
      "tree": "4c59ee59ca4c3124c91c8ff7280bdb51f4dfb834",
      "parents": [
        "a57d3d240d6c5b5eb4192342e287954b8075afac"
      ],
      "author": {
        "name": "Chanho Min",
        "email": "chanho.min@lge.com",
        "time": "Mon Jul 08 16:01:49 2013 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:58 2015 -0400"
      },
      "message": "lib: add lz4 compressor module\n\nThis patchset is for supporting LZ4 compression and the crypto API using\nit.\n\nAs shown below, the size of data is a little bit bigger but compressing\nspeed is faster under the enabled unaligned memory access.  We can use\nlz4 de/compression through crypto API as well.  Also, It will be useful\nfor another potential user of lz4 compression.\n\nlz4 Compression Benchmark:\nCompiler: ARM gcc 4.6.4\nARMv7, 1 GHz based board\n   Kernel: linux 3.4\n   Uncompressed data Size: 101 MB\n         Compressed Size  compression Speed\n   LZO   72.1MB\t\t  32.1MB/s, 33.0MB/s(UA)\n   LZ4   75.1MB\t\t  30.4MB/s, 35.9MB/s(UA)\n   LZ4HC 59.8MB\t\t   2.4MB/s,  2.5MB/s(UA)\n- UA: Unaligned memory Access support\n- Latest patch set for LZO applied\n\nThis patch:\n\nAdd support for LZ4 compression in the Linux Kernel.  LZ4 Compression APIs\nfor kernel are based on LZ4 implementation by Yann Collet and were changed\nfor kernel coding style.\n\nLZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html\nLZ4 source repository : http://code.google.com/p/lz4/\nsvn revision : r90\n\nTwo APIs are added:\n\nlz4_compress() support basic lz4 compression whereas lz4hc_compress()\nsupport high compression or CPU performance get lower but compression\nratio get higher.  Also, we require the pre-allocated working memory with\nthe defined size and destination buffer must be allocated with the size of\nlz4_compressbound.\n\n[akpm@linux-foundation.org: make lz4_compresshcctx() static]\nSigned-off-by: Chanho Min \u003cchanho.min@lge.com\u003e\nCc: \"Darrick J. Wong\" \u003cdjwong@us.ibm.com\u003e\nCc: Bob Pearson \u003crpearson@systemfabricworks.com\u003e\nCc: Richard Weinberger \u003crichard@nod.at\u003e\nCc: Herbert Xu \u003cherbert@gondor.hengli.com.au\u003e\nCc: Yann Collet \u003cyann.collet.73@gmail.com\u003e\nCc: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a57d3d240d6c5b5eb4192342e287954b8075afac",
      "tree": "c79a630c4df8d00d95b3b162fe946573afd16a85",
      "parents": [
        "5baa8c98da19b943d01238f670cd77237c267167"
      ],
      "author": {
        "name": "Kyungsik Lee",
        "email": "kyungsik.lee@lge.com",
        "time": "Mon Jul 08 16:01:46 2013 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:58 2015 -0400"
      },
      "message": "lib: add support for LZ4-compressed kernel\n\nAdd support for extracting LZ4-compressed kernel images, as well as\nLZ4-compressed ramdisk images in the kernel boot process.\n\nSigned-off-by: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Florian Fainelli \u003cflorian@openwrt.org\u003e\nCc: Yann Collet \u003cyann.collet.73@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5baa8c98da19b943d01238f670cd77237c267167",
      "tree": "15f20fe16f9db8dd01c14d21a40d810b0b5b7afb",
      "parents": [
        "6d716e038735a4729457e63415e8c6f85d50fcd1"
      ],
      "author": {
        "name": "Kyungsik Lee",
        "email": "kyungsik.lee@lge.com",
        "time": "Mon Jul 08 16:01:45 2013 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:57 2015 -0400"
      },
      "message": "decompressor: add LZ4 decompressor module\n\nAdd support for LZ4 decompression in the Linux Kernel.  LZ4 Decompression\nAPIs for kernel are based on LZ4 implementation by Yann Collet.\n\nBenchmark Results(PATCH v3)\nCompiler: Linaro ARM gcc 4.6.2\n\n1. ARMv7, 1.5GHz based board\n   Kernel: linux 3.4\n   Uncompressed Kernel Size: 14MB\n        Compressed Size  Decompression Speed\n   LZO  6.7MB            20.1MB/s, 25.2MB/s(UA)\n   LZ4  7.3MB            29.1MB/s, 45.6MB/s(UA)\n\n2. ARMv7, 1.7GHz based board\n   Kernel: linux 3.7\n   Uncompressed Kernel Size: 14MB\n        Compressed Size  Decompression Speed\n   LZO  6.0MB            34.1MB/s, 52.2MB/s(UA)\n   LZ4  6.5MB            86.7MB/s\n- UA: Unaligned memory Access support\n- Latest patch set for LZO applied\n\nThis patch set is for adding support for LZ4-compressed Kernel.  LZ4 is a\nvery fast lossless compression algorithm and it also features an extremely\nfast decoder [1].\n\nBut we have five of decompressors already and one question which does\narise, however, is that of where do we stop adding new ones?  This issue\nhad been discussed and came to the conclusion [2].\n\nRussell King said that we should have:\n\n - one decompressor which is the fastest\n - one decompressor for the highest compression ratio\n - one popular decompressor (eg conventional gzip)\n\nIf we have a replacement one for one of these, then it should do exactly\nthat: replace it.\n\nThe benchmark shows that an 8% increase in image size vs a 66% increase\nin decompression speed compared to LZO(which has been known as the\nfastest decompressor in the Kernel).  Therefore the \"fast but may not be\nsmall\" compression title has clearly been taken by LZ4 [3].\n\n[1] http://code.google.com/p/lz4/\n[2] http://thread.gmane.org/gmane.linux.kbuild.devel/9157\n[3] http://thread.gmane.org/gmane.linux.kbuild.devel/9347\n\nLZ4 homepage: http://fastcompression.blogspot.com/p/lz4.html\nLZ4 source repository: http://code.google.com/p/lz4/\n\nSigned-off-by: Kyungsik Lee \u003ckyungsik.lee@lge.com\u003e\nSigned-off-by: Yann Collet \u003cyann.collet.73@gmail.com\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Borislav Petkov \u003cbp@alien8.de\u003e\nCc: Florian Fainelli \u003cflorian@openwrt.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d716e038735a4729457e63415e8c6f85d50fcd1",
      "tree": "6d9933a6ce7c27531eb06b13be93a118bf9a0bc6",
      "parents": [
        "fbb9feac00aa80274415c14a5ed4156aa9adf470"
      ],
      "author": {
        "name": "Chao Yu",
        "email": "chao2.yu@samsung.com",
        "time": "Fri Aug 29 15:18:37 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:57 2015 -0400"
      },
      "message": "zram: fix incorrect stat with failed_reads\n\nSince we allocate a temporary buffer in zram_bvec_read to handle partial\npage operations in commit 924bd88d703e (\"Staging: zram: allow partial\npage operations\"), our -\u003efailed_reads value may be incorrect as we do\nnot increase its value when failing to allocate the temporary buffer.\n\nLet\u0027s fix this issue and correct the annotation of failed_reads.\n\nSigned-off-by: Chao Yu \u003cchao2.yu@samsung.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nAcked-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fbb9feac00aa80274415c14a5ed4156aa9adf470",
      "tree": "470f59da308e6f9dc4cf2938a5c1b85a2ffb103d",
      "parents": [
        "d664d823fd41fc8a33c9eae58eb10bbbacdf9918"
      ],
      "author": {
        "name": "Weijie Yang",
        "email": "weijie.yang@samsung.com",
        "time": "Thu Mar 12 23:24:56 2015 -0400"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:53:30 2015 -0400"
      },
      "message": "zram: replace global tb_lock with fine grain lock\n\nCurrently, we use a rwlock tb_lock to protect concurrent access to the\nwhole zram meta table.  However, according to the actual access model,\nthere is only a small chance for upper user to access the same\ntable[index], so the current lock granularity is too big.\n\nThe idea of optimization is to change the lock granularity from whole\nmeta table to per table entry (table -\u003e table[index]), so that we can\nprotect concurrent access to the same table[index], meanwhile allow the\nmaximum concurrency.\n\nWith this in mind, several kinds of locks which could be used as a\nper-entry lock were tested and compared:\n\nTest environment:\nx86-64 Intel Core2 Q8400, system memory 4GB, Ubuntu 12.04,\nkernel v3.15.0-rc3 as base, zram with 4 max_comp_streams LZO.\n\niozone test:\niozone -t 4 -R -r 16K -s 200M -I +Z\n(1GB zram with ext4 filesystem, take the average of 10 tests, KB/s)\n\n      Test       base      CAS    spinlock    rwlock   bit_spinlock\n-------------------------------------------------------------------\n Initial write  1381094   1425435   1422860   1423075   1421521\n       Rewrite  1529479   1641199   1668762   1672855   1654910\n          Read  8468009  11324979  11305569  11117273  10997202\n       Re-read  8467476  11260914  11248059  11145336  10906486\n  Reverse Read  6821393   8106334   8282174   8279195   8109186\n   Stride read  7191093   8994306   9153982   8961224   9004434\n   Random read  7156353   8957932   9167098   8980465   8940476\nMixed workload  4172747   5680814   5927825   5489578   5972253\n  Random write  1483044   1605588   1594329   1600453   1596010\n        Pwrite  1276644   1303108   1311612   1314228   1300960\n         Pread  4324337   4632869   4618386   4457870   4500166\n\nTo enhance the possibility of access the same table[index] concurrently,\nset zram a small disksize(10MB) and let threads run with large loop\ncount.\n\nfio test:\nfio --bs\u003d32k --randrepeat\u003d1 --randseed\u003d100 --refill_buffers\n--scramble_buffers\u003d1 --direct\u003d1 --loops\u003d3000 --numjobs\u003d4\n--filename\u003d/dev/zram0 --name\u003dseq-write --rw\u003dwrite --stonewall\n--name\u003dseq-read --rw\u003dread --stonewall --name\u003dseq-readwrite\n--rw\u003drw --stonewall --name\u003drand-readwrite --rw\u003drandrw --stonewall\n(10MB zram raw block device, take the average of 10 tests, KB/s)\n\n    Test     base     CAS    spinlock    rwlock  bit_spinlock\n-------------------------------------------------------------\nseq-write   933789   999357   1003298    995961   1001958\n seq-read  5634130  6577930   6380861   6243912   6230006\n   seq-rw  1405687  1638117   1640256   1633903   1634459\n  rand-rw  1386119  1614664   1617211   1609267   1612471\n\nAll the optimization methods show a higher performance than the base,\nhowever, it is hard to say which method is the most appropriate.\n\nOn the other hand, zram is mostly used on small embedded system, so we\ndon\u0027t want to increase any memory footprint.\n\nThis patch pick the bit_spinlock method, pack object size and page_flag\ninto an unsigned long table.value, so as to not increase any memory\noverhead on both 32-bit and 64-bit system.\n\nOn the third hand, even though different kinds of locks have different\nperformances, we can ignore this difference, because: if zram is used as\nzram swapfile, the swap subsystem can prevent concurrent access to the\nsame swapslot; if zram is used as zram-blk for set up filesystem on it,\nthe upper filesystem and the page cache also prevent concurrent access\nof the same block mostly.  So we can ignore the different performances\namong locks.\n\nChange-Id: I85b58fc94a794a85be4713988b218ef6e52f2a27\nAcked-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nReviewed-by: Davidlohr Bueso \u003cdavidlohr@hp.com\u003e\nSigned-off-by: Weijie Yang \u003cweijie.yang@samsung.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d664d823fd41fc8a33c9eae58eb10bbbacdf9918",
      "tree": "75a3be2be56d0abcc76ff8cf529be74328ba4e7e",
      "parents": [
        "8227d604b781577549accd15e7b18ba039abaa08"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Wed Aug 06 16:08:29 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:43 2015 -0400"
      },
      "message": "zram: use size_t instead of u16\n\nSome architectures (eg, hexagon and PowerPC) could use PAGE_SHIFT of 16\nor more.  In these cases u16 is not sufficiently large to represent a\ncompressed page\u0027s size so use size_t.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReported-by: Weijie Yang \u003cweijie.yang@samsung.com\u003e\nAcked-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8227d604b781577549accd15e7b18ba039abaa08",
      "tree": "ba66631fe01267445373462d1830a04afb4cf199",
      "parents": [
        "731ec1efdeae5c2d41621b259bb4b11db8a9d62d"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Aug 06 16:08:27 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:43 2015 -0400"
      },
      "message": "zram: remove unused SECTOR_SIZE define\n\nDrop SECTOR_SIZE define, because it\u0027s not used.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Weijie Yang \u003cweijie.yang@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "731ec1efdeae5c2d41621b259bb4b11db8a9d62d",
      "tree": "80bccb3d9962ce80e6b0e6ddfd0006c053ac1179",
      "parents": [
        "151474cd0e324c52cfa92e7e02cc1c1b5d8e9624"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Aug 06 16:08:25 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:42 2015 -0400"
      },
      "message": "zram: rename struct `table\u0027 to `zram_table_entry\u0027\n\nAndrew Morton has recently noted that `struct table\u0027 actually represents\ntable entry and, thus, should be renamed.  Rename to `zram_table_entry\u0027.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Weijie Yang \u003cweijie.yang@samsung.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "151474cd0e324c52cfa92e7e02cc1c1b5d8e9624",
      "tree": "8a4d1c551ac1e7680fb2b55ca50628d71dd82db7",
      "parents": [
        "329ffbe8ba36a1aef90425ecb1b85e146ea75fc9"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Wed Jul 23 14:00:04 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:42 2015 -0400"
      },
      "message": "zram: avoid lockdep splat by revalidate_disk\n\nSasha reported lockdep warning [1] introduced by [2].\n\nIt could be fixed by doing disk revalidation out of the init_lock.  It\u0027s\nokay because disk capacity change is protected by init_lock so that\nrevalidate_disk always sees up-to-date value so there is no race.\n\n[1] https://lkml.org/lkml/2014/7/3/735\n[2] zram: revalidate disk after capacity change\n\nFixes 2e32baea46ce (\"zram: revalidate disk after capacity change\").\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReported-by: Sasha Levin \u003csasha.levin@oracle.com\u003e\nCc: \"Alexander E. Patrakov\" \u003cpatrakov@gmail.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCC: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "329ffbe8ba36a1aef90425ecb1b85e146ea75fc9",
      "tree": "ab0e679715fc861563321b57bf0838be5bc4f9ff",
      "parents": [
        "04782cd9030c6e324a7d808e1204759f6acfe1ba"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Wed Jul 02 15:22:36 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:41 2015 -0400"
      },
      "message": "zram: revalidate disk after capacity change\n\nAlexander reported mkswap on /dev/zram0 is failed if other process is\nopening the block device file.\n\nStep is as follows,\n\n0. Reset the unused zram device.\n1. Use a program that opens /dev/zram0 with O_RDWR and sleeps\n   until killed.\n2. While that program sleeps, echo the correct value to\n   /sys/block/zram0/disksize.\n3. Verify (e.g. in /proc/partitions) that the disk size is applied\n   correctly. It is.\n4. While that program still sleeps, attempt to mkswap /dev/zram0.\n   This fails: mkswap: error: swap area needs to be at least 40 KiB\n\nWhen I investigated, the size get by ioctl(fd, BLKGETSIZE64, xxx) on\nmkswap to get a size of blockdev was zero although zram0 has right size by\n2.\n\nThe reason is zram didn\u0027t revalidate disk after changing capacity so that\nsize of blockdev\u0027s inode is not uptodate until all of file is close.\n\nThis patch should fix the BUG.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReported-by: Alexander E. Patrakov \u003cpatrakov@gmail.com\u003e\nTested-by: Alexander E. Patrakov \u003cpatrakov@gmail.com\u003e\nReviewed-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "04782cd9030c6e324a7d808e1204759f6acfe1ba",
      "tree": "c082ed2f3baf659f641566af36709c418c9bf2b4",
      "parents": [
        "72a00e31689a6d6b79aaf6e6612ebdb45cd6d4bd"
      ],
      "author": {
        "name": "Weijie Yang",
        "email": "weijie.yang@samsung.com",
        "time": "Wed Jun 04 16:11:06 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:48:41 2015 -0400"
      },
      "message": "zram: correct offset usage in zram_bio_discard\n\nWe want to skip the physical block(PAGE_SIZE) which is partially covered\nby the discard bio, so we check the remaining size and subtract it if\nthere is a need to goto the next physical block.\n\nThe current offset usage in zram_bio_discard is incorrect, it will cause\nits upper filesystem breakdown.  Consider the following scenario:\n\nOn some architecture or config, PAGE_SIZE is 64K for example, filesystem\nis set up on zram disk without PAGE_SIZE aligned, a discard bio leads to a\noffset \u003d 4K and size\u003d72K, normally, it should not really discard any\nphysical block as it partially cover two physical blocks.  However, with\nthe current offset usage, it will discard the second physical block and\nfree its memory, which will cause filesystem breakdown.\n\nThis patch corrects the offset usage in zram_bio_discard.\n\nSigned-off-by: Weijie Yang \u003cweijie.yang@samsung.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Bob Liu \u003cbob.liu@oracle.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72a00e31689a6d6b79aaf6e6612ebdb45cd6d4bd",
      "tree": "035f851ad88179098ee9ff51881c7942685ba34c",
      "parents": [
        "43379114a3a28d6373476bc15bbc315ad5be31ba"
      ],
      "author": {
        "name": "Joonsoo Kim",
        "email": "iamjoonsoo.kim@lge.com",
        "time": "Mon Apr 07 15:38:24 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Fri Mar 13 00:46:37 2015 -0400"
      },
      "message": "zram: support REQ_DISCARD\n\nzram is ram based block device and can be used by backend of filesystem.\nWhen filesystem deletes a file, it normally doesn\u0027t do anything on data\nblock of that file.  It just marks on metadata of that file.  This\nbehavior has no problem on disk based block device, but has problems on\nram based block device, since we can\u0027t free memory used for data block.\nTo overcome this disadvantage, there is REQ_DISCARD functionality.  If\nblock device support REQ_DISCARD and filesystem is mounted with discard\noption, filesystem sends REQ_DISCARD to block device whenever some data\nblocks are discarded.  All we have to do is to handle this request.\n\nThis patch implements to flag up QUEUE_FLAG_DISCARD and handle this\nREQ_DISCARD request.  With it, we can free memory used by zram if it isn\u0027t\nused.\n\n[akpm@linux-foundation.org: tweak comments]\nSigned-off-by: Joonsoo Kim \u003ciamjoonsoo.kim@lge.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nChange-Id: I9831047aa7ab4162bf761fdd8897e2d1e7a4b34f\n"
    },
    {
      "commit": "43379114a3a28d6373476bc15bbc315ad5be31ba",
      "tree": "34bfb96402752f9e9627d059fb5aba370c4553c8",
      "parents": [
        "7426bada666af8eacfbb3b4d40e3b68bdbd4c9ef"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:22 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:08 2015 -0400"
      },
      "message": "zram: use scnprintf() in attrs show() methods\n\nsysfs.txt documentation lists the following requirements:\n\n - The buffer will always be PAGE_SIZE bytes in length. On i386, this\n   is 4096.\n\n - show() methods should return the number of bytes printed into the\n   buffer. This is the return value of scnprintf().\n\n - show() should always use scnprintf().\n\nUse scnprintf() in show() functions.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7426bada666af8eacfbb3b4d40e3b68bdbd4c9ef",
      "tree": "5ceb1d2e1cd5a853e8d76abdff751af80e06d9bb",
      "parents": [
        "c641a53aa18d034ba4dbd8d41185fa27abb6b82e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Mon Apr 07 15:38:21 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:07 2015 -0400"
      },
      "message": "zram: propagate error to user\n\nWhen we initialized zcomp with single, we couldn\u0027t change\nmax_comp_streams without zram reset but current interface doesn\u0027t show\nany error to user and even it changes max_comp_streams\u0027s value without\nany effect so it would make user very confusing.\n\nThis patch prevents max_comp_streams\u0027s change when zcomp was initialized\nas single zcomp and emit the error to user(ex, echo).\n\n[akpm@linux-foundation.org: don\u0027t return with the lock held, per Sergey]\n[fengguang.wu@intel.com: fix coccinelle warnings]\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nAcked-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c641a53aa18d034ba4dbd8d41185fa27abb6b82e",
      "tree": "5f9d9d231cbfc7bf9d911d8c18aa4d6489c103e8",
      "parents": [
        "1e6a50a07bb78be186c4ce2e16ad9b86755be7cc"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:20 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:07 2015 -0400"
      },
      "message": "zram: return error-valued pointer from zcomp_create()\n\nInstead of returning just NULL, return ERR_PTR from zcomp_create() if\ncompressing backend creation has failed.  ERR_PTR(-EINVAL) for unsupported\ncompression algorithm request, ERR_PTR(-ENOMEM) for allocation (zcomp or\ncompression stream) error.\n\nPerform IS_ERR() check of returned from zcomp_create() value in\ndisksize_store() and set return code to PTR_ERR().\n\nChange suggested by Jerome Marchand.\n\n[akpm@linux-foundation.org: clean up error recovery flow]\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nReported-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Arnd Bergmann \u003carnd@arndb.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nChange-Id: I3a6907a5cecbf087facea2251b60df75ec70bb21\n"
    },
    {
      "commit": "1e6a50a07bb78be186c4ce2e16ad9b86755be7cc",
      "tree": "55aea7710aaf4a0eccec9e2631207db6983d5457",
      "parents": [
        "9880f600f69ceceecb026b85ca3f3ffb71c57923"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:19 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:06 2015 -0400"
      },
      "message": "zram: move comp allocation out of init_lock\n\nWhile fixing lockdep spew of -\u003einit_lock reported by Sasha Levin [1],\nMinchan Kim noted [2] that it\u0027s better to move compression backend\nallocation (using GPF_KERNEL) out of the -\u003einit_lock lock, same way as\nwith zram_meta_alloc(), in order to prevent the same lockdep spew.\n\n[1] https://lkml.org/lkml/2014/2/27/337\n[2] https://lkml.org/lkml/2014/3/3/32\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nReported-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Sasha Levin \u003csasha.levin@oracle.com\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9880f600f69ceceecb026b85ca3f3ffb71c57923",
      "tree": "e721996aec43fce5f7564d09971dbf13fe7ab4b2",
      "parents": [
        "70e580d2e0ad4862e8232e0d5d7f07a164f86307"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:18 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:06 2015 -0400"
      },
      "message": "zram: add lz4 algorithm backend\n\nIntroduce LZ4 compression backend and make it available for selection.\nLZ4 support is optional and requires user to set ZRAM_LZ4_COMPRESS config\noption.  The default compression backend is LZO.\n\nTEST\n\n(x86_64, core i5, 2 cores + 2 hyperthreading, zram disk size 1G,\next4 file system, 3 compression streams)\n\niozone -t 3 -R -r 16K -s 60M -I +Z\n\n       Test           LZO           LZ4\n----------------------------------------------\n  Initial write   1642744.62    1317005.09\n        Rewrite   2498980.88    1800645.16\n           Read   3957026.38    5877043.75\n        Re-read   3950997.38    5861847.00\n   Reverse Read   2937114.56    5047384.00\n    Stride read   2948163.19    4929587.38\n    Random read   3292692.69    4880793.62\n Mixed workload   1545602.62    3502940.38\n   Random write   2448039.75    1758786.25\n         Pwrite   1670051.03    1338329.69\n          Pread   2530682.00    5097177.62\n         Fwrite   3232085.62    3275942.56\n          Fread   6306880.25    6645271.12\n\nSo on my system LZ4 is slower in write-only tests, while it performs\nbetter in read-only and mixed (reads + writes) tests.\n\nOfficial LZ4 benchmarks available here http://code.google.com/p/lz4/\n(linux kernel uses revision r90).\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "70e580d2e0ad4862e8232e0d5d7f07a164f86307",
      "tree": "782006b212685607e04567dce65cc39f8dc68b84",
      "parents": [
        "cace1d15106fb680967dc884bfd5e0db0c4c032a"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:17 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:05 2015 -0400"
      },
      "message": "zram: make compression algorithm selection possible\n\nAdd and document `comp_algorithm\u0027 device attribute.  This attribute allows\nto show supported compression and currently selected compression\nalgorithms:\n\n\tcat /sys/block/zram0/comp_algorithm\n\t[lzo] lz4\n\nand change selected compression algorithm:\n\techo lzo \u003e /sys/block/zram0/comp_algorithm\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cace1d15106fb680967dc884bfd5e0db0c4c032a",
      "tree": "ef5114141e8a1d35afa12e3eb2e0e3139a5309f6",
      "parents": [
        "42ef372521a0cc414de805ebcc6c5e9d044231bf"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:15 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:05 2015 -0400"
      },
      "message": "zram: add set_max_streams knob\n\nThis patch allows to change max_comp_streams on initialised zcomp.\n\nIntroduce zcomp set_max_streams() knob, zcomp_strm_multi_set_max_streams()\nand zcomp_strm_single_set_max_streams() callbacks to change streams limit\nfor zcomp_strm_multi and zcomp_strm_single, accordingly.  set_max_streams\nfor single steam zcomp does nothing.\n\nIf user has lowered the limit, then zcomp_strm_multi_set_max_streams()\nattempts to immediately free extra streams (as much as it can, depending\non idle streams availability).\n\nNote, this patch does not allow to change stream \u0027policy\u0027 from single to\nmulti stream (or vice versa) on already initialised compression backend.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42ef372521a0cc414de805ebcc6c5e9d044231bf",
      "tree": "99c24bc3e79848916d44f71346a564050035c6ca",
      "parents": [
        "a2f5c253834f87ef60e6603ddecd67f0f5b7cf8d"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:14 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:04 2015 -0400"
      },
      "message": "zram: add multi stream functionality\n\nExisting zram (zcomp) implementation has only one compression stream\n(buffer and algorithm private part), so in order to prevent data\ncorruption only one write (compress operation) can use this compression\nstream, forcing all concurrent write operations to wait for stream lock\nto be released.  This patch changes zcomp to keep a compression streams\nlist of user-defined size (via sysfs device attr).  Each write operation\nstill exclusively holds compression stream, the difference is that we\ncan have N write operations (depending on size of streams list)\nexecuting in parallel.  See TEST section later in commit message for\nperformance data.\n\nIntroduce struct zcomp_strm_multi and a set of functions to manage\nzcomp_strm stream access.  zcomp_strm_multi has a list of idle\nzcomp_strm structs, spinlock to protect idle list and wait queue, making\nit possible to perform parallel compressions.\n\nThe following set of functions added:\n- zcomp_strm_multi_find()/zcomp_strm_multi_release()\n  find and release a compression stream, implement required locking\n- zcomp_strm_multi_create()/zcomp_strm_multi_destroy()\n  create and destroy zcomp_strm_multi\n\nzcomp -\u003estrm_find() and -\u003estrm_release() callbacks are set during\ninitialisation to zcomp_strm_multi_find()/zcomp_strm_multi_release()\ncorrespondingly.\n\nEach time zcomp issues a zcomp_strm_multi_find() call, the following set\nof operations performed:\n\n- spin lock strm_lock\n- if idle list is not empty, remove zcomp_strm from idle list, spin\n  unlock and return zcomp stream pointer to caller\n- if idle list is empty, current adds itself to wait queue. it will be\n  awaken by zcomp_strm_multi_release() caller.\n\nzcomp_strm_multi_release():\n- spin lock strm_lock\n- add zcomp stream to idle list\n- spin unlock, wake up sleeper\n\nMinchan Kim reported that spinlock-based locking scheme has demonstrated\na severe perfomance regression for single compression stream case,\ncomparing to mutex-based (see https://lkml.org/lkml/2014/2/18/16)\n\nbase                      spinlock                    mutex\n\n\u003d\u003dInitial write           \u003d\u003dInitial write             \u003d\u003dInitial  write\nrecords:  5               records:  5                 records:   5\navg:      1642424.35      avg:      699610.40         avg:       1655583.71\nstd:      39890.95(2.43%) std:      232014.19(33.16%) std:       52293.96\nmax:      1690170.94      max:      1163473.45        max:       1697164.75\nmin:      1568669.52      min:      573429.88         min:       1553410.23\n\u003d\u003dRewrite                 \u003d\u003dRewrite                   \u003d\u003dRewrite\nrecords:  5               records:  5                 records:   5\navg:      1611775.39      avg:      501406.64         avg:       1684419.11\nstd:      17144.58(1.06%) std:      15354.41(3.06%)   std:       18367.42\nmax:      1641800.95      max:      531356.78         max:       1706445.84\nmin:      1593515.27      min:      488817.78         min:       1655335.73\n\nWhen only one compression stream available, mutex with spin on owner\ntends to perform much better than frequent wait_event()/wake_up().  This\nis why single stream implemented as a special case with mutex locking.\n\nIntroduce and document zram device attribute max_comp_streams.  This\nattr shows and stores current zcomp\u0027s max number of zcomp streams\n(max_strm).  Extend zcomp\u0027s zcomp_create() with `max_strm\u0027 parameter.\n`max_strm\u0027 limits the number of zcomp_strm structs in compression\nbackend\u0027s idle list (max_comp_streams).\n\nmax_comp_streams used during initialisation as follows:\n-- passing to zcomp_create() max_strm equals to 1 will initialise zcomp\nusing single compression stream zcomp_strm_single (mutex-based locking).\n-- passing to zcomp_create() max_strm greater than 1 will initialise zcomp\nusing multi compression stream zcomp_strm_multi (spinlock-based locking).\n\ndefault max_comp_streams value is 1, meaning that zram with single stream\nwill be initialised.\n\nLater patch will introduce configuration knob to change max_comp_streams\non already initialised and used zcomp.\n\nTEST\niozone -t 3 -R -r 16K -s 60M -I +Z\n\n       test           base       1 strm (mutex)     3 strm (spinlock)\n-----------------------------------------------------------------------\n Initial write      589286.78       583518.39          718011.05\n       Rewrite      604837.97       596776.38         1515125.72\n  Random write      584120.11       595714.58         1388850.25\n        Pwrite      535731.17       541117.38          739295.27\n        Fwrite     1418083.88      1478612.72         1484927.06\n\nUsage example:\nset max_comp_streams to 4\n        echo 4 \u003e /sys/block/zram0/max_comp_streams\n\nshow current max_comp_streams (default value is 1).\n        cat /sys/block/zram0/max_comp_streams\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2f5c253834f87ef60e6603ddecd67f0f5b7cf8d",
      "tree": "d50c72a5f84fef0cb2562b0bc929cf6bfde4ab5e",
      "parents": [
        "a2143f202daf84d17a6bc1b8df903b7713e3f7af"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:08 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:04 2015 -0400"
      },
      "message": "zram: document failed_reads, failed_writes stats\n\nDocument `failed_reads\u0027 and `failed_writes\u0027 device attributes.\nRemove info about `discard\u0027 - there is no such zram attr.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2143f202daf84d17a6bc1b8df903b7713e3f7af",
      "tree": "0e53953873cfe8578d1dc7268289c78f8010c52c",
      "parents": [
        "4fe7919fa615d1a8be9f3f0bbde2a83d6c1bcb70"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:13 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:03 2015 -0400"
      },
      "message": "zram: factor out single stream compression\n\nThis is preparation patch to add multi stream support to zcomp.\n\nIntroduce struct zcomp_strm_single and a set of functions to manage\nzcomp_strm stream access.  zcomp_strm_single implements single compession\nstream, same way as current zcomp implementation.  This moves zcomp_strm\nstream control and locking from zcomp, so compressing backend zcomp is not\naware of required locking.\n\nSingle and multi streams require different locking schemes.  Minchan Kim\nreported that spinlock-based locking scheme (which is used in multi stream\nimplementation) has demonstrated a severe perfomance regression for single\ncompression stream case, comparing to mutex-based.  see\nhttps://lkml.org/lkml/2014/2/18/16\n\nThe following set of functions added:\n- zcomp_strm_single_find()/zcomp_strm_single_release()\n  find and release a compression stream, implement required locking\n- zcomp_strm_single_create()/zcomp_strm_single_destroy()\n  create and destroy zcomp_strm_single\n\nNew -\u003estrm_find() and -\u003estrm_release() callbacks added to zcomp, which are\nset to zcomp_strm_single_find() and zcomp_strm_single_release() during\ninitialisation.  Instead of direct locking and zcomp_strm access from\nzcomp_strm_find() and zcomp_strm_release(), zcomp now calls -\u003estrm_find()\nand -\u003estrm_release() correspondingly.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4fe7919fa615d1a8be9f3f0bbde2a83d6c1bcb70",
      "tree": "0ab33bf53d43a8a4e9e73b790c178c81800bb88d",
      "parents": [
        "bd7c54ce54363c158b98903be38c6deaa8f0ee8d"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:12 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:03 2015 -0400"
      },
      "message": "zram: use zcomp compressing backends\n\nDo not perform direct LZO compress/decompress calls, initialise\nand use zcomp LZO backend (single compression stream) instead.\n\n[akpm@linux-foundation.org: resolve conflicts with zram-delete-zram_init_device-fix.patch]\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nChange-Id: I0aeab9e6396f8a90dc7f0959cff0ef29b5682301\n"
    },
    {
      "commit": "bd7c54ce54363c158b98903be38c6deaa8f0ee8d",
      "tree": "3ec63b83ea06076eb69347abd5a1ed78fc2afa3b",
      "parents": [
        "c0dcfa5840279e61a460edae83cc20112b1fd687"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:11 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:02 2015 -0400"
      },
      "message": "zram: introduce compressing backend abstraction\n\nZRAM performs direct LZO compression algorithm calls, making it the one\nand only option.  While LZO is generally performs well, LZ4 algorithm\ntends to have a faster decompression (see http://code.google.com/p/lz4/\nfor full report)\n\n\tName            Ratio  C.speed D.speed\n\t                        MB/s    MB/s\n\tLZ4 (r101)      2.084    422    1820\n\tLZO 2.06        2.106    414     600\n\nThus, users who have mostly read (decompress) usage scenarious or mixed\nworkflow (writes with relatively high read ops number) will benefit from\nusing LZ4 compression backend.\n\nIntroduce compressing backend abstraction zcomp in order to support\nmultiple compression algorithms with the following set of operations:\n\n        .create\n        .destroy\n        .compress\n        .decompress\n\nSchematically zram write() usually contains the following steps:\n0) preparation (decompression of partioal IO, etc.)\n1) lock buffer_lock mutex (protects meta compress buffers)\n2) compress (using meta compress buffers)\n3) alloc and map zs_pool object\n4) copy compressed data (from meta compress buffers) to object allocated by 3)\n5) free previous pool page, assign a new one\n6) unlock buffer_lock mutex\n\nAs we can see, compressing buffers must remain untouched from 1) to 4),\nbecause, otherwise, concurrent write() can overwrite data.  At the same\ntime, zram_meta must be aware of a) specific compression algorithm memory\nrequirements and b) necessary locking to protect compression buffers.  To\nremove requirement a) new struct zcomp_strm introduced, which contains a\ncompress/decompress `buffer\u0027 and compression algorithm `private\u0027 part.\nWhile struct zcomp implements zcomp_strm stream handling and locking and\nremoves requirement b) from zram meta.  zcomp -\u003ecreate() and -\u003edestroy(),\nrespectively, allocate and deallocate algorithm specific zcomp_strm\n`private\u0027 part.\n\nEvery zcomp has zcomp stream and mutex to protect its compression stream.\nStream usage semantics remains the same -- only one write can hold stream\nlock and use its buffers.  zcomp_strm_find() turns caller into exclusive\nuser of a stream (holding stream mutex until zram release stream), and\nzcomp_strm_release() makes zcomp stream available (unlock the stream\nmutex).  Hence no concurrent write (compression) operations possible at\nthe moment.\n\niozone -t 3 -R -r 16K -s 60M -I +Z\n\n       test            base           patched\n--------------------------------------------------\n  Initial write      597992.91       591660.58\n        Rewrite      609674.34       616054.97\n           Read     2404771.75      2452909.12\n        Re-read     2459216.81      2470074.44\n   Reverse Read     1652769.66      1589128.66\n    Stride read     2202441.81      2202173.31\n    Random read     2236311.47      2276565.31\n Mixed workload     1423760.41      1709760.06\n   Random write      579584.08       615933.86\n         Pwrite      597550.02       594933.70\n          Pread     1703672.53      1718126.72\n         Fwrite     1330497.06      1461054.00\n          Fread     3922851.00      3957242.62\n\nUsage examples:\n\n\tcomp \u003d zcomp_create(NAME) /* NAME e.g. \"lzo\" */\n\nwhich initialises compressing backend if requested algorithm is supported.\n\nCompress:\n\tzstrm \u003d zcomp_strm_find(comp)\n\tzcomp_compress(comp, zstrm, src, \u0026dst_len)\n\t[..] /* copy compressed data */\n\tzcomp_strm_release(comp, zstrm)\n\nDecompress:\n\tzcomp_decompress(comp, src, src_len, dst);\n\nFree compessing backend and its zcomp stream:\n\tzcomp_destroy(comp)\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0dcfa5840279e61a460edae83cc20112b1fd687",
      "tree": "566a7150286f4d319f29b0a2bcbfced2bd65a7a1",
      "parents": [
        "d217ec741c21f8964106626e241c091c08fbd997"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:09 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:02 2015 -0400"
      },
      "message": "zram: delete zram_init_device()\n\nallocate new `zram_meta\u0027 in disksize_store() only for uninitialised zram\ndevice, saving a number of allocations and deallocations in case if\ndisksize_store() was called on currently used device.  at the same time\nzram_meta stack variable is not necessary, because we can set -\u003emeta\ndirectly.  there is also no need in setting QUEUE_FLAG_NONROT queue on\nevery disksize_store(), set it once during device creation.\n\n[minchan@kernel.org: handle zram-\u003emeta alloc fail case]\n[minchan@kernel.org: prevent lockdep spew of init_lock]\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Sasha Levin \u003csasha.levin@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d217ec741c21f8964106626e241c091c08fbd997",
      "tree": "36147af7030397839a61dc57811482af365fdffd",
      "parents": [
        "c332940789cc7b21ad0c75cb3cb919351913e369"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:07 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:01 2015 -0400"
      },
      "message": "zram: move zram size warning to documentation\n\nMove zram warning about disksize and size of memory correlation to zram\ndocumentation.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c332940789cc7b21ad0c75cb3cb919351913e369",
      "tree": "9e2bf8ddc8246dbc38df13cacd4103491a8dc1ef",
      "parents": [
        "158bac2ad0cdb2d7fbc7b106c1ffb179849b245c"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:06 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:01 2015 -0400"
      },
      "message": "zram: drop not used table `count\u0027 member\n\nstruct table `count\u0027 member is not used.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "158bac2ad0cdb2d7fbc7b106c1ffb179849b245c",
      "tree": "39213a2ba33edaa2fcb2fd231c1ad8946c346231",
      "parents": [
        "caf8d9339ec410d2dc7d8bb328b74d336d506787"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:05 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:00 2015 -0400"
      },
      "message": "zram: report failed read and write stats\n\nzram accounted but did not report numbers of failed read and write\nqueries.  make these stats available as failed_reads and failed_writes\nattrs.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "caf8d9339ec410d2dc7d8bb328b74d336d506787",
      "tree": "3d8c92efa1e45c915ca7a5936f29d7b4f0055375",
      "parents": [
        "47d249927c29ef5bb23fb3c6c7aaa5ec404545d5"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:04 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:29:00 2015 -0400"
      },
      "message": "zram: remove zram stats code duplication\n\nIntroduce ZRAM_ATTR_RO macro that generates device_attribute and default\nATTR show() function for existing atomic64_t zram stats.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "47d249927c29ef5bb23fb3c6c7aaa5ec404545d5",
      "tree": "1b8af47805f897921968c00a97abcc3fc16fc301",
      "parents": [
        "82a73b959f15347daa6cda306dd736996989566f"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:03 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:28:59 2015 -0400"
      },
      "message": "zram: use atomic64_t for all zram stats\n\nThis is a preparation patch for stats code duplication removal.\n\n1) use atomic64_t for `pages_zero\u0027 and `pages_stored\u0027 zram stats.\n\n2) `compr_size\u0027 and `pages_zero\u0027 struct zram_stats members did not\n   follow the existing device attr naming scheme: zram_stats.ATTR has\n   ATTR_show() function.  rename them:\n\n   -- compr_size -\u003e compr_data_size\n   -- pages_zero -\u003e zero_pages\n\nMinchan Kim\u0027s note:\n If we really have trouble with atomic stat operation, we could\n change it with percpu_counter so that it could solve atomic overhead and\n unnecessary memory space by introducing unsigned long instead of 64bit\n atomic_t.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82a73b959f15347daa6cda306dd736996989566f",
      "tree": "6c1479ecd32a260a2c6b4fc589a257b508eb92ee",
      "parents": [
        "1767ce45c30b342a7b58a5e9386c4aaa7723962b"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:02 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:28:59 2015 -0400"
      },
      "message": "zram: remove good and bad compress stats\n\nRemove `good\u0027 and `bad\u0027 compressed sub-requests stats.  RW request may\ncause a number of RW sub-requests.  zram used to account `good\u0027 compressed\nsub-queries (with compressed size less than 50% of original size), `bad\u0027\ncompressed sub-queries (with compressed size greater that 75% of original\nsize), leaving sub-requests with compression size between 50% and 75% of\noriginal size not accounted and not reported.  zram already accounts each\nsub-request\u0027s compression size so we can calculate real device compression\nratio.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1767ce45c30b342a7b58a5e9386c4aaa7723962b",
      "tree": "e05563e5c0b3bb12b9d2d65a8327f92d0419abc2",
      "parents": [
        "c6e308c3b29708b7aa30699997233cf12956fa27"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:01 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:28:58 2015 -0400"
      },
      "message": "zram: do not pass rw argument to __zram_make_request()\n\nDo not pass rw argument down the __zram_make_request() -\u003e zram_bvec_rw()\nchain, decode it in zram_bvec_rw() instead.  Besides, this is the place\nwhere we distinguish READ and WRITE bio data directions, so account zram\nRW stats here, instead of __zram_make_request().  This also allows to\naccount a real number of zram READ/WRITE operations, not just requests\n(single RW request may cause a number of zram RW ops with separate\nlocking, compression/decompression, etc).\n\nChange-Id: Ibc8aa078d076ea84fb952eac6877ac48493e7288\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6e308c3b29708b7aa30699997233cf12956fa27",
      "tree": "e0ba19d284a87dbf718aa89ec9b954f0be164430",
      "parents": [
        "efc6c903edccd233ffe492fb83f01782ab233d60"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Mon Apr 07 15:38:00 2014 -0700"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 23:28:58 2015 -0400"
      },
      "message": "zram: drop `init_done\u0027 struct zram member\n\nIntroduce init_done() helper function which allows us to drop `init_done\u0027\nstruct zram member.  init_done() uses the fact that -\u003einit_done \u003d\u003d 1\nequals to -\u003emeta !\u003d NULL.\n\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efc6c903edccd233ffe492fb83f01782ab233d60",
      "tree": "10b7eeeab3d5e6283c3e6b45a1bd13de59dc901d",
      "parents": [
        "75d4f0cad8975ed4067a328e63e011c5f6b50f1d"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Mon Mar 03 15:38:34 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:32 2015 -0400"
      },
      "message": "zram: avoid null access when fail to alloc meta\n\nzram_meta_alloc could fail so caller should check it.  Otherwise, your\nsystem will hang.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75d4f0cad8975ed4067a328e63e011c5f6b50f1d",
      "tree": "f37ba2e2c4858a3e7881e7524292b32b10e15690",
      "parents": [
        "6916cc19cc26fcedf80f9e1a95d2e169c475260b"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:06 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:32 2015 -0400"
      },
      "message": "zram: remove zram-\u003elock in read path and change it with mutex\n\nFinally, we separated zram-\u003elock dependency from 32bit stat/ table\nhandling so there is no reason to use rw_semaphore between read and\nwrite path so this patch removes the lock from read path totally and\nchanges rw_semaphore with mutex.  So, we could do\n\nold:\n\n  read-read: OK\n  read-write: NO\n  write-write: NO\n\nNow:\n\n  read-read: OK\n  read-write: OK\n  write-write: NO\n\nThe below data proves mixed workload performs well 11 times and there is\nalso enhance on write-write path because current rw-semaphore doesn\u0027t\nsupport SPIN_ON_OWNER.  It\u0027s side effect but anyway good thing for us.\n\nWrite-related tests perform better (from 61% to 1058%) but read path has\ngood/bad(from -2.22% to 1.45%) but they are all marginal within stddev.\n\n  CPU 12\n  iozone -t -T -l 12 -u 12 -r 16K -s 60M -I +Z -V 0\n\n  \u003d\u003dInitial write                \u003d\u003dInitial write\n  records: 10                    records: 10\n  avg:  516189.16                avg:  839907.96\n  std:   22486.53 (4.36%)        std:   47902.17 (5.70%)\n  max:  546970.60                max:  909910.35\n  min:  481131.54                min:  751148.38\n  \u003d\u003dRewrite                      \u003d\u003dRewrite\n  records: 10                    records: 10\n  avg:  509527.98                avg: 1050156.37\n  std:   45799.94 (8.99%)        std:   40695.44 (3.88%)\n  max:  611574.27                max: 1111929.26\n  min:  443679.95                min:  980409.62\n  \u003d\u003dRead                         \u003d\u003dRead\n  records: 10                    records: 10\n  avg: 4408624.17                avg: 4472546.76\n  std:  281152.61 (6.38%)        std:  163662.78 (3.66%)\n  max: 4867888.66                max: 4727351.03\n  min: 4058347.69                min: 4126520.88\n  \u003d\u003dRe-read                      \u003d\u003dRe-read\n  records: 10                    records: 10\n  avg: 4462147.53                avg: 4363257.75\n  std:  283546.11 (6.35%)        std:  247292.63 (5.67%)\n  max: 4912894.44                max: 4677241.75\n  min: 4131386.50                min: 4035235.84\n  \u003d\u003dReverse Read                 \u003d\u003dReverse Read\n  records: 10                    records: 10\n  avg: 4565865.97                avg: 4485818.08\n  std:  313395.63 (6.86%)        std:  248470.10 (5.54%)\n  max: 5232749.16                max: 4789749.94\n  min: 4185809.62                min: 3963081.34\n  \u003d\u003dStride read                  \u003d\u003dStride read\n  records: 10                    records: 10\n  avg: 4515981.80                avg: 4418806.01\n  std:  211192.32 (4.68%)        std:  212837.97 (4.82%)\n  max: 4889287.28                max: 4686967.22\n  min: 4210362.00                min: 4083041.84\n  \u003d\u003dRandom read                  \u003d\u003dRandom read\n  records: 10                    records: 10\n  avg: 4410525.23                avg: 4387093.18\n  std:  236693.22 (5.37%)        std:  235285.23 (5.36%)\n  max: 4713698.47                max: 4669760.62\n  min: 4057163.62                min: 3952002.16\n  \u003d\u003dMixed workload               \u003d\u003dMixed workload\n  records: 10                    records: 10\n  avg:  243234.25                avg: 2818677.27\n  std:   28505.07 (11.72%)       std:  195569.70 (6.94%)\n  max:  288905.23                max: 3126478.11\n  min:  212473.16                min: 2484150.69\n  \u003d\u003dRandom write                 \u003d\u003dRandom write\n  records: 10                    records: 10\n  avg:  555887.07                avg: 1053057.79\n  std:   70841.98 (12.74%)       std:   35195.36 (3.34%)\n  max:  683188.28                max: 1096125.73\n  min:  437299.57                min:  992481.93\n  \u003d\u003dPwrite                       \u003d\u003dPwrite\n  records: 10                    records: 10\n  avg:  501745.93                avg:  810363.09\n  std:   16373.54 (3.26%)        std:   19245.01 (2.37%)\n  max:  518724.52                max:  833359.70\n  min:  464208.73                min:  765501.87\n  \u003d\u003dPread                        \u003d\u003dPread\n  records: 10                    records: 10\n  avg: 4539894.60                avg: 4457680.58\n  std:  197094.66 (4.34%)        std:  188965.60 (4.24%)\n  max: 4877170.38                max: 4689905.53\n  min: 4226326.03                min: 4095739.72\n\nChange-Id: I59cc9c518bdeddb5b82f1b43aa674291161626bf\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6916cc19cc26fcedf80f9e1a95d2e169c475260b",
      "tree": "17ac9096278aee2df22853821866960402f01a2e",
      "parents": [
        "3894724a692f705d011586017e8f3031d3f2a56b"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:04 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:31 2015 -0400"
      },
      "message": "zram: remove workqueue for freeing removed pending slot\n\nCommit a0c516cbfc74 (\"zram: don\u0027t grab mutex in zram_slot_free_noity\")\nintroduced free request pending code to avoid scheduling by mutex under\nspinlock and it was a mess which made code lenghty and increased\noverhead.\n\nNow, we don\u0027t need zram-\u003elock any more to free slot so this patch\nreverts it and then, tb_lock should protect it.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3894724a692f705d011586017e8f3031d3f2a56b",
      "tree": "42e2086fd8cbe3609255c4210f899b42f4dc6a95",
      "parents": [
        "0be378ac8f285b8e4fc89baa19299839f30d2a19"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:03 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:31 2015 -0400"
      },
      "message": "zram: introduce zram-\u003etb_lock\n\nCurrently, the zram table is protected by zram-\u003elock but it\u0027s rather\ncoarse-grained lock and it makes hard for scalibility.\n\nLet\u0027s use own rwlock instead of depending on zram-\u003elock.  This patch\nadds new locking so obviously, it would make slow but this patch is just\nprepartion for removing coarse-grained rw_semaphore(ie, zram-\u003elock)\nwhich is hurdle about zram scalability.\n\nFinal patch in this patchset series will remove the lock from read-path\nand change rw_semaphore with mutex in write path.  With bonus, we could\ndrop pending slot free mess in next patch.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0be378ac8f285b8e4fc89baa19299839f30d2a19",
      "tree": "192429c0d5a9f72a597d5c61ce7a9a1a899fb3dd",
      "parents": [
        "0e3c8c2b61f1327fdefc3df40dd55108803ca631"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:02 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:30 2015 -0400"
      },
      "message": "zram: use atomic operation for stat\n\nSome of fields in zram-\u003estats are protected by zram-\u003elock which is\nrather coarse-grained so let\u0027s use atomic operation without explict\nlocking.\n\nThis patch is ready for removing dependency of zram-\u003elock in read path\nwhich is very coarse-grained rw_semaphore.  Of course, this patch adds\nnew atomic operation so it might make slow but my 12CPU test couldn\u0027t\nspot any regression.  All gain/lose is marginal within stddev.\n\n  iozone -t -T -l 12 -u 12 -r 16K -s 60M -I +Z -V 0\n\n  \u003d\u003dInitial write                \u003d\u003dInitial write\n  records: 50                    records: 50\n  avg:  412875.17                avg:  415638.23\n  std:   38543.12 (9.34%)        std:   36601.11 (8.81%)\n  max:  521262.03                max:  502976.72\n  min:  343263.13                min:  351389.12\n  \u003d\u003dRewrite                      \u003d\u003dRewrite\n  records: 50                    records: 50\n  avg:  416640.34                avg:  397914.33\n  std:   60798.92 (14.59%)       std:   46150.42 (11.60%)\n  max:  543057.07                max:  522669.17\n  min:  304071.67                min:  316588.77\n  \u003d\u003dRead                         \u003d\u003dRead\n  records: 50                    records: 50\n  avg: 4147338.63                avg: 4070736.51\n  std:  179333.25 (4.32%)        std:  223499.89 (5.49%)\n  max: 4459295.28                max: 4539514.44\n  min: 3753057.53                min: 3444686.31\n  \u003d\u003dRe-read                      \u003d\u003dRe-read\n  records: 50                    records: 50\n  avg: 4096706.71                avg: 4117218.57\n  std:  229735.04 (5.61%)        std:  171676.25 (4.17%)\n  max: 4430012.09                max: 4459263.94\n  min: 2987217.80                min: 3666904.28\n  \u003d\u003dReverse Read                 \u003d\u003dReverse Read\n  records: 50                    records: 50\n  avg: 4062763.83                avg: 4078508.32\n  std:  186208.46 (4.58%)        std:  172684.34 (4.23%)\n  max: 4401358.78                max: 4424757.22\n  min: 3381625.00                min: 3679359.94\n  \u003d\u003dStride read                  \u003d\u003dStride read\n  records: 50                    records: 50\n  avg: 4094933.49                avg: 4082170.22\n  std:  185710.52 (4.54%)        std:  196346.68 (4.81%)\n  max: 4478241.25                max: 4460060.97\n  min: 3732593.23                min: 3584125.78\n  \u003d\u003dRandom read                  \u003d\u003dRandom read\n  records: 50                    records: 50\n  avg: 4031070.04                avg: 4074847.49\n  std:  192065.51 (4.76%)        std:  206911.33 (5.08%)\n  max: 4356931.16                max: 4399442.56\n  min: 3481619.62                min: 3548372.44\n  \u003d\u003dMixed workload               \u003d\u003dMixed workload\n  records: 50                    records: 50\n  avg:  149925.73                avg:  149675.54\n  std:    7701.26 (5.14%)        std:    6902.09 (4.61%)\n  max:  191301.56                max:  175162.05\n  min:  133566.28                min:  137762.87\n  \u003d\u003dRandom write                 \u003d\u003dRandom write\n  records: 50                    records: 50\n  avg:  404050.11                avg:  393021.47\n  std:   58887.57 (14.57%)       std:   42813.70 (10.89%)\n  max:  601798.09                max:  524533.43\n  min:  325176.99                min:  313255.34\n  \u003d\u003dPwrite                       \u003d\u003dPwrite\n  records: 50                    records: 50\n  avg:  411217.70                avg:  411237.96\n  std:   43114.99 (10.48%)       std:   33136.29 (8.06%)\n  max:  530766.79                max:  471899.76\n  min:  320786.84                min:  317906.94\n  \u003d\u003dPread                        \u003d\u003dPread\n  records: 50                    records: 50\n  avg: 4154908.65                avg: 4087121.92\n  std:  151272.08 (3.64%)        std:  219505.04 (5.37%)\n  max: 4459478.12                max: 4435857.38\n  min: 3730512.41                min: 3101101.67\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0e3c8c2b61f1327fdefc3df40dd55108803ca631",
      "tree": "762aaac503bdd952de805b1a2549038612c393f4",
      "parents": [
        "542801ce3de155b8ac6eb002ac34182f15e51a4c"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:01 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:30 2015 -0400"
      },
      "message": "zram: remove unnecessary free\n\nCommit a0c516cbfc74 (\"zram: don\u0027t grab mutex in zram_slot_free_noity\")\nintroduced pending zram slot free in zram\u0027s write path in case of\nmissing slot free by memory allocation failure in zram_slot_free_notify\nbut it is not necessary because we have already freed the slot right\nbefore overwriting.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "542801ce3de155b8ac6eb002ac34182f15e51a4c",
      "tree": "36366b1b392145b0133ec8e58b0158f98716b9bf",
      "parents": [
        "8696652be713893d36b919928817cb977a306d16"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:46:00 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:29 2015 -0400"
      },
      "message": "zram: delay pending free request in read path\n\nSergey reported we don\u0027t need to handle pending free request every I/O\nso that this patch removes it in read path while we remain it in write\npath.\n\nLet\u0027s consider below example.\n\nSwap subsystem ask to zram \"A\" block free by swap_slot_free_notify but\nzram had been pended it without real freeing.  Swap subsystem allocates\n\"A\" block for new data but request pended for a long time just handled\nand zram blindly free new data on the \"A\" block.  :(\n\nThat\u0027s why we couldn\u0027t remove handle pending free request right before\nzram-write.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReported-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8696652be713893d36b919928817cb977a306d16",
      "tree": "d88f174fb753ece91f1053aea411e0cf6441893e",
      "parents": [
        "74f9037cfb477f81c1549d8b189a7c8ecb975002"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:45:58 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:29 2015 -0400"
      },
      "message": "zram: fix race between reset and flushing pending work\n\nDan and Sergey reported that there is a racy between reset and flushing\nof pending work so that it could make oops by freeing zram-\u003emeta in\nreset while zram_slot_free can access zram-\u003emeta if new request is\nadding during the race window.\n\nThis patch moves flush after taking init_lock so it prevents new request\nso that it closes the race.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReported-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nTested-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74f9037cfb477f81c1549d8b189a7c8ecb975002",
      "tree": "464aaf2b0de912a79987945e778762c1b55744a1",
      "parents": [
        "fe5dae68a188120fcd5dd724e2608bbe3fee61d5"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:45:55 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:29 2015 -0400"
      },
      "message": "zram: add copyright\n\nAdd my copyright to the zram source code which I maintain.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe5dae68a188120fcd5dd724e2608bbe3fee61d5",
      "tree": "7cbd0a924235c469e63aa89774bde12f594edc12",
      "parents": [
        "7eb23b5191c33c1c4877dd984bcc00021715121f"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:45:52 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:28 2015 -0400"
      },
      "message": "zram: promote zram from staging\n\nZram has lived in staging for a LONG LONG time and have been\nfixed/improved by many contributors so code is clean and stable now.  Of\ncourse, there are lots of product using zram in real practice.\n\nThe major TV companys have used zram as swap since two years ago and\nrecently our production team released android smart phone with zram\nwhich is used as swap, too and recently Android Kitkat start to use zram\nfor small memory smart phone.  And there was a report Google released\ntheir ChromeOS with zram, too and cyanogenmod have been used zram long\ntime ago.  And I heard some disto have used zram block device for tmpfs.\nIn addition, I saw many report from many other peoples.  For example,\nLubuntu start to use it.\n\nThe benefit of zram is very clear.  With my experience, one of the\nbenefit was to remove jitter of video application with backgroud memory\npressure.  It would be effect of efficient memory usage by compression\nbut more issue is whether swap is there or not in the system.  Recent\nmobile platforms have used JAVA so there are many anonymous pages.  But\nembedded system normally are reluctant to use eMMC or SDCard as swap\nbecause there is wear-leveling and latency issues so if we do not use\nswap, it means we can\u0027t reclaim anoymous pages and at last, we could\nencounter OOM kill.  :(\n\nAlthough we have real storage as swap, it was a problem, too.  Because\nit sometime ends up making system very unresponsible caused by slow swap\nstorage performance.\n\nQuote from Luigi on Google\n \"Since Chrome OS was mentioned: the main reason why we don\u0027t use swap\n  to a disk (rotating or SSD) is because it doesn\u0027t degrade gracefully\n  and leads to a bad interactive experience.  Generally we prefer to\n  manage RAM at a higher level, by transparently killing and restarting\n  processes.  But we noticed that zram is fast enough to be competitive\n  with the latter, and it lets us make more efficient use of the\n  available RAM.  \" and he announced.\nhttp://www.spinics.net/lists/linux-mm/msg57717.html\n\nOther uses case is to use zram for block device.  Zram is block device\nso anyone can format the block device and mount on it so some guys on\nthe internet start zram as /var/tmp.\nhttp://forums.gentoo.org/viewtopic-t-838198-start-0.html\n\nLet\u0027s promote zram and enhance/maintain it instead of removing.\n\nChange-Id: Ie8f4e47eb9b74f4269da921eb6c709964fb6753e\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nAcked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nAcked-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Bob Liu \u003cbob.liu@oracle.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Luigi Semenzato \u003csemenzato@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7eb23b5191c33c1c4877dd984bcc00021715121f",
      "tree": "6cc6f6aa0c5b11cc4e721e2227e910a3e8077f2f",
      "parents": [
        "d38e242922b8c07519c2f44bd96981e4d78b9ffb"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:45:55 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:27 2015 -0400"
      },
      "message": "zsmalloc: add copyright\n\nAdd my copyright to the zsmalloc source code which I maintain.\n\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d38e242922b8c07519c2f44bd96981e4d78b9ffb",
      "tree": "49bf0b59fce0c70455ca26c7b1e12ffb2173ec59",
      "parents": [
        "36be14c491b2cb22141d4b18a85d1c2369b3d9fa"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Thu Jan 30 15:45:50 2014 -0800"
      },
      "committer": {
        "name": "jrior001",
        "email": "jriordan001@gmail.com",
        "time": "Thu Mar 12 22:49:14 2015 -0400"
      },
      "message": "zsmalloc: move it under mm\n\nThis patch moves zsmalloc under mm directory.\n\nBefore that, description will explain why we have needed custom\nallocator.\n\nZsmalloc is a new slab-based memory allocator for storing compressed\npages.  It is designed for low fragmentation and high allocation success\nrate on large object, but \u003c\u003d PAGE_SIZE allocations.\n\nzsmalloc differs from the kernel slab allocator in two primary ways to\nachieve these design goals.\n\nzsmalloc never requires high order page allocations to back slabs, or\n\"size classes\" in zsmalloc terms.  Instead it allows multiple\nsingle-order pages to be stitched together into a \"zspage\" which backs\nthe slab.  This allows for higher allocation success rate under memory\npressure.\n\nAlso, zsmalloc allows objects to span page boundaries within the zspage.\nThis allows for lower fragmentation than could be had with the kernel\nslab allocator for objects between PAGE_SIZE/2 and PAGE_SIZE.  With the\nkernel slab allocator, if a page compresses to 60% of it original size,\nthe memory savings gained through compression is lost in fragmentation\nbecause another object of the same size can\u0027t be stored in the leftover\nspace.\n\nThis ability to span pages results in zsmalloc allocations not being\ndirectly addressable by the user.  The user is given an\nnon-dereferencable handle in response to an allocation request.  That\nhandle must be mapped, using zs_map_object(), which returns a pointer to\nthe mapped region that can be used.  The mapping is necessary since the\nobject data may reside in two different noncontigious pages.\n\nThe zsmalloc fulfills the allocation needs for zram perfectly\n\n[sjenning@linux.vnet.ibm.com: borrow Seth\u0027s quote]\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nCc: Bob Liu \u003cbob.liu@oracle.com\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Luigi Semenzato \u003csemenzato@google.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\nChange-Id: Ib026c17143131089494dc394c4a35e230220ec83\n"
    },
    {
      "commit": "36be14c491b2cb22141d4b18a85d1c2369b3d9fa",
      "tree": "4365c0d5eb4d23a27e3217d7723a06d0f619e969",
      "parents": [
        "b187c1126fe3924217883c53f9f7b596d711ac43"
      ],
      "author": {
        "name": "Rashika Kheria",
        "email": "rashika.kheria@gmail.com",
        "time": "Sun Nov 10 22:13:53 2013 +0530"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:17 2015 -0700"
      },
      "message": "Staging: zram: Fix memory leak by refcount mismatch\n\nAs suggested by Minchan Kim and Jerome Marchand \"The code in reset_store\nget the block device (bdget_disk()) but it does not put it (bdput()) when\nit\u0027s done using it. The usage count is therefore incremented but never\ndecremented.\"\n\nThis patch also puts bdput() for all error cases.\n\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Rashika Kheria \u003crashika.kheria@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "b187c1126fe3924217883c53f9f7b596d711ac43",
      "tree": "003df8da2bd84d5a1c207000b5131f533626bf42",
      "parents": [
        "f988f843093e07243d4a1a9b2b25c91758f35961"
      ],
      "author": {
        "name": "Rashika Kheria",
        "email": "rashika.kheria@gmail.com",
        "time": "Wed Oct 30 18:36:32 2013 +0530"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:17 2015 -0700"
      },
      "message": "Staging: zram: Fix access of NULL pointer\n\nThis patch fixes the bug in reset_store caused by accessing NULL pointer.\n\nThe bdev gets its value from bdget_disk() which could fail when memory\npressure is severe and hence can return NULL because allocation of\ninode in bdget could fail.\n\nHence, this patch introduces a check for bdev to prevent reference to a\nNULL pointer in the later part of the code. It also removes unnecessary\ncheck of bdev for fsync_bdev().\n\nCc: stable \u003cstable@vger.kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Rashika Kheria \u003crashika.kheria@gmail.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "f988f843093e07243d4a1a9b2b25c91758f35961",
      "tree": "4cc2bc51d6baa9ca00075493894db5f36e1e1fbd",
      "parents": [
        "af00a7aa0176c4f55a5158e7534abe8362ed4047"
      ],
      "author": {
        "name": "Rashika Kheria",
        "email": "rashika.kheria@gmail.com",
        "time": "Wed Oct 30 18:43:32 2013 +0530"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:17 2015 -0700"
      },
      "message": "Staging: zram: Fix variable dereferenced before check\n\nThis patch fixes the following Smatch warning in zram_drv.c-\ndrivers/staging/zram/zram_drv.c:899\ndestroy_device() warn: variable dereferenced before check \u0027zram-\u003edisk\u0027 (see line 896)\n\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nSigned-off-by: Rashika Kheria \u003crashika.kheria@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "af00a7aa0176c4f55a5158e7534abe8362ed4047",
      "tree": "cd0fa0f342368a03dd6cbbd9bd9b7a0fa437912a",
      "parents": [
        "655b898ab758950df568b1fcd040f527194ccffe"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Thu Sep 12 15:41:31 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:17 2015 -0700"
      },
      "message": "Revert \"staging: zram: Add auto loading of module if user opens /dev/zram.\"\n\nThis reverts commit c70bda992c12e593e411c02a52e4bd6985407539.\n\nIt\u0027s incorrect, Kay writes:\n\tPlease just remove it. \"devname\" is meant to be used for\n\tsingle-instance devices with a static dev_t, never for things\n\tlike zramX.\n\n\tIt will not do anything useful here, it does nothing really\n\twithout a statically assigned dev_t, and it should not be used\n\tfor devices of this kind anyway.\n\nReported-by: Tom Gundersen \u003cteg@jklm.no\u003e\nReported-by: Kay Sievers \u003ckay@vrfy.org\u003e\nCc: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "655b898ab758950df568b1fcd040f527194ccffe",
      "tree": "d84e351c4d8ecd0234aa681dd87df606b2dc5487",
      "parents": [
        "2c027b5e240fac6d5454fdd00116b031cd768b82"
      ],
      "author": {
        "name": "Nitin Cupta",
        "email": "ngupta@vflare.org",
        "time": "Wed Dec 11 11:04:37 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:17 2015 -0700"
      },
      "message": "zsmalloc: add more comment\n\nThis patch adds lots of comments and it will help others\nto review and enhance.\n\nSigned-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nSigned-off-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "2c027b5e240fac6d5454fdd00116b031cd768b82",
      "tree": "d31aefa2f1fcf6806e6e2ae8c3090b87ffed7fc1",
      "parents": [
        "cecd4626b065b68293edae6fb94313dec1f55ef2"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Wed Dec 11 11:04:36 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "zsmalloc: add Kconfig for enabling page table method\n\nZsmalloc has two methods 1) copy-based and 2) pte based to\naccess objects that span two pages.\nYou can see history why we supported two approach from [1].\n\nBut it was bad choice that adding hard coding to select arch\nwhich want to use pte based method because there are lots of\nSoC in an architecure and they can have different cache size,\nCPU speed and so on so it would be better to expose it to user\nas selectable Kconfig option like Andrew Morton suggested.\n\n[1] https://lkml.org/lkml/2012/7/11/58\n\nAcked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\nReviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "cecd4626b065b68293edae6fb94313dec1f55ef2",
      "tree": "57d9fe5696e1952a79ae74293253e6114c15c56a",
      "parents": [
        "4c45ccc731e2c1acbe91d9429bd180686cb7ea29"
      ],
      "author": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Mon Nov 04 15:51:51 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "staging: zsmalloc: Ensure handle is never 0 on success\n\nzsmalloc encodes a handle using the pfn and an object\nindex. On hardware platforms with physical memory starting\nat 0x0 the pfn can be 0. This causes the encoded handle to be\n0 and is incorrectly interpreted as an allocation failure.\n\nThis issue affects all current and future SoCs with physical\nmemory starting at 0x0. All MSM8974 SoCs which includes\nGoogle Nexus 5 devices are affected.\n\nTo prevent this false error we ensure that the encoded handle\nwill not be 0 when allocation succeeds.\n\nChange-Id: I5ad31712be4dd5105ebee81fa95927039c0f6935\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "4c45ccc731e2c1acbe91d9429bd180686cb7ea29",
      "tree": "c3e9bcb7df2977635af076b658a28d101ed9feef",
      "parents": [
        "f799b8da60d12f60f289be9cede7b3e9d0a9a9dc"
      ],
      "author": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Tue Nov 12 17:52:47 2013 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "staging: zsmalloc: Rename page_mapcount_reset\n\nThe page_mapcount_reset function was renamed from\nreset_page_mapcount when back-porting zsmalloc from 3.10 kernel.\nRevert this change to enable compilation of zsmalloc.\n\nChange-Id: Iba09fc3f0294dae746d2e2b026e0015711c22f01\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "f799b8da60d12f60f289be9cede7b3e9d0a9a9dc",
      "tree": "b2fd52d580a1b230f6a460875c2edc1ca1e5a15f",
      "parents": [
        "9ad7765ea3d56ff830ffbf2970cb4acb0672b5c6"
      ],
      "author": {
        "name": "Sunghan Suh",
        "email": "sunghan.suh@samsung.com",
        "time": "Fri Jul 12 16:08:13 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "staging: zsmalloc: access page-\u003eprivate by using page_private macro\n\nChange-Id: Ia09720c7787bc03c69d01874437bdc619cae8c7e\nSigned-off-by: Sunghan Suh \u003csunghan.suh@samsung.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: e842b976a88a39b447fc34bd0fcb3c0be0a1d9d9\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "9ad7765ea3d56ff830ffbf2970cb4acb0672b5c6",
      "tree": "9f2b860b1e5f5ddfb09c5d7374593722e9f2c319",
      "parents": [
        "8b2700499aa8bd53a27318ea6c99d5a6d268276f"
      ],
      "author": {
        "name": "Sara Bird",
        "email": "sara.bird.iar@gmail.com",
        "time": "Mon May 20 15:18:14 2013 -0400"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "staging/zsmalloc: Fixed up incorrect formatted comments\n\nThe existing comments are using an odd style. Fixed them up to adhere\nto the StyleGuide. No code changes.\n\nChange-Id: I24a720787c00a79883cb268ebf1257b525655f7d\nSigned-off-by: Sara Bird \u003csara.bird.iar@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 396b7fd6f9668c04f20ee6daca3054f5c5ec1056\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "8b2700499aa8bd53a27318ea6c99d5a6d268276f",
      "tree": "ca33e4f01bfcb3f7e0e0240314f37ae5aa9983cb",
      "parents": [
        "4ec5660b1e75a02256e0eea324a4570e0c08ea02"
      ],
      "author": {
        "name": "Marlies Ruck",
        "email": "marlies.ruck@gmail.com",
        "time": "Wed May 15 16:56:49 2013 -0400"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "Staging: Fixes string split across lines in zsmalloc zsmalloc-main\n\nFixes the following checkpatch warning:\nWARNING: quoted string split across lines\n\nChange-Id: Ia192b2d0213de838d61f77db233169c802a4419f\nSigned-off-by: Marlies Ruck \u003cmarlies.ruck@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 93ad5ab50476aa7e2b33aac31f41d0efc9f729d7\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "4ec5660b1e75a02256e0eea324a4570e0c08ea02",
      "tree": "d2b219d03103ba8df2de79b7a237494514729dce",
      "parents": [
        "880da9442ee200f8570c79c1079b17902600882e"
      ],
      "author": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Fri Oct 11 15:32:37 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "zsmalloc: use 3.10 version of zsmalloc\n\ncommit 796ce5a7e4ef88ee0bfbeaa80070a51570650d57\nAuthor: Arnd Bergmann \u003carnd@arndb.de\u003e\nDate:   Tue Apr 23 18:30:48 2013 +0200\n\n    staging/zsmalloc: don\u0027t use pgtable-mapping from modules\n\n    Building zsmalloc as a module does not work on ARM because it uses\n    an interface that is not exported:\n\n    ERROR: \"flush_tlb_kernel_range\" [drivers/staging/zsmalloc/zsmalloc.ko] undefined!\n\n    Since this is only used as a performance optimization and only on ARM,\n    we can avoid the problem simply by not using that optimization when\n    building zsmalloc it is a loadable module.\n\n    flush_tlb_kernel_range is often an inline function, but out of the\n    architectures that use an extern function, only powerpc exports\n    it.\n\n    Signed-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\n    Cc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n    Cc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Cc: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit d95abbbb291bf5bce078148f53603ce9c0aa1d44\nAuthor: Joerg Roedel \u003cjoro@8bytes.org\u003e\nDate:   Wed Mar 27 01:43:14 2013 +0100\n\n    staging: zsmalloc: Fix link error on ARM\n\n    Testing the arm chromebook config against the upstream\n    kernel produces a linker error for the zsmalloc module from\n    staging. The symbol flush_tlb_kernel_range is not available\n    there. Fix this by removing the reimplementation of\n    unmap_kernel_range in the zsmalloc module and using the\n    function directly. The unmap_kernel_range function is not\n    usable by modules, so also disallow building the driver as a\n    module for now.\n\n    Cc: stable \u003cstable@vger.kernel.org\u003e\n    Signed-off-by: Joerg Roedel \u003cjoro@8bytes.org\u003e\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 22b751c3d0376e86a377e3a0aa2ddbbe9d2eefc1\nAuthor: Mel Gorman \u003cmgorman@suse.de\u003e\nDate:   Fri Feb 22 16:34:59 2013 -0800\n\n    mm: rename page struct field helpers\n\n    The function names page_xchg_last_nid(), page_last_nid() and\n    reset_page_last_nid() were judged to be inconsistent so rename them to a\n    struct_field_op style pattern.  As it looked jarring to have\n    reset_page_mapcount() and page_nid_reset_last() beside each other in\n    memmap_init_zone(), this patch also renames reset_page_mapcount() to\n    page_mapcount_reset().  There are others like init_page_count() but as\n    it is used throughout the arch code a rename would likely cause more\n    conflicts than it is worth.\n\n    [akpm@linux-foundation.org: fix zcache]\n    Signed-off-by: Mel Gorman \u003cmgorman@suse.de\u003e\n    Suggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n\ncommit 0d145a501778042d0411c843ed5b468b41f8a171\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jan 30 09:36:52 2013 -0600\n\n    staging: zsmalloc: remove unused pool name\n\n    zs_create_pool() currently takes a name argument which is\n    never used in any useful way.\n\n    This patch removes it.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Acked-by: Rik van Riel \u003criel@redhat.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 9915518887e83764269d5b617d01782893877ed3\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Mon Jan 28 10:00:08 2013 +0900\n\n    staging: zsmalloc: Fix TLB coherency and build problem\n\n    Recently, Matt Sealey reported he fail to build zsmalloc caused by\n    using of local_flush_tlb_kernel_range which are architecture dependent\n    function so !CONFIG_SMP in ARM couldn\u0027t implement it so it ends up\n    build error following as.\n\n      MODPOST 216 modules\n      LZMA    arch/arm/boot/compressed/piggy.lzma\n      AS      arch/arm/boot/compressed/lib1funcs.o\n    ERROR: \"v7wbi_flush_kern_tlb_range\"\n    [drivers/staging/zsmalloc/zsmalloc.ko] undefined!\n    make[1]: *** [__modpost] Error 1\n    make: *** [modules] Error 2\n    make: *** Waiting for unfinished jobs....\n\n    The reason we used that function is copy method by [1]\n    was really slow in ARM but at that time.\n\n    More severe problem is ARM can prefetch speculatively on other CPUs\n    so under us, other TLBs can have an entry only if we do flush local\n    CPU. Russell King pointed that. Thanks!\n    We don\u0027t have many choices except using flush_tlb_kernel_range.\n\n    My experiment in ARMv7 processor 4 core didn\u0027t make any difference with\n    zsmapbench[2] between local_flush_tlb_kernel_range and flush_tlb_kernel_range\n    but still page-table based is much better than copy-based.\n\n    * bigger is better.\n\n    1. local_flush_tlb_kernel_range: 3918795 mappings\n    2. flush_tlb_kernel_range : 3989538 mappings\n    3. copy-based: 635158 mappings\n\n    This patch replace local_flush_tlb_kernel_range with\n    flush_tlb_kernel_range which are avaialbe in all architectures\n    because we already have used it in vmalloc allocator which are\n    generic one so build problem should go away and performane loss\n    shoud be void.\n\n    [1] f553646, zsmalloc: add page table mapping method\n    [2] https://github.com/spartacus06/zsmapbench\n\n    Cc: stable@vger.kernel.org\n    Cc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\n    Cc: Russell King \u003clinux@arm.linux.org.uk\u003e\n    Cc: Konrad Rzeszutek Wilk \u003ckonrad@darnok.org\u003e\n    Cc: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Cc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Reported-by: Matt Sealey \u003cmatt@genesi-usa.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit d662b8eba94e9f6d4c036719dbf629ef0c9309cf\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Fri Jan 25 11:46:18 2013 -0600\n\n    staging: zsmalloc: make CLASS_DELTA relative to PAGE_SIZE\n\n    Right now ZS_SIZE_CLASS_DELTA is hardcoded to be 16.  This\n    creates 254 classes for systems with 4k pages. However, on\n    PPC64 with 64k pages, it creates 4095 classes which is far\n    too many.\n\n    This patch makes ZS_SIZE_CLASS_DELTA relative to PAGE_SIZE\n    so that regardless of the page size, there will be the same\n    number of classes.\n\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 4bbc0bc06b8b0cced31ee17beb753ad51a2e47e7\nAuthor: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nDate:   Fri Jan 4 12:14:00 2013 -0800\n\n    staging: zsmalloc: comment zs_create_pool function\n\n    Just as with zs_malloc() and zs_map_object(), it is worth\n    formally commenting the zs_create_pool() function.\n\n    Signed-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 0959c63f11c3bbef0a7d6c5011be8d25503f547c\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Aug 8 15:12:17 2012 +0900\n\n    zsmalloc: collapse internal .h into .c\n\n    The patch collapses in the internal zsmalloc_int.h into\n    the zsmalloc-main.c file.\n\n    This is done in preparation for the promotion to mm/ where\n    separate internal headers are discouraged.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Reviewed-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit f553646a67cb215577402cb702b67c8cf8fdb46f\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jul 18 11:55:56 2012 -0500\n\n    staging: zsmalloc: add page table mapping method\n\n    This patchset provides page mapping via the page table.\n    On some archs, most notably ARM, this method has been\n    demonstrated to be faster than copying.\n\n    The logic controlling the method selection (copy vs page table)\n    is controlled by the definition of USE_PGTABLE_MAPPING which\n    is/can be defined for any arch that performs better with page\n    table mapping.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit c60369f011251c60de506994aab088f1afb90bf4\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jul 18 11:55:55 2012 -0500\n\n    staging: zsmalloc: prevent mappping in interrupt context\n\n    Because we use per-cpu mapping areas shared among the\n    pools/users, we can\u0027t allow mapping in interrupt context\n    because it can corrupt another users mappings.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 6539a36c0cb9ec7f1c1633b535ac83b2bdf0ae6d\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jul 18 11:55:54 2012 -0500\n\n    staging: zsmalloc: s/firstpage/page in new copy map funcs\n\n    firstpage already has precedent and meaning the first page\n    of a zspage.  In the case of the copy mapping functions,\n    it is the first of a pair of pages needing to be mapped.\n\n    This patch just renames the firstpage argument to \"page\" to\n    avoid confusion.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit b74185108668ef966e663878adbad65e03bfcb43\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jul 2 16:15:52 2012 -0500\n\n    staging: zsmalloc: add mapping modes\n\n    This patch improves mapping performance in zsmalloc by getting\n    usage information from the user in the form of a \"mapping mode\"\n    and using it to avoid unnecessary copying for objects that span\n    pages.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 166cfda752ca22eb6912614993b85f9a997dbd8f\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jul 2 16:15:51 2012 -0500\n\n    staging: zsmalloc: add details to zs_map_object boiler plate\n\n    Add information on the usage limits of zs_map_object()\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 103123305c4f695cbb11555d51a32ea14d6bed05\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jul 2 16:15:50 2012 -0500\n\n    staging: zsmalloc: add single-page object fastpath in unmap\n\n    Improve zs_unmap_object() performance by adding a fast path for\n    objects that don\u0027t span pages.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 5f601902c61e6cda627ec71c10609021067ed0fa\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jul 2 16:15:49 2012 -0500\n\n    staging: zsmalloc: remove x86 dependency\n\n    This patch replaces the page table assisted object mapping\n    method, which has x86 dependencies, with a arch-independent\n    method that does a simple copy into a temporary per-cpu\n    buffer.\n\n    While a copy seems like it would be worse than mapping the pages,\n    tests demonstrate the copying is always faster and, in the case of\n    running inside a KVM guest, roughly 4x faster.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 069f101fa463351f528773d73b74e9b606b3f66a\nAuthor: Ben Hutchings \u003cben@decadent.org.uk\u003e\nDate:   Wed Jun 20 02:31:11 2012 +0100\n\n    staging: zsmalloc: Finish conversion to a separate module\n\n    ZSMALLOC is tristate, but the code has no MODULE_LICENSE and since it\n    depends on GPL-only symbols it cannot be loaded as a module.  This in\n    turn breaks zram which now depends on it.  I assume it\u0027s meant to be\n    Dual BSD/GPL like the other z-stuff.\n\n    There is also no module_exit, which will make it impossible to unload.\n    Add the appropriate module_init and module_exit declarations suggested\n    by comments.\n\n    Reported-by: Christian Ohm \u003cchr.ohm@gmx.net\u003e\n    References: http://bugs.debian.org/677273\n    Cc: stable@vger.kernel.org # v3.4\n    Signed-off-by: Ben Hutchings \u003cben@decadent.org.uk\u003e\n    Reviewed-by: Jonathan Nieder \u003cjrnieder@gmail.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit b4b700c5a61c6e6db976f60d4eb6ad369e838aa9\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jun 13 16:03:42 2012 -0500\n\n    staging: zsmalloc: fix uninit\u0027ed variable warning\n\n    This patch fixes an uninitialized variable warning in\n    alloc_zspage().  It also fixes the secondary issue of\n    prev_page leaving scope on each loop iteration.  The only\n    reason this ever worked was because prev_page was occupying\n    the same space on the stack on each iteration.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Reported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 2db51dae56240b52fe08ddbb1a2eb47fe7cfd044\nAuthor: Nitin Gupta \u003cngupta@vflare.org\u003e\nDate:   Sat Jun 9 17:41:14 2012 -0700\n\n    staging: zsmalloc documentation\n\n    Documentation of various struct page fields\n    used by zsmalloc.\n\n    Changes for v2:\n    \t- Regroup descriptions as suggested by Konrad\n\n    Signed-off-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Acked-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n    Reviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit c234434835b1f4bad9bdbae6710044cba387c9e5\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Fri Jun 8 15:39:25 2012 +0900\n\n    staging: zsmalloc: zsmalloc: use unsigned long instead of void *\n\n    We should use unsigned long as handle instead of void * to avoid any\n    confusion. Without this, users may just treat zs_malloc return value as\n    a pointer and try to deference it.\n\n    This patch passed compile test(zram, zcache and ramster) and zram is\n    tested on qemu.\n\n    changelog\n      * from v2\n    \t- remove hval pointed out by Nitin\n    \t- based on next-20120607\n      * from v1\n    \t- change zcache\u0027s zv_create return value\n    \t- baesd on next-20120604\n\n    Cc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\n    Acked-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 00a61d8618bb7314113eb3ba27c12631cd85c298\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Thu May 3 15:40:40 2012 +0900\n\n    staging: zsmalloc: add/fix function comment\n\n    Add/fix the comment.\n\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 2e3b61547191a5934ff6c789aaa4d7e9a9e52f5a\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Thu May 3 15:40:39 2012 +0900\n\n    staging: zsmalloc: rename zspage_order with zspage_pages\n\n    zspage_order defines how many pages are needed to make a zspage.\n    So _order_ is rather awkward naming. It already deceive Jonathan\n    - http://lwn.net/Articles/477067/\n    \" For each size, the code calculates an optimum number of pages (up to 16)\"\n\n    Let\u0027s change from _order_ to _pages_ and some function names.\n\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit d210267741fb2a8b6d741d9040703683a39087f4\nMerge: 69964ea 5bb196a\nAuthor: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nDate:   Wed May 2 11:48:07 2012 -0700\n\n    Merge 3.4-rc5 into staging-next\n\n    This resolves the conflict in:\n    \tdrivers/staging/vt6656/ioctl.c\n\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit a27545bf0bab9027e5c040901b68956551d9f63e\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Apr 25 15:23:09 2012 +0900\n\n    zsmalloc: use PageFlag macro instead of [set|test]_bit\n\n    MM code always uses PageXXX to handle page flags.\n    Let\u0027s keep the consistency.\n\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\nChange-Id: I542f0b9eaf0264e1c9e38f9669fec8ea0debae7c\nSigned-off-by: Larry Bassel \u003clbassel@codeaurora.org\u003e\n"
    },
    {
      "commit": "880da9442ee200f8570c79c1079b17902600882e",
      "tree": "11f7a2cc01ea1dd98c5327f09b866adb625a7d3f",
      "parents": [
        "13556dd8cacef9186ca6387b3de4fe9b96b1507b"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Thu Feb 26 22:56:44 2015 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "Revert \"staging: zsmalloc: Finish conversion to a separate module\"\n\nThis reverts commit c7815406caf7efdd805e893caef4a63e61b7645e.\n\nChange-Id: Ibdc3a6ae96f305c8440b1c87e60e0647045e26c6\n"
    },
    {
      "commit": "13556dd8cacef9186ca6387b3de4fe9b96b1507b",
      "tree": "fa17029e24f2e05e1899ec53e41eac4c94e2f33c",
      "parents": [
        "03c6a505ed2d37c159056f395a205dc4fe8c50a3"
      ],
      "author": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Thu Oct 31 17:53:41 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "staging: zram: Rate limit memory allocation errors\n\nIf an error occurs allocating memory for zram we will not be able\nto fullfill the request to store the page in zram. The swap subsystem\nstill continues to try to swap out pages to zram even when this error\noccurs since there is currently no facility to stop the swap subsystem\nfrom swapping out during such errors. This can cause the system to be\noverflowed with logging errors.\n\nReduce the amount of logging to prevent the kernel log\nfrom being filled with these error messages.\n\nChange-Id: I54b920337749ece59d9ca78fa8b29345ec7b976b\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "03c6a505ed2d37c159056f395a205dc4fe8c50a3",
      "tree": "fc4dd09d63e651bff9cad2733244b8dd62c5cbf3",
      "parents": [
        "23126253db8793a9cab0b4cf9ae0acda2ead0e75"
      ],
      "author": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Thu Sep 05 09:17:58 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "zram: Change ratio to 90% for bad compress\n\nChange the ratio for determining whether or not we should store\npages as uncompressed in zram. This will allow zram to fit more\ndata since more of the pages will be stored as compressed.\n\nChange-Id: I37170cafff7e8a4cc44f1622fe52a6cbff85f218\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "23126253db8793a9cab0b4cf9ae0acda2ead0e75",
      "tree": "afecb8cd8d5ba31dc0137983649845bc1fbcd8d5",
      "parents": [
        "878c89b1ff0a936a06aef5fcf426ccab98607686"
      ],
      "author": {
        "name": "Olav Haugan",
        "email": "ohaugan@codeaurora.org",
        "time": "Fri Nov 01 17:08:26 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "zram: Disable allocation failure logging\n\nDisable the logging of errors when allocations fail\nfor zram pages. This avoid excessive logging when system is\nvery low on memory.\n\nChange-Id: Ifabcf8f1b9c3e3717599d6a0a924f7b2061f00ea\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "878c89b1ff0a936a06aef5fcf426ccab98607686",
      "tree": "be7d9012b155a8dd77681e1e6052851f454d0826",
      "parents": [
        "1b88b125e69c5f4e2753a13c74629ffb8e6f7940"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Mon Aug 12 15:13:56 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:16 2015 -0700"
      },
      "message": "zram: don\u0027t grab mutex in zram_slot_free_noity\n\n[1] introduced down_write in zram_slot_free_notify to prevent race\nbetween zram_slot_free_notify and zram_bvec_[read|write]. The race\ncould happen if somebody who has right permission to open swap device\nis reading swap device while it is used by swap in parallel.\n\nHowever, zram_slot_free_notify is called with holding spin_lock of\nswap layer so we shouldn\u0027t avoid holing mutex. Otherwise, lockdep\nwarns it.\n\nThis patch adds new list to handle free slot and workqueue\nso zram_slot_free_notify just registers slot index to be freed and\nregisters the request to workqueue. If workqueue is expired,\nit holds mutex_lock so there is no problem any more.\n\nIf any I/O is issued, zram handles pending slot-free request\ncaused by zram_slot_free_notify right before handling issued\nrequest because workqueue wouldn\u0027t be expired yet so zram I/O\nrequest handling function can miss it.\n\nLastly, when zram is reset, flush_work could handle all of pending\nfree request so we shouldn\u0027t have memory leak.\n\nNOTE: If zram_slot_free_notify\u0027s kmalloc with GFP_ATOMIC would be\nfailed, the slot will be freed when next write I/O write the slot.\n\n[1] [57ab0485, zram: use zram-\u003elock to protect zram_free_page()\n    in swap free notify path]\n\n* from v2\n  * refactoring\n\n* from v1\n  * totally redesign\n\nChange-Id: Ic69dce098c89bb7cb5563566b802375320b90a76\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: a0c516cbfc7452c8cbd564525fef66d9f20b46d1\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "1b88b125e69c5f4e2753a13c74629ffb8e6f7940",
      "tree": "ee78e68771bd1f1af9375cb09f5f493a1edfe22a",
      "parents": [
        "89e12ec27bdf428fb2789ab250005785af23d0db"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan@kernel.org",
        "time": "Mon Aug 12 15:13:55 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: fix invalid memory access\n\n[1] tried to fix invalid memory access on zram-\u003edisk but it didn\u0027t\nfix properly because get_disk failed during module exit path.\n\nActually, we don\u0027t need to reset zram-\u003edisk\u0027s capacity to zero\nin module exit path so that this patch introduces new argument\n\"reset_capacity\" on zram_reset_divice and it only reset it when\nreset_store is called.\n\n[1] 6030ea9b,  zram: avoid invalid memory access in zram_exit()\n\nChange-Id: I6616ac8f82aab6d03a47f3cfb91d28a825e6e3a6\nCc: Nitin Gupta \u003cngupta@vflare.org\u003e\nCc: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 2b86ab9cc29fcd435cde9378c3b9ffe8b5c76128\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "89e12ec27bdf428fb2789ab250005785af23d0db",
      "tree": "cac3b0c051304d55b38cbe7f575a2bc1fff99f5a",
      "parents": [
        "b4b5091fd7a702c2b1076f30abe10d9b6a02494c"
      ],
      "author": {
        "name": "Kumar Gaurav",
        "email": "kumargauravgupta3@gmail.com",
        "time": "Thu Aug 08 23:53:24 2013 +0530"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "Staging: zram: zram_drv.c: Fixed Error of trailing whitespace\n\nFixed by removing trailing whitespace\n\nChange-Id: If43b8acf92d4c504c443c8e4c7995de3e410aca0\nSigned-off-by: Kumar Gaurav \u003ckumargauravgupta3@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: a539c72a195c081d950475c2945cb82d80be9b66\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "b4b5091fd7a702c2b1076f30abe10d9b6a02494c",
      "tree": "99caaf03c4e68f40c511be3d401bba59a1780af7",
      "parents": [
        "631a70e7b7b4bcb69fdfa21c0abe431ceb28df37"
      ],
      "author": {
        "name": "Sunghan Suh",
        "email": "sunghan.suh@samsung.com",
        "time": "Wed Jul 03 20:10:05 2013 +0900"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: prevent data loss in error cases of function zram_bvec_write()\n\nIn function zram_bvec_write(), previous data at the index is\nalready freed by function zram_free_page().\nWhen failed to compress or zs_malloc, there is no way to restore old data.\nTherefore, free previous data when it\u0027s about to update.\n\nAlso, no need to check whether table is not empty outside of\nfunction zram_free_page(), because the function properly checks inside.\n\nChange-Id: I8cb3daf146a99d3b5999c7a42e5e2a260f4c3a48\nSigned-off-by: Sunghan Suh \u003csunghan.suh@samsung.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: f40ac2ae1b506484dd9261a24bbf3e86b2206ff8\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "631a70e7b7b4bcb69fdfa21c0abe431ceb28df37",
      "tree": "13ab14bbe5579f40d8a0479baa2259943797fdc0",
      "parents": [
        "aa3e3d99f296f539cf88bc0d8b4b3a80168d3af8"
      ],
      "author": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Fri Jul 12 14:20:52 2013 -0400"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "staging: zram: Add auto loading of module if user opens /dev/zram.\n\nGreg spotted that said driver is not subscribing to the automagic\nmechanism of auto-loading if a user tries to open /dev/zram.\n\nThis fixes it.\n\nChange-Id: Ib169a11a1a2717967350015d58d77f431ab5b973\nCC: Minchan Kim \u003cminchan@kernel.org\u003e\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: c70bda992c12e593e411c02a52e4bd6985407539\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "aa3e3d99f296f539cf88bc0d8b4b3a80168d3af8",
      "tree": "efae272f5d50b98c30c53c651de1e35d9867aaf9",
      "parents": [
        "756841238bc9667fc9b2e5247f6729d79900e0ae"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Wed Jun 26 15:28:39 2013 +0300"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "staging: zram: protect zram_reset_device() call\n\nCommit 9b3bb7abcdf2df0f1b2657e6cbc9d06bc2b3b36f (remove\nzram_sysfs file (v2)) accidentally made zram_reset_device()\nracy. Protect zram_reset_device() call with zram-\u003elock.\n\nChange-Id: I93ce19f9b262584f4ef805dce5ed4de9b3968a30\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nAcked-by: Jerome Marchand \u003cjmarchand@redhat.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 644d478793c6594277f8ae76954da4ace7ac6f96\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "756841238bc9667fc9b2e5247f6729d79900e0ae",
      "tree": "a6c856ad2dc5b9154cc80f936f88170db0bff662",
      "parents": [
        "d0177a579bf743726d946fe6d1799d604c875b72"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Sat Jun 22 17:21:00 2013 +0300"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: allow request end to coincide with disksize\n\nPass valid_io_request() checks if request end coincides with disksize\n(end equals bound), only fail if we attempt to read beyond the bound.\n\nmkfs.ext2 produces numerous errors:\n[ 2164.632747] quiet_error: 1 callbacks suppressed\n[ 2164.633260] Buffer I/O error on device zram0, logical block 153599\n[ 2164.633265] lost page write due to I/O error on zram0\n\nChange-Id: I71f9f52ec11897d0462d3ff54a853040faf36dcd\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 75c7caf5a052ffd8db3312fa7864ee2d142890c4\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "d0177a579bf743726d946fe6d1799d604c875b72",
      "tree": "5e51989626017bf82164d332e5a22d676034b320",
      "parents": [
        "d90dffe4b1cbf6f07a2afdd2c3ced3302d2c8e4e"
      ],
      "author": {
        "name": "Sergey Senozhatsky",
        "email": "sergey.senozhatsky@gmail.com",
        "time": "Sat Jun 22 03:21:18 2013 +0300"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: remove zram_sysfs file (v2)\n\nMove zram sysfs code to zram drv and remove zram_sysfs.c\nfile. This gives ability to make static a number of previously\nexported zram functions, used from zram sysfs, e.g. internal zram\nzram_meta_alloc/free(). We also can drop zram_drv wrapper\nfunctions, used from zram sysfs:\ne.g. zram_reset_device()/__zram_reset_device() pair.\n\nv2: as suggested by Greg K-H, move MODULE description to the\nbottom of the file.\n\nChange-Id: I2338b812daa1fef0ec7015082ecccb8ec6c84b8f\nSigned-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 9b3bb7abcdf2df0f1b2657e6cbc9d06bc2b3b36f\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "d90dffe4b1cbf6f07a2afdd2c3ced3302d2c8e4e",
      "tree": "9c8b3caf8b6d3214679289f087d9e34fe6dca962",
      "parents": [
        "5d2f732cd4d18443e3ba2f0b644adb2b26759006"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:31 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: use atomic64_xxx() to replace zram_stat64_xxx()\n\nUse atomic64_xxx() to replace open-coded zram_stat64_xxx().\nSome architectures have native support of atomic64 operations,\nso we can get rid of the spin_lock() in zram_stat64_xxx().\nOn the other hand, for platforms use generic version of atomic64\nimplement, it may cause an extra save/restore of the interrupt\nflag.  So it\u0027s a tradeoff.\n\nChange-Id: Ic1e5f79328b998ec2d0b571851199dfd2d5560a6\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: da5cc7d338f97886ebf35be92995460289379b73\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "5d2f732cd4d18443e3ba2f0b644adb2b26759006",
      "tree": "73c8eba77296de0aed2203f463991ad0f97b9f71",
      "parents": [
        "f43a264d001aab6ad9518a0f0f50684cf3100d84"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:28 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: simplify and optimize dev_to_zram()\n\nSimplify and optimize dev_to_zram() without walking the zram_devices\narray.\n\nChange-Id: I7d2031baabfd880ee8479abf3657358cd7db57cb\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 80de574dca050b734d8413a98a983fba3d06240b\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "f43a264d001aab6ad9518a0f0f50684cf3100d84",
      "tree": "ab1ae461532d52291d2e71cf412ad0ec310d188b",
      "parents": [
        "417ccebb554e11d5a5a0219ba59b328df809778f"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:27 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: protect sysfs handler from invalid memory access\n\nUse zram-\u003einit_lock to protect access to zram-\u003emeta, otherwise it\nmay cause invalid memory access if zram-\u003emeta has been freed by\nzram_reset_device().\n\nThis issue may be triggered by:\nThread 1:\nwhile true; do cat mem_used_total; done\nThread 2:\nwhile true; do echo 8M \u003e disksize; echo 1 \u003e reset; done\n\nChange-Id: Id6105b37f083cfd41d9885a251aeef61f72bb92f\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 5863e10b441e7ea4b492f930f1be180a97d026f3\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "417ccebb554e11d5a5a0219ba59b328df809778f",
      "tree": "d9e5b024918e29eac22dbb85a3a14036719d660d",
      "parents": [
        "d4c1ecf16b816aafeeecbda0c2313633b5803cd6"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:30 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: optimize memory operations with clear_page()/copy_page()\n\nSome architectures provides architecture-specific, optimized version of\nclear_page()/copy_page(), which may have better performance than\nmemset()/memcpy(). So use clear_page()/copy_page() to optimize zram\nperformance if possible.\n\nChange-Id: I6b4530f16d45d0005ff498f48b03f727e73044cb\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 42e99bd975fdd24d2bf1a24ebb8b0b42bab8ba65\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "d4c1ecf16b816aafeeecbda0c2313633b5803cd6",
      "tree": "0754385ae3c44e1792e482c35121ab3226c617e6",
      "parents": [
        "47a938b6cdd8eaac43eae1851eab5f425408abb7"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:29 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:15 2015 -0700"
      },
      "message": "zram: kill unused zram_get_num_devices()\n\nNow there\u0027s no caller of zram_get_num_devices(), so kill it.\nAnd change zram_devices to static because it\u0027s only used in zram_drv.c.\n\nChange-Id: Iaf686cf9ae9673325ba481f001df689cedfa2c66\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 0f0e3ba346c8d8d2cb409b157df79805931a1c2c\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "47a938b6cdd8eaac43eae1851eab5f425408abb7",
      "tree": "4569c2e443a60cb464157e85b91f5cea6901f312",
      "parents": [
        "2d87eb637c15f50bd36c804fed3d7913ef6a244e"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:26 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: avoid access beyond the zram device\n\nFunction valid_io_request() should verify the entire request are within\nthe zram device address range. Otherwise it may cause invalid memory\naccess when accessing/modifying zram-\u003emeta-\u003etable[index] because the\n\u0027index\u0027 is out of range. Then it may access non-exist memory, randomly\nmodify memory belong to other subsystems, which is hard to track down.\n\nChange-Id: Ic6630e8ed5945b7c0f4f63ccc378f9780dfc4567\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 12a7ad3b810e77137d0caf97a6dd97591e075b30\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "2d87eb637c15f50bd36c804fed3d7913ef6a244e",
      "tree": "cc2a3cc336d5cae967c35959384cb4923ef0e603",
      "parents": [
        "a33b81e2b628cd0bf6862a82d9738c22ab0d3e9f"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:25 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: avoid double free in function zram_bvec_write()\n\nWhen doing a patial write and the whole page is filled with zero,\nzram_bvec_write() will free uncmem twice.\n\nChange-Id: I233f44846f29dbf11e05d277506137bc7f11bbd9\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 65c484609a3b25c35e4edcd5f2c38f98f5226093\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "a33b81e2b628cd0bf6862a82d9738c22ab0d3e9f",
      "tree": "89be6a9f372a6887f66b5c85427a79fb482a7351",
      "parents": [
        "4d2c5a0e0637d891135dd16b4bc1e17255fbe235"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:24 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: destroy all devices on error recovery path in zram_init()\n\nOn error recovery path of zram_init(), it leaks the zram device object\ncausing the failure. So change create_device() to free allocated\nresources on error path.\n\nChange-Id: Ia8508ab9aad3201c6fc12634b8e134d78d7d1423\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nAcked-by: Minchan Kim \u003cminchan@kernel.org\u003e\nAcked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 39a9b8ac9333e4268ecff7da6c9d1ab3823ff243\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "4d2c5a0e0637d891135dd16b4bc1e17255fbe235",
      "tree": "fc26ab82f92f6399aecedef70819e1b9d9546b96",
      "parents": [
        "a066cd0630ffae77ae5d53203c1d2f8264c5260d"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:23 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: use zram-\u003elock to protect zram_free_page() in swap free notify path\n\nzram_slot_free_notify() is free-running without any protection from\nconcurrent operations. So there are race conditions between\nzram_bvec_read()/zram_bvec_write() and zram_slot_free_notify(),\nand possible consequences include:\n1) Trigger BUG_ON(!handle) on zram_bvec_write() side.\n2) Access to freed pages on zram_bvec_read() side.\n3) Break some fields (bad_compress, good_compress, pages_stored)\n   in zram-\u003estats if the swap layer makes concurrently call to\n   zram_slot_free_notify().\n\nSo enhance zram_slot_free_notify() to acquire writer lock on zram-\u003elock\nbefore calling zram_free_page().\n\nChange-Id: I805806668d91aaf4c8be7359cb1fd9c877c41f72\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 57ab048532c0d975538cebd4456491b5c34248f4\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "a066cd0630ffae77ae5d53203c1d2f8264c5260d",
      "tree": "4cc206028e05daec1ac707376cf87fd698438ba3",
      "parents": [
        "a8aad73310de4746d75ebbc932d19696c21b6e23"
      ],
      "author": {
        "name": "Jiang Liu",
        "email": "liuj97@gmail.com",
        "time": "Fri Jun 07 00:07:22 2013 +0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: avoid invalid memory access in zram_exit()\n\nMemory for zram-\u003edisk object may have already been freed after returning\nfrom destroy_device(zram), then it\u0027s unsafe for zram_reset_device(zram)\nto access zram-\u003edisk again.\n\nWe can\u0027t solve this bug by flipping the order of destroy_device(zram)\nand zram_reset_device(zram), that will cause deadlock issues to the\nzram sysfs handler.\n\nSo fix it by holding an extra reference to zram-\u003edisk before calling\ndestroy_device(zram).\n\nChange-Id: I1022247325ab2ec31a094587e13d5c4c759e5a36\nSigned-off-by: Jiang Liu \u003cjiang.liu@huawei.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 6030ea9b35971a4200062f010341ab832e878ac9\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "a8aad73310de4746d75ebbc932d19696c21b6e23",
      "tree": "94b93f557626ab9d00f3251d0084de5e7aa69edd",
      "parents": [
        "21ddfc6d751456856ad2e21363208a1b839b53ec"
      ],
      "author": {
        "name": "Marlies Ruck",
        "email": "marlies.ruck@gmail.com",
        "time": "Thu May 16 14:30:39 2013 -0400"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "Staging: Fixes string split across lines in zram\n\nFixes the following checkpatch warning in zram_drv.c:\nWARNING: quoted string split across lines\n\nChange-Id: Ie74672146a958c2636052f20a6340f67f2641cde\nSigned-off-by: Marlies Ruck \u003cmarlies.ruck@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nGit-commit: 596b3dd4c8e172db7806372c9d0347a4e7d28bc5\nGit-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git\nSigned-off-by: Olav Haugan \u003cohaugan@codeaurora.org\u003e\n"
    },
    {
      "commit": "21ddfc6d751456856ad2e21363208a1b839b53ec",
      "tree": "fba56820c935c921bed035f4f663a6018051510d",
      "parents": [
        "eba2c946fe237f47524dcc02cbf4622cf8eeb461"
      ],
      "author": {
        "name": "Larry Bassel",
        "email": "lbassel@codeaurora.org",
        "time": "Fri Oct 11 15:36:02 2013 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "zram: use 3.10 version of zram\n\ncommit 25eeb667599b192ea850a062d69383ee864c06ab\nAuthor: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\nDate:   Wed Mar 13 15:06:16 2013 +0800\n\n    zram: fix zram_bvec_read duplicate dump failure message and stat accumulation\n\n    When zram decompress fails, the code unnecessarily dumps failure messages and\n    does stat accumulation in function zram_decompress_page(), this work is already\n    done in function zram_decompress_page, the patch skips the redundant work.\n\n    Signed-off-by: Wanpeng Li \u003cliwanp@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 78110bb8dc4a7ff331bfa3cfe7d4e287cfb3f22b\nAuthor: Joe Perches \u003cjoe@perches.com\u003e\nDate:   Mon Feb 11 09:41:29 2013 -0800\n\n    staging: Remove unnecessary OOM messages\n\n    alloc failures already get standardized OOM\n    messages and a dump_stack.\n\n    For the affected mallocs around these OOM messages:\n\n    Converted kzallocs with multiplies to kcalloc.\n    Converted kmallocs with multiplies to kmalloc_array.\n    Converted a kmalloc/strlen/strncpy to kstrdup.\n    Moved a spin_lock below a removed OOM message and\n    removed a now unnecessary spin_unlock.\n    Neatened alignment and whitespace.\n\n    Signed-off-by: Joe Perches \u003cjoe@perches.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 1e927711c5ecabe76010ed9249f8f3747829f04f\nAuthor: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nDate:   Fri Feb 8 10:15:10 2013 +0800\n\n    staging: zram: __zram_reset_device() can be static\n\n    Signed-off-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\n    Cc: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 8b3cc3edb745cbc131560d19e3f32d81c07454b1\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Feb 6 08:48:53 2013 +0900\n\n    zram: get rid of lockdep warning\n\n    Lockdep complains about recursive deadlock of zram-\u003einit_lock.\n    [1] made it false positive because we can\u0027t request IO to zram\n    before setting disksize. Anyway, we should shut lockdep up to\n    avoid many reporting from user.\n\n    [1] : zram: force disksize setting before using zram\n\n    Acked-by: Jerome Marchand \u003cjmarchan@redhat.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 152bce6bdd6e6866ff83166ac75177d001c4360d\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Feb 6 08:45:22 2013 +0900\n\n    zram: fix warning of print format\n\n    kbuild bot whinges due to print format mistmatch caused by\n    zram: force disksize setting before using zram.\n\n    This patch fixes it.\n\n    Reported-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 3de738cd30306f754ea35d35b5dad29fdbec84c9\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Jan 30 11:41:41 2013 +0900\n\n    zram: give up lazy initialization of zram metadata\n\n    1) User of zram normally do mkfs.xxx or mkswap before using\n       the zram block device(ex, normally, do it at booting time)\n       It ends up allocating such metadata of zram before real usage so\n       benefit of lazy initialzation would be mitigated.\n\n    2) Some user want to use zram when memory pressure is high.(ie, load zram\n       dynamically, NOT booting time). It does make sense because people don\u0027t\n       want to waste memory until memory pressure is high(ie, where zram is really\n       helpful time). In this case, lazy initialzation could be failed easily\n       because we will use GFP_NOIO instead of GFP_KERNEL for avoiding deadlock.\n       So the benefit of lazy initialzation would be mitigated, too.\n\n    3) Metadata overhead is not critical and Nitin has a plan to diet it.\n       4K : 12 byte(64bit machine) -\u003e 64G : 192M so 0.3% isn\u0027t big overhead\n       If insane user use such big zram device up to 20, it could consume 6% of ram\n       but efficieny of zram will cover the waste.\n\n    So this patch gives up lazy initialization and instead we initialize metadata\n    at disksize setting time.\n\n    Acked-by: Jerome Marchand \u003cjmarchand@redhat.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 0231c403bb065307493fe997ad170487b4d55eb8\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Jan 30 11:41:40 2013 +0900\n\n    zram: force disksize setting before using zram\n\n    Now zram document syas \"set disksize is optional\"\n    but partly it\u0027s wrong. When you try to use zram firstly after\n    booting, you must set disksize, otherwise zram can\u0027t work because\n    zram gendisk\u0027s size is 0. But once you do it, you can use zram freely\n    after reset because reset doesn\u0027t reset to zero paradoxically.\n    So in this time, disksize setting is optional.:(\n    It\u0027s inconsitent for user behavior and not straightforward.\n\n    This patch forces always setting disksize firstly before using zram.\n    Yes. It changes current behavior so someone could complain when\n    he upgrades zram. Apparently it could be a problem if zram is mainline\n    but it still lives in staging so behavior could be changed for right\n    way to go. Let them excuse.\n\n    Acked-by: Jerome Marchand \u003cjmarchand@redhat.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Acked-by: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 7e5a5104c6af709a8d97d5f4711e7c917761d464\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Jan 30 11:41:39 2013 +0900\n\n    zram: Fix deadlock bug in partial read/write\n\n    Now zram allocates new page with GFP_KERNEL in zram I/O path\n    if IO is partial. Unfortunately, It may cause deadlock with\n    reclaim path like below.\n\n    write_page from fs\n    fs_lock\n    allocation(GFP_KERNEL)\n    reclaim\n    pageout\n    \t\t\t\twrite_page from fs\n    \t\t\t\tfs_lock \u003c-- deadlock\n\n    This patch fixes it by using GFP_NOIO.  In read path, we\n    reorganize code flow so that kmap_atomic is called after the\n    GFP_NOIO allocation.\n\n    Cc: stable@vger.kernel.org\n    Acked-by: Jerome Marchand \u003cjmarchand@redhat.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    [ penberg@kernel.org: don\u0027t use GFP_ATOMIC ]\n    Signed-off-by: Pekka Enberg \u003cpenberg@kernel.org\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 0d145a501778042d0411c843ed5b468b41f8a171\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Wed Jan 30 09:36:52 2013 -0600\n\n    staging: zsmalloc: remove unused pool name\n\n    zs_create_pool() currently takes a name argument which is\n    never used in any useful way.\n\n    This patch removes it.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Acked-by: Rik van Riel \u003criel@redhat.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 8f5f90a872c38b4e78f3cc95e8a25434b98e4db2\nMerge: c0cd2da 949db15\nAuthor: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nDate:   Fri Jan 25 21:25:02 2013 -0800\n\n    Merge 3.8-rc5 into staging-next\n\n    This resolves a merge issue with a iio driver, and the zram code.\n\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit d178a07c4bd380492b6aca9e5d3985c19ca88fdb\nAuthor: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nDate:   Tue Jan 1 21:24:29 2013 -0800\n\n    staging: zram: drop zram_stat_dec/inc functions\n\n    It seems like an overkill to have adding and subtracting\n    1 functions from the 32bit counters. Just do it directly.\n\n    Signed-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit cad683fb9d53fa2cbcf82660e663fa1180f86797\nAuthor: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nDate:   Tue Jan 1 21:24:22 2013 -0800\n\n    staging: zram: show correct disksize\n\n    The -\u003edisksize variable stores values in units of bytes,\n    print the correct size in Kb\n\n    Signed-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit ca3d70bd68455133eabcb8a0ae1b40254d87188b\nAuthor: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\nDate:   Tue Jan 1 21:24:13 2013 -0800\n\n    staging: zram: simplify num_devices paramater\n\n    Simplify dealing with num_devices when initializing zram.\n    Also cleanup some of the output messages.\n\n    Signed-off-by: Davidlohr Bueso \u003cdavidlohr.bueso@hp.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 397c60668aa5ae7130b5ad4e73870d7b8a787085\nAuthor: Nitin Gupta \u003cngupta@vflare.org\u003e\nDate:   Wed Jan 2 08:53:41 2013 -0800\n\n    staging: zram: fix invalid memory references during disk write\n\n    Fixes a bug introduced by commit c8f2f0db1 (\"zram: Fix handling\n    of incompressible pages\") which caused invalid memory references\n    during disk write. Invalid references could occur in two cases:\n     - Incoming data expands on compression: In this case, reference was\n    made to kunmap()\u0027ed bio page.\n     - Partial (non PAGE_SIZE) write with incompressible data: In this\n    case, reference was made to a kfree()\u0027ed buffer.\n\n    Fixes bug 50081:\n    https://bugzilla.kernel.org/show_bug.cgi?id\u003d50081\n\n    Signed-off-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Cc: stable \u003cstable@vger.kernel.org\u003e\n    Reported-by: Mihail Kasadjikov \u003chamer.mk@gmail.com\u003e\n    Reported-by: Tomas M \u003ctomas@slax.org\u003e\n    Reviewed-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit dbc320f7490933eb6a073d82aceac75d5e7ce82b\nAuthor: Masanari Iida \u003cstandby24x7@gmail.com\u003e\nDate:   Mon Jan 7 23:28:10 2013 +0900\n\n    staging: Add angle bracket before and after the URL\n\n    Add missing angle bracket before and after the URL.\n\n    Signed-off-by: Masanari Iida \u003cstandby24x7@gmail.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 26907840e63b3187266db1865e76ea9e98b01b19\nAuthor: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nDate:   Tue Oct 30 22:42:31 2012 +0300\n\n    staging: zram: handle mem suffixes in disk size zram_sysfs parameter\n\n    Use memparse() to allow mem suffixes in disksize sysfs number.\n    Examples:\n        echo 256K \u003e /sys/block/zram0/disksize\n        echo 512M \u003e /sys/block/zram0/disksize\n        echo 1G \u003e /sys/block/zram0/disksize\n\n    Signed-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\n    Reviewed-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 37b51fdddf64e7ba0971d070428655f8d6f36578\nAuthor: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\nDate:   Tue Oct 30 22:40:23 2012 +0300\n\n    staging: zram: factor-out zram_decompress_page() function\n\n    zram_bvec_read() shared decompress functionality with zram_read_before_write() function.\n    Factor-out and make commonly used zram_decompress_page() function, which also simplified\n    error handling in zram_bvec_read().\n\n    Signed-off-by: Sergey Senozhatsky \u003csergey.senozhatsky@gmail.com\u003e\n    Reviewed-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit cb1f6268acd7f1bca7153fa9ca187ffb73f60ab8\nMerge: d9ff393 8f0d816\nAuthor: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nDate:   Mon Oct 29 08:37:12 2012 -0700\n\n    Merge 3.7-rc3 into staging-next\n\n    This resolves the conflict with:\n    \tdrivers/staging/comedi/drivers/amplc_dio200.c\n    and syncs up the changes that happened in the staging directory for\n    3.7-rc3.\n\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit c8f2f0db1d0294aaf37e8a85bea9bbc4aaf5c0fe\nAuthor: Nitin Gupta \u003cngupta@vflare.org\u003e\nDate:   Wed Oct 10 17:42:18 2012 -0700\n\n    staging: zram: Fix handling of incompressible pages\n\n    Change 130f315a (staging: zram: remove special handle of uncompressed page)\n    introduced a bug in the handling of incompressible pages which resulted in\n    memory allocation failure for such pages.\n\n    When a page expands on compression, say from 4K to 4K+30, we were trying to\n    do zsmalloc(pool, 4K+30). However, the maximum size which zsmalloc can\n    allocate is PAGE_SIZE (for obvious reasons), so such allocation requests\n    always return failure (0).\n\n    For a page that has compressed size larger than the original size (this may\n    happen with already compressed or random data), there is no point storing\n    the compressed version as that would take more space and would also require\n    time for decompression when needed again. So, the fix is to store any page,\n    whose compressed size exceeds a threshold (max_zpage_size), as-it-is i.e.\n    without compression.  Memory required for storing this uncompressed page can\n    then be requested from zsmalloc which supports PAGE_SIZE sized allocations.\n\n    Lastly, the fix checks that we do not attempt to \"decompress\" the page which\n    we stored in the uncompressed form -- we just memcpy() out such pages.\n\n    Signed-off-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Reported-by: viechweg@gmail.com\n    Reported-by: paerley@gmail.com\n    Reported-by: wu.tommy@gmail.com\n    Acked-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Cc: stable \u003cstable@vger.kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 55dcbbb1bf7eef83bcd3e0ba8de0b359a45804ed\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Wed Oct 10 08:49:52 2012 +0900\n\n    staging: zram: correct obsolete comment on max_zpage_size\n\n    Zram doesn\u0027t use xv_malloc any more so it doesn\u0027t have\n    limitation about zobj_header.\n\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit b74185108668ef966e663878adbad65e03bfcb43\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jul 2 16:15:52 2012 -0500\n\n    staging: zsmalloc: add mapping modes\n\n    This patch improves mapping performance in zsmalloc by getting\n    usage information from the user in the form of a \"mapping mode\"\n    and using it to avoid unnecessary copying for objects that span\n    pages.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 6e2361720b9da9ec830d407da058ca1827e62b12\nAuthor: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\nDate:   Mon Jun 25 11:14:36 2012 -0500\n\n    staging: zram/zcache: swtich Kconfig dependency from X86 to ZSMALLOC\n\n    This patch switches zcache and zram dependency to ZSMALLOC\n    rather than X86.  There is no net change since ZSMALLOC\n    depends on X86, however, this prevent further changes to\n    these files as zsmalloc dependencies change.\n\n    Signed-off-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 80677c2538283678c7b2ef7ebbd653a3fa54d086\nAuthor: Sam Hansen \u003csolid.se7en@gmail.com\u003e\nDate:   Thu Jun 7 16:03:48 2012 -0700\n\n    staging: zram: conventions, __aligned() attribute\n\n    Using the __aligned() attribute in favor of __attribute__((aligned(size)))\n\n    Signed-off-by: Sam Hansen \u003csolid.se7en@gmail.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 94b8435ff4d46dde75173da45564b0d65889dc64\nAuthor: Sam Hansen \u003csolid.se7en@gmail.com\u003e\nDate:   Thu Jun 7 16:03:47 2012 -0700\n\n    staging: zram: conventions pr_warning -\u003e pr_warn()\n\n    Porting zram to use the pr_warn() function instead of the deprecated\n    pr_warning().\n\n    Signed-off-by: Sam Hansen \u003csolid.se7en@gmail.com\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 130f315a174d127cbb90d4d1a4a7088dbcf930b5\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Fri Jun 8 15:39:27 2012 +0900\n\n    staging: zram: remove special handle of uncompressed page\n\n    xvmalloc can\u0027t handle PAGE_SIZE page so that zram have to\n    handle it specially but zsmalloc can do it so let\u0027s remove\n    unnecessary special handling code.\n\n    Quote from Nitin\n    \"I think page vs handle distinction was added since xvmalloc could not\n    handle full page allocation. Now that zsmalloc allows full page\n    allocation, we can just use it for both cases. This would also allow\n    removing the ZRAM_UNCOMPRESSED flag. The only downside will be slightly\n    slower code path for full page allocation but this event is anyways\n    supposed to be rare, so should be fine.\"\n\n    1. This patch reduces code very much.\n\n     drivers/staging/zram/zram_drv.c   |  104 +++++--------------------------------\n     drivers/staging/zram/zram_drv.h   |   17 +-----\n     drivers/staging/zram/zram_sysfs.c |    6 +--\n     3 files changed, 15 insertions(+), 112 deletions(-)\n\n    2. change pages_expand with bad_compress so it can count\n       bad compression(above 75%) ratio.\n\n    3. remove zobj_header which is for back-reference for defragmentation\n       because firstly, it\u0027s not used at the moment and zsmalloc can\u0027t handle\n       bigger size than PAGE_SIZE so zram can\u0027t do it any more without redesign.\n\n    Cc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit 374a69191d12a0525b7ffe1197abc30c4795a230\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Fri Jun 8 15:39:26 2012 +0900\n\n    staging: zram: fix random data read\n\n    fd1a30de makes a bug that it uses (struct page *) as zsmalloc\u0027s handle\n    although it\u0027s a uncompressed page so that it can access random page,\n    return random data or even crashed by get_first_page in zs_map_object.\n\n    Cc: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Cc: Jerome Marchand \u003cjmarchan@redhat.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\ncommit c234434835b1f4bad9bdbae6710044cba387c9e5\nAuthor: Minchan Kim \u003cminchan@kernel.org\u003e\nDate:   Fri Jun 8 15:39:25 2012 +0900\n\n    staging: zsmalloc: zsmalloc: use unsigned long instead of void *\n\n    We should use unsigned long as handle instead of void * to avoid any\n    confusion. Without this, users may just treat zs_malloc return value as\n    a pointer and try to deference it.\n\n    This patch passed compile test(zram, zcache and ramster) and zram is\n    tested on qemu.\n\n    changelog\n      * from v2\n    \t- remove hval pointed out by Nitin\n    \t- based on next-20120607\n      * from v1\n    \t- change zcache\u0027s zv_create return value\n    \t- baesd on next-20120604\n\n    Cc: Dan Magenheimer \u003cdan.magenheimer@oracle.com\u003e\n    Acked-by: Seth Jennings \u003csjenning@linux.vnet.ibm.com\u003e\n    Acked-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n    Signed-off-by: Minchan Kim \u003cminchan@kernel.org\u003e\n    Acked-by: Nitin Gupta \u003cngupta@vflare.org\u003e\n    Signed-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n\nChange-Id: I5157794e120bbae7ba1e5d0f122dae4fba4a079b\nSigned-off-by: Larry Bassel \u003clbassel@codeaurora.org\u003e\n"
    },
    {
      "commit": "eba2c946fe237f47524dcc02cbf4622cf8eeb461",
      "tree": "2312d9e192604a96a01a7865312c55d6e0640de3",
      "parents": [
        "90d376b800f8c0977653c33bfbb1d2c05d3f0340"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Thu Feb 26 22:48:10 2015 -0800"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 20:46:14 2015 -0700"
      },
      "message": "Revert zram to \u0027Merge branch \u0027kmap_atomic\u0027 of git://github.com/congwang/linux\u0027\n\nSquash of the following commits:\n\nRevert \"Staging: zram: Fix memory leak by refcount mismatch\"\n\nThis reverts commit 35a2bae84d5bc0a6609134b51053f78d235940c2.\n\nRevert \"zram: protect sysfs handler from invalid memory access\"\n\nThis reverts commit 0e8af2178cb86033d30c2e468b46e42af8af20d9.\n\nRevert \"Staging: zram: Fix access of NULL pointer\"\n\nThis reverts commit 70e8fcb681a1f43568778bbb74b7ad2655fa8e74.\n\nRevert \"zram: allow request end to coincide with disksize\"\n\nThis reverts commit 1f6074590c50b7a7bc1ef49ff02d749664b9d46d.\n\nRevert \"zram: avoid access beyond the zram device\"\n\nThis reverts commit f3ec6e7a5ba399b324470aae720b3696049fb3e2.\n\nRevert \"zram: destroy all devices on error recovery path in zram_init()\"\n\nThis reverts commit 11fc2ee51436c4bbcf9872ed3d31457490e071de.\n\nRevert \"zram: avoid invalid memory access in zram_exit()\"\n\nThis reverts commit 5e84bf6dcac8cdf4bbe10b238efe8bf3c85012dd.\n\nRevert \"zram: Fix deadlock bug in partial read/write\"\n\nThis reverts commit 74eb879bd073a9a40b7f33ebc551b4510337b4e3.\n\nChange-Id: Ida38dbb2905fb0196e671da88416fe5b623c6332\n"
    },
    {
      "commit": "90d376b800f8c0977653c33bfbb1d2c05d3f0340",
      "tree": "2e2f0bde4c25e198181c99338cd59eda554a26ff",
      "parents": [
        "6ffefa3af07722760dbc1550f92f621c0fb2f86a"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:35:10 2015 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Tue Mar 10 03:43:35 2015 +0000"
      },
      "message": "msm: HTC: m7: Update board file\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: Ib27b704c2284233f117d1a51b55e8b07ae434975\n"
    },
    {
      "commit": "6ffefa3af07722760dbc1550f92f621c0fb2f86a",
      "tree": "f22564ef60ceb21b04b34e05ae34c6f8062214ad",
      "parents": [
        "f3fbdf23fae04ae00caacd9165cafdc79dd8accc"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:36:27 2015 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Tue Mar 10 03:43:12 2015 +0000"
      },
      "message": "input: touchscreen: synaptics_3200: Update Synaptics 3200 driver\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: I4ada940d3b5bb0d6f6b09dcc1d8d79108e241200\n"
    },
    {
      "commit": "f3fbdf23fae04ae00caacd9165cafdc79dd8accc",
      "tree": "dd79ce72d23e731ffa69ccb01baa5a7a6b4a6eff",
      "parents": [
        "00860e0a1a60b38dc7730b4c3e2afb1adb0569ba"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:35:50 2015 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Tue Mar 10 03:42:38 2015 +0000"
      },
      "message": "input: r3gd20: Update R3GD20 gyroscope driver\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: Iaa44e39e9a8df1ac1ac769b99b2a6aa5059a7ced\n"
    },
    {
      "commit": "00860e0a1a60b38dc7730b4c3e2afb1adb0569ba",
      "tree": "ed53f0f885c047b27c17dcf5bc48a521ea673662",
      "parents": [
        "7b08dc6179af0507e13b6d417d161c80510cda85"
      ],
      "author": {
        "name": "Jurica Vukadin",
        "email": "u.ra604@gmail.com",
        "time": "Tue Mar 03 07:53:26 2015 +0100"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Tue Mar 10 03:41:50 2015 +0000"
      },
      "message": "msm: HTC: m4: Board cleanup\n\nChange-Id: I5ae7afc769ab9673c01ab91abb7f48cc4617cee3\n"
    },
    {
      "commit": "7b08dc6179af0507e13b6d417d161c80510cda85",
      "tree": "e7e8f57aac0e426f0ee6e1babc47ca4349ff6bac",
      "parents": [
        "784ba5c1c345de50bc9ce8c81e59ef61c0bc7504"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 19:38:55 2015 +1030"
      },
      "committer": {
        "name": "Brin Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 20:22:21 2015 +0000"
      },
      "message": "msm: HTC: zara: more defconfig cleanup/updates.\n\nGetting ever closer to becoming the m4 twin\n(the devices will stay seperate but similar). \n\nChange-Id: Ide353c67c54324ca8fa1de8028d8f9c0b64561d5\n"
    },
    {
      "commit": "784ba5c1c345de50bc9ce8c81e59ef61c0bc7504",
      "tree": "682b8e093cc4b89820bfd8679d7820aea7c23cd2",
      "parents": [
        "43f8d52ad02e76ddc3c638b24127faaaa1913ed4"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:38:43 2015 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 17:46:23 2015 +0000"
      },
      "message": "misc: tfa9887: Update HTC TFA9887 amp driver\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: Ib9851998705609707f829b3a82410eb8c8662c40\n"
    },
    {
      "commit": "43f8d52ad02e76ddc3c638b24127faaaa1913ed4",
      "tree": "1ffb6985fecc135f2facce18325bd6cdbe254859",
      "parents": [
        "0caf6b2ea395f2acfb671a39a35ea7e3dc92489b"
      ],
      "author": {
        "name": "c_sridur",
        "email": "sridur@codeaurora.org",
        "time": "Mon Dec 01 07:31:46 2014 -0600"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Mon Mar 09 16:59:41 2015 +0000"
      },
      "message": "msm: vidc: T6: Increase the secure buffer size for widewine dash\n\n-Present 64MB is defined for widewine dash playback.\nPlyaback is failing due to allocation request is for\n22 buffers of size each 3MB.\n\n-Fix:Increased the MM-HEAP size to 84 MB to support\nall conditions.\n\nChange-Id: Ib3df9cc78df86ddc29a932a5689509d9b66a1c8e\nSigned-off-by: c_sridur \u003csridur@codeaurora.org\u003e\n"
    },
    {
      "commit": "0caf6b2ea395f2acfb671a39a35ea7e3dc92489b",
      "tree": "3a49b90a4ff8433eda20d6dd748925d34190285b",
      "parents": [
        "0d9e88fc190dd30113134416c7d36dd4817a5473"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 20:50:00 2015 +1030"
      },
      "committer": {
        "name": "Brin Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 10:38:00 2015 +0000"
      },
      "message": "msm: HTC: zara: fixup wrong clock\n\nThis was set to a new value in : zaraul-3.4.10-ga7c2f6e\n\nI must have originally based of 4.2.2 source so this is different\nEverything else (boards and drivers) is up to date though.\nNo need to panic everyone\n\nChange-Id: I24d150287477be055b7b9b6580d498b90ca99e74\n"
    },
    {
      "commit": "0d9e88fc190dd30113134416c7d36dd4817a5473",
      "tree": "28a1cca45a304f92e14e0f3377ae183049a5b774",
      "parents": [
        "d16ba8668aa71579b2d36e2d88d0bd24cb2e0a9d"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:38:16 2015 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@cyanogenmod.org",
        "time": "Mon Mar 09 04:36:46 2015 +0000"
      },
      "message": "msm: camera: Update HTC camera stack drivers\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: I4685f9378fcb1789e232c95771d0eb5e946572a0\n"
    },
    {
      "commit": "d16ba8668aa71579b2d36e2d88d0bd24cb2e0a9d",
      "tree": "4a994c2faeaabdce168cad78ebeefbe834127c59",
      "parents": [
        "18a8e36f3c2dcc00b2e8b27a2465403306176c09"
      ],
      "author": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 16:37:52 2015 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "gerrit@cyanogenmod.org",
        "time": "Mon Mar 09 04:36:46 2015 +0000"
      },
      "message": "msm: HTC: htc_headset_mgr: Update delay\n\n* HTC kernel version: m7stockui-3.4.0-g3a7d36e\n\nChange-Id: I409a5de1f3abccc437e75f6eb5ba293b20094aed\n"
    },
    {
      "commit": "18a8e36f3c2dcc00b2e8b27a2465403306176c09",
      "tree": "1d45766d5c828f2ec0c9095833e8245b48c58e83",
      "parents": [
        "9c7484dc7413f30a65ac63d22d896dd2a77ecd05"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 13:34:52 2015 +1030"
      },
      "committer": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 13:39:18 2015 +1030"
      },
      "message": "msm: HTC: zara: Fixup a yet another build error\n\nThis should have gone in /#/90890/ but merged to early.\n\nChange-Id: I8b5a8bf00573b31d8cf96fc0a942056234ca1660\n"
    },
    {
      "commit": "9c7484dc7413f30a65ac63d22d896dd2a77ecd05",
      "tree": "9ac8bcc7109422a0a1df36b895232d79fef7c912",
      "parents": [
        "531e7a923754991c933fa0b7ba966dafa8b817a2"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 13:13:30 2015 +1030"
      },
      "committer": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 13:14:11 2015 +1030"
      },
      "message": "msm: HTC: zara: fixup warning/errror caused by broken cleanup\n\nMy bad.\n\nChange-Id: I00076be4ae19595537cec6a1d6dab6e538abd2aa\n"
    },
    {
      "commit": "531e7a923754991c933fa0b7ba966dafa8b817a2",
      "tree": "1c2f1a9e027f85bb17235211b35ca44048266d20",
      "parents": [
        "c8ed915f9fa293658730055261759fbb5554dfa7"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 12:25:19 2015 +1030"
      },
      "committer": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Mon Mar 09 12:25:29 2015 +1030"
      },
      "message": "msm: HTC: zara: Remove yet another useless config option\n\nI missed this aswell.\nIt\u0027s not used in our kernel.\n\nChange-Id: I683d6f5e488f729f5298f68faa898a13272437f6\n"
    },
    {
      "commit": "c8ed915f9fa293658730055261759fbb5554dfa7",
      "tree": "119cdd3b6c5cdd82f13e660564fa70abfe6751b7",
      "parents": [
        "b2c53d2d09f8cf5c761def034573748f4ee29be8"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Sun Mar 08 15:08:43 2015 -0700"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 15:08:43 2015 -0700"
      },
      "message": "msm: HTC: zara: Remove useless config option\n\nChange-Id: Ia8336e1be29c10c88c69dbd33583e33ee6d8c0b9\n"
    },
    {
      "commit": "b2c53d2d09f8cf5c761def034573748f4ee29be8",
      "tree": "ab92fb8b5d637d15183f27cd163f1f1893ff0923",
      "parents": [
        "d5d7d8d1efa857926cbd41bb50e9e08d5f68e275"
      ],
      "author": {
        "name": "Brinly Taylor",
        "email": "uberlaggydarwin@gmail.com",
        "time": "Wed Mar 04 18:20:43 2015 +1030"
      },
      "committer": {
        "name": "Ethan Chen",
        "email": "intervigil@gmail.com",
        "time": "Sun Mar 08 15:07:38 2015 -0700"
      },
      "message": "msm: HTC: cleanup CONFIG_MMC_MSM_CARD_HW_DETECTION\n\nzara: remove useless config inherited from stock\nm4: remove ifdef since it will never be called\nville: remove ifdef as it will never be called\nfighter: remove ifdef as it will never be called\n\nChange-Id: I4235a8d8d5bb768a38c98718a9ad0332847bd043\n"
    },
    {
      "commit": "d5d7d8d1efa857926cbd41bb50e9e08d5f68e275",
      "tree": "34c1459c999343c3537eac9163fac51ea0f53554",
      "parents": [
        "55668b81ef9065c6411c9c5cd7fe366bf4a6171c"
      ],
      "author": {
        "name": "David Hays",
        "email": "dhays90@gmail.com",
        "time": "Sun Mar 01 10:03:48 2015 -0600"
      },
      "committer": {
        "name": "David Hays",
        "email": "dhays90@gmail.com",
        "time": "Sun Mar 08 20:41:19 2015 +0000"
      },
      "message": "staging: prima: Merge caf/LA.AF.1.1_rb1.13\n\nwlan: Assoc Req does not Carry proper PSB vaule if ACM is enabled for AC.\nwlan: Defer scan if back to back scan on STA interface.\nwlan: Fix to avoid SAP operating in DFS channel.\nwlan: From HDD remove the logic to try shared auth if open fails.\nWlan: Check for Roam command in csrIsRoamCommandWaitingForSession.\nwlan: Fix to return proper value from wlan_hdd_scan_abort\nTDLS: Fix possible memory poisoning while processing tdls commands\nwlan: Initialize local variable len.\nwlan: Send proper mlm cnf when Add BSS failed during roaming\nwlan: Fix Crash due to SSR triggers during cfg Ops handling\nCCX: Avoid PMKID and send correct MIC for CCKM+RSN scenario\nwlan: TL cleanup is not invoked for TDLS CONNECTING state.\nprima: Change default value of gCountryCodePriority to 1\nwlan: validate QOS context before updating status.\nwlan: Set tdls mode to disable in case of unloading.\nwlan: Resolve accessing invalid HDD context while processing IOCTLs.\nwlan: vos: set wda needShutdown flag when unable to close SMD port\nwlan: Stop traffic as soon as driver started unloading.\n\nChange-Id: Ie3ea96f061d82f95434d99284ec372ed5fabe286\n"
    }
  ],
  "next": "55668b81ef9065c6411c9c5cd7fe366bf4a6171c"
}
