|
|
@@ -1537,7 +1537,12 @@ static void zs_object_copy(unsigned long src, unsigned long dst,
|
|
|
if (written == class->size)
|
|
|
break;
|
|
|
|
|
|
- if (s_off + size >= PAGE_SIZE) {
|
|
|
+ s_off += size;
|
|
|
+ s_size -= size;
|
|
|
+ d_off += size;
|
|
|
+ d_size -= size;
|
|
|
+
|
|
|
+ if (s_off >= PAGE_SIZE) {
|
|
|
kunmap_atomic(d_addr);
|
|
|
kunmap_atomic(s_addr);
|
|
|
s_page = get_next_page(s_page);
|
|
|
@@ -1546,21 +1551,15 @@ static void zs_object_copy(unsigned long src, unsigned long dst,
|
|
|
d_addr = kmap_atomic(d_page);
|
|
|
s_size = class->size - written;
|
|
|
s_off = 0;
|
|
|
- } else {
|
|
|
- s_off += size;
|
|
|
- s_size -= size;
|
|
|
}
|
|
|
|
|
|
- if (d_off + size >= PAGE_SIZE) {
|
|
|
+ if (d_off >= PAGE_SIZE) {
|
|
|
kunmap_atomic(d_addr);
|
|
|
d_page = get_next_page(d_page);
|
|
|
BUG_ON(!d_page);
|
|
|
d_addr = kmap_atomic(d_page);
|
|
|
d_size = class->size - written;
|
|
|
d_off = 0;
|
|
|
- } else {
|
|
|
- d_off += size;
|
|
|
- d_size -= size;
|
|
|
}
|
|
|
}
|
|
|
|