projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
libiscsi: continue working when meets EINTR or EAGAIN
[fio.git]
/
t
/
dedupe.c
diff --git
a/t/dedupe.c
b/t/dedupe.c
index c3b837f7b698cdedd027f20be12e085ffe21faa1..2ef8dc539809884cc0372597ef1a260385ee9165 100644
(file)
--- a/
t/dedupe.c
+++ b/
t/dedupe.c
@@
-3,20
+3,16
@@
* just scans the filename for extents of the given size, checksums them,
* and orders them up.
*/
* just scans the filename for extents of the given size, checksums them,
* and orders them up.
*/
+#include <fcntl.h>
+#include <inttypes.h>
#include <stdio.h>
#include <stdio.h>
-#include <st
dio
.h>
+#include <st
ring
.h>
#include <unistd.h>
#include <unistd.h>
-#include <inttypes.h>
-#include <assert.h>
-#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <string.h>
#include "../flist.h"
#include "../log.h"
#include "../flist.h"
#include "../log.h"
-#include "../
mutex
.h"
+#include "../
fio_sem
.h"
#include "../smalloc.h"
#include "../minmax.h"
#include "../crc/md5.h"
#include "../smalloc.h"
#include "../minmax.h"
#include "../crc/md5.h"
@@
-49,7
+45,7
@@
struct extent {
};
struct chunk {
};
struct chunk {
- struct rb_node rb_node;
+ struct
fio_
rb_node rb_node;
uint64_t count;
uint32_t hash[MD5_HASH_WORDS];
struct flist_head extent_list[0];
uint64_t count;
uint32_t hash[MD5_HASH_WORDS];
struct flist_head extent_list[0];
@@
-62,7
+58,7
@@
struct item {
static struct rb_root rb_root;
static struct bloom *bloom;
static struct rb_root rb_root;
static struct bloom *bloom;
-static struct fio_
mutex
*rb_lock;
+static struct fio_
sem
*rb_lock;
static unsigned int blocksize = 4096;
static unsigned int num_threads;
static unsigned int blocksize = 4096;
static unsigned int num_threads;
@@
-75,7
+71,7
@@
static unsigned int use_bloom = 1;
static uint64_t total_size;
static uint64_t cur_offset;
static uint64_t total_size;
static uint64_t cur_offset;
-static struct fio_
mutex
*size_lock;
+static struct fio_
sem
*size_lock;
static struct fio_file file;
static struct fio_file file;
@@
-102,7
+98,7
@@
static int get_work(uint64_t *offset, uint64_t *size)
uint64_t this_chunk;
int ret = 1;
uint64_t this_chunk;
int ret = 1;
- fio_
mutex
_down(size_lock);
+ fio_
sem
_down(size_lock);
if (cur_offset < total_size) {
*offset = cur_offset;
if (cur_offset < total_size) {
*offset = cur_offset;
@@
-112,7
+108,7
@@
static int get_work(uint64_t *offset, uint64_t *size)
ret = 0;
}
ret = 0;
}
- fio_
mutex
_up(size_lock);
+ fio_
sem
_up(size_lock);
return ret;
}
return ret;
}
@@
-162,8
+158,8
@@
static int col_check(struct chunk *c, struct item *i)
char *cbuf, *ibuf;
int ret = 1;
char *cbuf, *ibuf;
int ret = 1;
- cbuf = fio_memalign(blocksize, blocksize);
- ibuf = fio_memalign(blocksize, blocksize);
+ cbuf = fio_memalign(blocksize, blocksize
, false
);
+ ibuf = fio_memalign(blocksize, blocksize
, false
);
e = flist_entry(c->extent_list[0].next, struct extent, list);
if (read_block(file.fd, cbuf, e->offset))
e = flist_entry(c->extent_list[0].next, struct extent, list);
if (read_block(file.fd, cbuf, e->offset))
@@
-174,8
+170,8
@@
static int col_check(struct chunk *c, struct item *i)
ret = memcmp(ibuf, cbuf, blocksize);
out:
ret = memcmp(ibuf, cbuf, blocksize);
out:
- fio_memfree(cbuf, blocksize);
- fio_memfree(ibuf, blocksize);
+ fio_memfree(cbuf, blocksize
, false
);
+ fio_memfree(ibuf, blocksize
, false
);
return ret;
}
return ret;
}
@@
-194,7
+190,7
@@
static struct chunk *alloc_chunk(void)
static void insert_chunk(struct item *i)
{
static void insert_chunk(struct item *i)
{
- struct rb_node **p, *parent;
+ struct
fio_
rb_node **p, *parent;
struct chunk *c;
int diff;
struct chunk *c;
int diff;
@@
-215,9
+211,9
@@
static void insert_chunk(struct item *i)
if (!collision_check)
goto add;
if (!collision_check)
goto add;
- fio_
mutex
_up(rb_lock);
+ fio_
sem
_up(rb_lock);
ret = col_check(c, i);
ret = col_check(c, i);
- fio_
mutex
_down(rb_lock);
+ fio_
sem
_down(rb_lock);
if (!ret)
goto add;
if (!ret)
goto add;
@@
-241,7
+237,7
@@
static void insert_chunks(struct item *items, unsigned int nitems,
{
int i;
{
int i;
- fio_
mutex
_down(rb_lock);
+ fio_
sem
_down(rb_lock);
for (i = 0; i < nitems; i++) {
if (bloom) {
for (i = 0; i < nitems; i++) {
if (bloom) {
@@
-255,7
+251,7
@@
static void insert_chunks(struct item *items, unsigned int nitems,
insert_chunk(&items[i]);
}
insert_chunk(&items[i]);
}
- fio_
mutex
_up(rb_lock);
+ fio_
sem
_up(rb_lock);
}
static void crc_buf(void *buf, uint32_t *hash)
}
static void crc_buf(void *buf, uint32_t *hash)
@@
-313,7
+309,7
@@
static void *thread_fn(void *data)
struct worker_thread *thread = data;
void *buf;
struct worker_thread *thread = data;
void *buf;
- buf = fio_memalign(blocksize, chunk_size);
+ buf = fio_memalign(blocksize, chunk_size
, false
);
do {
if (get_work(&thread->cur_offset, &thread->size)) {
do {
if (get_work(&thread->cur_offset, &thread->size)) {
@@
-327,7
+323,7
@@
static void *thread_fn(void *data)
} while (1);
thread->done = 1;
} while (1);
thread->done = 1;
- fio_memfree(buf, chunk_size);
+ fio_memfree(buf, chunk_size
, false
);
return NULL;
}
return NULL;
}
@@
-383,7
+379,7
@@
static int run_dedupe_threads(struct fio_file *f, uint64_t dev_size,
total_size = dev_size;
total_items = dev_size / blocksize;
cur_offset = 0;
total_size = dev_size;
total_items = dev_size / blocksize;
cur_offset = 0;
- size_lock = fio_
mutex_init(FIO_MUTEX
_UNLOCKED);
+ size_lock = fio_
sem_init(FIO_SEM
_UNLOCKED);
threads = malloc(num_threads * sizeof(struct worker_thread));
for (i = 0; i < num_threads; i++) {
threads = malloc(num_threads * sizeof(struct worker_thread));
for (i = 0; i < num_threads; i++) {
@@
-414,7
+410,7
@@
static int run_dedupe_threads(struct fio_file *f, uint64_t dev_size,
*nextents = nitems;
*nchunks = nitems - *nchunks;
*nextents = nitems;
*nchunks = nitems - *nchunks;
- fio_
mutex
_remove(size_lock);
+ fio_
sem
_remove(size_lock);
free(threads);
return err;
}
free(threads);
return err;
}
@@
-497,7
+493,7
@@
static void show_stat(uint64_t nextents, uint64_t nchunks)
static void iter_rb_tree(uint64_t *nextents, uint64_t *nchunks)
{
static void iter_rb_tree(uint64_t *nextents, uint64_t *nchunks)
{
- struct rb_node *n;
+ struct
fio_
rb_node *n;
*nchunks = *nextents = 0;
*nchunks = *nextents = 0;
@@
-581,7
+577,7
@@
int main(int argc, char *argv[])
sinit();
rb_root = RB_ROOT;
sinit();
rb_root = RB_ROOT;
- rb_lock = fio_
mutex_init(FIO_MUTEX
_UNLOCKED);
+ rb_lock = fio_
sem_init(FIO_SEM
_UNLOCKED);
ret = dedupe_check(argv[optind], &nextents, &nchunks);
ret = dedupe_check(argv[optind], &nextents, &nchunks);
@@
-592,7
+588,7
@@
int main(int argc, char *argv[])
show_stat(nextents, nchunks);
}
show_stat(nextents, nchunks);
}
- fio_
mutex
_remove(rb_lock);
+ fio_
sem
_remove(rb_lock);
if (bloom)
bloom_free(bloom);
scleanup();
if (bloom)
bloom_free(bloom);
scleanup();