<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/staging/zcache, branch v3.3</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/staging/zcache?h=v3.3</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/staging/zcache?h=v3.3'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-02-08T22:14:14Z</updated>
<entry>
<title>staging: zcache: fix serialization bug in zv stats</title>
<updated>2012-02-08T22:14:14Z</updated>
<author>
<name>Seth Jennings</name>
<email>sjenning@linux.vnet.ibm.com</email>
</author>
<published>2011-12-30T16:42:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2a4830110b90deb4ee99b1ab8c8ebb120f27c0c8'/>
<id>urn:sha1:2a4830110b90deb4ee99b1ab8c8ebb120f27c0c8</id>
<content type='text'>
In a multithreaded workload, the zv_curr_dist_counts
and zv_cumul_dist_counts statistics are being corrupted
because the increments and decrements in zv_create
and zv_free are not atomic.

This patch converts these statistics and their corresponding
increments/decrements/reads to atomic operations.

Signed-off-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Acked-by: Dan Magenheimer &lt;dan.magenheimer@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>zcache: Set SWIZ_BITS to 8 to reduce tmem bucket lock contention.</title>
<updated>2012-02-08T22:14:12Z</updated>
<author>
<name>Dan Magenheimer</name>
<email>dan.magenheimer@oracle.com</email>
</author>
<published>2012-01-23T21:52:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e8b4553457e78bcff90f70a31212a40a8fd4f0db'/>
<id>urn:sha1:e8b4553457e78bcff90f70a31212a40a8fd4f0db</id>
<content type='text'>
SWIZ_BITS &gt; 8 results in a much larger number of "tmem_obj"
allocations, likely one per page-placed-in-frontswap.  The
tmem_obj is not huge (roughly 100 bytes), but it is large
enough to add a not-insignificant memory overhead to zcache.

The SWIZ_BITS=8  will get roughly the same lock contention
without the space wastage.

The effect of SWIZ_BITS can be thought of as "2^SWIZ_BITS is
the number of unique oids that be generated" (This concept is
limited to frontswap's use of tmem).

Acked-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Signed-off-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>zcache: fix deadlock condition</title>
<updated>2012-02-08T22:14:12Z</updated>
<author>
<name>Dan Magenheimer</name>
<email>dan.magenheimer@oracle.com</email>
</author>
<published>2012-01-25T22:32:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9256a4789be3dae37d00924c03546ba7958ea5a3'/>
<id>urn:sha1:9256a4789be3dae37d00924c03546ba7958ea5a3</id>
<content type='text'>
I discovered this deadlock condition awhile ago working on RAMster
but it affects zcache as well.  The list spinlock must be
locked prior to the page spinlock and released after.  As
a result, the page copy must also be done while the locks are held.

Applies to 3.2.  Konrad, please push (via GregKH?)...
this is definitely a bug fix so need not be pushed during
a -rc0 window.

Signed-off-by: Dan Magenheimer &lt;dan.magenheimer@oracle.com&gt;
Acked-by: Konrad Rzeszutek Wilk &lt;konrad.wilk@oracle.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>Staging: zcache: Fix calls to obsolete function</title>
<updated>2011-11-27T02:13:55Z</updated>
<author>
<name>Bernhard Heinloth</name>
<email>bernhard@heinloth.net</email>
</author>
<published>2011-11-23T15:39:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ebadb730435b74483daedcd59d664a2dccbe3903'/>
<id>urn:sha1:ebadb730435b74483daedcd59d664a2dccbe3903</id>
<content type='text'>
Function "strict_strtol" replaced by "kstrtol" as suggested by the checkpatch script

Signed-off-by: Bernhard Heinloth &lt;bernhard@heinloth.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>Merge branch 'staging-next' into Linux 3.1</title>
<updated>2011-10-25T07:18:11Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2011-10-25T07:18:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=43a3beb6da994549ec28a9f31727b997a025f958'/>
<id>urn:sha1:43a3beb6da994549ec28a9f31727b997a025f958</id>
<content type='text'>
This was done to resolve a conflict in the
drivers/staging/comedi/drivers/ni_labpc.c file that resolved a build
bugfix in Linus's tree with a "better" bugfix that was in the
staging-next tree that resolved the issue in a more complete manner.

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: zcache: remove zcache_direct_reclaim_lock</title>
<updated>2011-10-17T22:24:11Z</updated>
<author>
<name>Seth Jennings</name>
<email>sjenning@linux.vnet.ibm.com</email>
</author>
<published>2011-10-12T19:41:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=00bf256011d362e7d61824f3cda8514f5d48585d'/>
<id>urn:sha1:00bf256011d362e7d61824f3cda8514f5d48585d</id>
<content type='text'>
zcache_do_preload() currently does a spin_trylock() on the
zcache_direct_reclaim_lock. Holding this lock intends to prevent
shrink_zcache_memory() from evicting zbud pages as a result
of a preload.

However, it also prevents two threads from
executing zcache_do_preload() at the same time.  The first
thread will obtain the lock and the second thread's spin_trylock()
will fail (an aborted preload) causing the page to be either lost
(cleancache) or pushed out to the swap device (frontswap). It
also doesn't ensure that the call to shrink_zcache_memory() is
on the same thread as the call to zcache_do_preload().

Additional, there is no need for this mechanism because all
zcache_do_preload() calls that come down from cleancache already
have PF_MEMALLOC set in the process flags which prevents
direct reclaim in the memory manager. If the zcache_do_preload()
call is done from the frontswap path, we _want_ reclaim to be
done (which it isn't right now).

This patch removes the zcache_direct_reclaim_lock and related
statistics in zcache.

Based on v3.1-rc8

Signed-off-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Reviewed-by: Dave Hansen &lt;dave@linux.vnet.ibm.com&gt;
Acked-by: Dan Magenheimer &lt;dan.magenheimer@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: zcache: reduce tmem bucket lock contention</title>
<updated>2011-10-12T15:29:03Z</updated>
<author>
<name>Seth Jennings</name>
<email>sjenning@linux.vnet.ibm.com</email>
</author>
<published>2011-10-04T13:21:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3d65c85f9187d311dbf1bf9e7fc2f5091a770853'/>
<id>urn:sha1:3d65c85f9187d311dbf1bf9e7fc2f5091a770853</id>
<content type='text'>
tmem uses hash buckets each with their own rbtree and lock to
quickly lookup tmem objects.  tmem has TMEM_HASH_BUCKETS (256)
buckets per pool.  However, because of the way the tmem_oid is
generated for frontswap pages, only 16 unique tmem_oids are being
generated, resulting in only 16 of the 256 buckets being used.
This cause high lock contention for the per bucket locks.

This patch changes SWIZ_BITS to include more bits of the offset.
The result is that all 256 hash buckets are potentially used resulting in a
95% drop in hash bucket lock contention.

Signed-off-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Acked-by: Dan Magenheimer &lt;dan.magenheimer@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: zcache: fix crash on cpu remove</title>
<updated>2011-10-11T16:02:49Z</updated>
<author>
<name>Seth Jennings</name>
<email>sjenning@linux.vnet.ibm.com</email>
</author>
<published>2011-10-06T19:28:26Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8550be08cbed164a8357491cc2c27cb99282b7ff'/>
<id>urn:sha1:8550be08cbed164a8357491cc2c27cb99282b7ff</id>
<content type='text'>
In the case that a cpu is taken offline before zcache_do_preload() is
ever called on the cpu, the per-cpu zcache_preloads structure will
be uninitialized.  In the CPU_DEAD case for zcache_cpu_notifier(),
kp-&gt;obj is not checked before calling kmem_cache_free() on it.
If it is NULL, a crash results.

This patch ensures that both kp-&gt;obj and kp-&gt;page are not NULL before
calling the respective free functions. In practice, just checking
one or the other should be sufficient since they are assigned together
in zcache_do_preload(), but I check both for safety.

Signed-off-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Acked-by: Dave Hansen &lt;dave@linux.vnet.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>staging: zcache: fix cleancache crash</title>
<updated>2011-09-20T21:17:13Z</updated>
<author>
<name>Seth Jennings</name>
<email>sjenning@linux.vnet.ibm.com</email>
</author>
<published>2011-09-20T20:09:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=80976804f501303a34a76e925119393722596dca'/>
<id>urn:sha1:80976804f501303a34a76e925119393722596dca</id>
<content type='text'>
After commit c5f5c4db3938 ("staging: zcache: fix crash on high memory
swap") cleancache crashes on the first successful get.  This was caused
by a remaining virt_to_page() call in zcache_pampd_get_data_and_free()
that only gets run in the cleancache path.

The patch converts the virt_to_page() to struct page casting like was
done for other instances in c5f5c4db3938.

Signed-off-by: Seth Jennings &lt;sjenning@linux.vnet.ibm.com&gt;
Tested-By: Valdis Kletnieks &lt;valdis.kletnieks@vt.edu&gt;
Acked-by: Dan Magenheimer &lt;dan.magenheimer@oracle.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge 3.1-rc4 into staging-next</title>
<updated>2011-08-29T15:47:46Z</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2011-08-29T15:47:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6eafa4604cfa109a89524d35d93df11c37bd66b0'/>
<id>urn:sha1:6eafa4604cfa109a89524d35d93df11c37bd66b0</id>
<content type='text'>
This resolves a conflict with:
	drivers/staging/brcm80211/brcmsmac/types.h

Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
</feed>
