2a4830110b90deb4ee99b1ab8c8ebb120f27c0c8 |
|
30-Dec-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix serialization bug in zv stats 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 <sjenning@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
/drivers/staging/zcache/zcache-main.c
|
e8b4553457e78bcff90f70a31212a40a8fd4f0db |
|
23-Jan-2012 |
Dan Magenheimer <dan.magenheimer@oracle.com> |
zcache: Set SWIZ_BITS to 8 to reduce tmem bucket lock contention. SWIZ_BITS > 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 <sjenning@linux.vnet.ibm.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
9256a4789be3dae37d00924c03546ba7958ea5a3 |
|
25-Jan-2012 |
Dan Magenheimer <dan.magenheimer@oracle.com> |
zcache: fix deadlock condition 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 <dan.magenheimer@oracle.com> Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
ebadb730435b74483daedcd59d664a2dccbe3903 |
|
23-Nov-2011 |
Bernhard Heinloth <bernhard@heinloth.net> |
Staging: zcache: Fix calls to obsolete function Function "strict_strtol" replaced by "kstrtol" as suggested by the checkpatch script Signed-off-by: Bernhard Heinloth <bernhard@heinloth.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
43a3beb6da994549ec28a9f31727b997a025f958 |
|
25-Oct-2011 |
Greg Kroah-Hartman <gregkh@suse.de> |
Merge branch 'staging-next' into Linux 3.1 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 <gregkh@suse.de>
|
00bf256011d362e7d61824f3cda8514f5d48585d |
|
12-Oct-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: remove zcache_direct_reclaim_lock 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 <sjenning@linux.vnet.ibm.com> Reviewed-by: Dave Hansen <dave@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
3d65c85f9187d311dbf1bf9e7fc2f5091a770853 |
|
04-Oct-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: reduce tmem bucket lock contention 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 <sjenning@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
8550be08cbed164a8357491cc2c27cb99282b7ff |
|
06-Oct-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix crash on cpu remove 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->obj is not checked before calling kmem_cache_free() on it. If it is NULL, a crash results. This patch ensures that both kp->obj and kp->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 <sjenning@linux.vnet.ibm.com> Acked-by: Dave Hansen <dave@linux.vnet.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
80976804f501303a34a76e925119393722596dca |
|
20-Sep-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix cleancache crash 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 <sjenning@linux.vnet.ibm.com> Tested-By: Valdis Kletnieks <valdis.kletnieks@vt.edu> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
/drivers/staging/zcache/zcache-main.c
|
6eafa4604cfa109a89524d35d93df11c37bd66b0 |
|
29-Aug-2011 |
Greg Kroah-Hartman <gregkh@suse.de> |
Merge 3.1-rc4 into staging-next This resolves a conflict with: drivers/staging/brcm80211/brcmsmac/types.h Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
c5f5c4db393837ebb2ae47bf061d70e498f48f8c |
|
10-Aug-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix crash on high memory swap zcache_put_page() was modified to pass page_address(page) instead of the actual page structure. In combination with the function signature changes to tmem_put() and zcache_pampd_create(), zcache_pampd_create() tries to (re)derive the page structure from the virtual address. However, if the original page is a high memory page (or any unmapped page), this virt_to_page() fails because the page_address() in zcache_put_page() returned NULL. This patch changes zcache_put_page() and zcache_get_page() to pass the page structure instead of the page's virtual address, which may or may not exist. Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
0428fec32c5fde013cb8223c248972941b18ca59 |
|
22-Aug-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix typos The patch fixes two typos in zcache-main.c Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
dbe82eb1170c0095e0ce89676235e0b27d7040d1 |
|
22-Aug-2011 |
Seth Jennings <sjenning@linux.vnet.ibm.com> |
staging: zcache: fix possible sleep under lock zcache_new_pool() calls kmalloc() with GFP_KERNEL which has __GFP_WAIT set. However, zcache_new_pool() gets called on a stack that holds the swap_lock spinlock, leading to a possible sleep-with-lock situation. The lock is obtained in enable_swap_info(). The patch replaces GFP_KERNEL with GFP_ATOMIC. v2: replace with GFP_ATOMIC, not GFP_IOFS Signed-off-by: Seth Jennings <sjenning@linux.vnet.ibm.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
d8c778fdf2bcd42e495ca1ca67bca729639352b7 |
|
05-Aug-2011 |
Nitin Gupta <ngupta@vflare.org> |
zcache: Fix build error when sysfs is not defined Signed-off-by: Nitin Gupta <ngupta@vflare.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
3ca15c4486beb113700cda44e32109cf0d97528b |
|
05-Aug-2011 |
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> |
zcache: Use div_u64 for 64-bit division xv_get_total_size_bytes returns a u64 value and it's used in a division. This causes build failures in 32-bit architectures, as reported by Randy Dunlap. Reported-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Dan Magenheimer <dan.magenheimer@oracle.com> Cc: Nitin Gupta <ngupta@vflare.org> Acked-by: Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
12623f07b9d01bbaf3035284ea6a110787cc1e66 |
|
03-Aug-2011 |
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> |
staging: zcache: include module.h for MODULE_LICENSE The oncoming cleanup of module.h usage requires the explicit inclusion of module.h when it was otherwise being included indirectly. Otherwise, building zcache will fail. Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
fd6b68bbac9f100c8728b2cfe4e34f03f3df4e4d |
|
02-Aug-2011 |
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> |
staging: zcache: module is GPL This avoids tainting the kernel as if a proprietary module was loaded. The kernel will still be tainted because this is a staging driver. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|
bf0c0259c79b325fd4ea139f363366d319786ea2 |
|
02-Aug-2011 |
Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> |
staging: fix zcache building zcache is only building tmem.c and not building zcache.c. To keep the module name, zcache.c must be renamed if symbols from tmem.c are to remain unexported. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Acked-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
/drivers/staging/zcache/zcache-main.c
|