linux-next: manual merge of the kmap_atomic tree with the stagingtree

From: Stephen Rothwell
Date: Mon Feb 13 2012 - 00:15:45 EST


Hi Cong,

Today's linux-next merge of the kmap_atomic tree got a conflict in
drivers/staging/zcache/zcache-main.c between commit a49aeb1de585
("staging: zcache: replace xvmalloc with zsmalloc") (and mayb others)
from the staging tree and commit 1edbcaee3bbe ("zcache: remove the second
argument of k [un]map_atomic()") from the kmap_atomic tree.

I fixed it up (see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc drivers/staging/zcache/zcache-main.c
index ccfa854,f0843e8a..0000000
--- a/drivers/staging/zcache/zcache-main.c
+++ b/drivers/staging/zcache/zcache-main.c
@@@ -455,14 -421,13 +455,14 @@@ static int zbud_decompress(struct page
}
ASSERT_SENTINEL(zh, ZBH);
BUG_ON(zh->size == 0 || zh->size > zbud_max_buddy_size());
- to_va = kmap_atomic(page, KM_USER0);
+ to_va = kmap_atomic(page);
size = zh->size;
from_va = zbud_data(zh, size);
- ret = lzo1x_decompress_safe(from_va, size, to_va, &out_len);
- BUG_ON(ret != LZO_E_OK);
+ ret = zcache_comp_op(ZCACHE_COMPOP_DECOMPRESS, from_va, size,
+ to_va, &out_len);
+ BUG_ON(ret);
BUG_ON(out_len != PAGE_SIZE);
- kunmap_atomic(to_va, KM_USER0);
+ kunmap_atomic(to_va);
out:
spin_unlock(&zbpg->lock);
return ret;
@@@ -745,22 -708,21 +745,22 @@@ static void zv_free(struct zs_pool *poo
local_irq_restore(flags);
}

-static void zv_decompress(struct page *page, struct zv_hdr *zv)
+static void zv_decompress(struct page *page, void *handle)
{
- size_t clen = PAGE_SIZE;
+ unsigned int clen = PAGE_SIZE;
char *to_va;
- unsigned size;
int ret;
+ struct zv_hdr *zv;

+ zv = zs_map_object(zcache_host.zspool, handle);
+ BUG_ON(zv->size == 0);
ASSERT_SENTINEL(zv, ZVH);
- to_va = kmap_atomic(page, KM_USER0);
- size = xv_get_object_size(zv) - sizeof(*zv);
- BUG_ON(size == 0);
+ to_va = kmap_atomic(page);
- ret = lzo1x_decompress_safe((char *)zv + sizeof(*zv),
- size, to_va, &clen);
+ ret = zcache_comp_op(ZCACHE_COMPOP_DECOMPRESS, (char *)zv + sizeof(*zv),
+ zv->size, to_va, &clen);
- kunmap_atomic(to_va, KM_USER0);
+ kunmap_atomic(to_va);
- BUG_ON(ret != LZO_E_OK);
+ zs_unmap_object(zcache_host.zspool, handle);
+ BUG_ON(ret);
BUG_ON(clen != PAGE_SIZE);
}

@@@ -1333,16 -1297,15 +1333,16 @@@ static int zcache_compress(struct page
char *from_va;

BUG_ON(!irqs_disabled());
- if (unlikely(dmem == NULL || wmem == NULL))
- goto out; /* no buffer, so can't compress */
+ if (unlikely(dmem == NULL))
+ goto out; /* no buffer or no compressor so can't compress */
+ *out_len = PAGE_SIZE << ZCACHE_DSTMEM_ORDER;
- from_va = kmap_atomic(from, KM_USER0);
+ from_va = kmap_atomic(from);
mb();
- ret = lzo1x_1_compress(from_va, PAGE_SIZE, dmem, out_len, wmem);
- BUG_ON(ret != LZO_E_OK);
+ ret = zcache_comp_op(ZCACHE_COMPOP_COMPRESS, from_va, PAGE_SIZE, dmem,
+ (unsigned int *)out_len);
+ BUG_ON(ret);
*out_va = dmem;
- kunmap_atomic(from_va, KM_USER0);
+ kunmap_atomic(from_va);
ret = 1;
out:
return ret;

Attachment: pgp00000.pgp
Description: PGP signature