|
17 | 17 | #include <linux/minmax.h> |
18 | 18 | #include <linux/sched.h> |
19 | 19 | #include <linux/spinlock.h> |
| 20 | +#include <linux/string.h> |
20 | 21 | #include <linux/wait.h> |
21 | 22 |
|
22 | 23 | #include "logger.h" |
@@ -509,18 +510,6 @@ static void launch_data_vio(struct data_vio *data_vio, logical_block_number_t lb |
509 | 510 | vdo_enqueue_completion(completion, VDO_DEFAULT_Q_MAP_BIO_PRIORITY); |
510 | 511 | } |
511 | 512 |
|
512 | | -static bool is_zero_block(char *block) |
513 | | -{ |
514 | | - int i; |
515 | | - |
516 | | - for (i = 0; i < VDO_BLOCK_SIZE; i += sizeof(u64)) { |
517 | | - if (*((u64 *) &block[i])) |
518 | | - return false; |
519 | | - } |
520 | | - |
521 | | - return true; |
522 | | -} |
523 | | - |
524 | 513 | static void copy_from_bio(struct bio *bio, char *data_ptr) |
525 | 514 | { |
526 | 515 | struct bio_vec biovec; |
@@ -572,7 +561,7 @@ static void launch_bio(struct vdo *vdo, struct data_vio *data_vio, struct bio *b |
572 | 561 | * we acknowledge the bio. |
573 | 562 | */ |
574 | 563 | copy_from_bio(bio, data_vio->vio.data); |
575 | | - data_vio->is_zero = is_zero_block(data_vio->vio.data); |
| 564 | + data_vio->is_zero = mem_is_zero(data_vio->vio.data, VDO_BLOCK_SIZE); |
576 | 565 | data_vio->write = true; |
577 | 566 | } |
578 | 567 |
|
@@ -1459,7 +1448,7 @@ static void modify_for_partial_write(struct vdo_completion *completion) |
1459 | 1448 | copy_from_bio(bio, data + data_vio->offset); |
1460 | 1449 | } |
1461 | 1450 |
|
1462 | | - data_vio->is_zero = is_zero_block(data); |
| 1451 | + data_vio->is_zero = mem_is_zero(data_vio->vio.data, VDO_BLOCK_SIZE); |
1463 | 1452 | data_vio->read = false; |
1464 | 1453 | launch_data_vio_logical_callback(data_vio, |
1465 | 1454 | continue_data_vio_with_block_map_slot); |
|
0 commit comments