X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=file_write.c;h=f7214306b5eafc1af5b7975262646ab3b6911967;hp=a9635ca2d558c3c541aca0c73bde435f6ef02acb;hb=49c897ce4cffb9ab355540043cd85d22d9a78299;hpb=d0f36435b0f81368a778fda33f3a7df86830f5ac diff --git a/file_write.c b/file_write.c index a9635ca2..f7214306 100644 --- a/file_write.c +++ b/file_write.c @@ -96,12 +96,11 @@ static void file_write_pre_select_btr(struct sched *s, struct task *t) t->error = 0; pfwd->check_fd = 0; - ret = btr_node_status(wn->btrn, wn->min_iqs); - if (ret >= 0) { + ret = btr_node_status(wn->btrn, wn->min_iqs, BTR_NT_LEAF); + if (ret > 0) { para_fd_set(pfwd->fd, &s->wfds, &s->max_fileno); pfwd->check_fd = 1; - } - if (ret != 0) { + } else if (ret < 0) { s->timeout.tv_sec = 0; s->timeout.tv_usec = 1; } @@ -148,7 +147,7 @@ static void file_write_post_select_btr(__a_unused struct sched *s, size_t bytes; t->error = 0; - ret = btr_node_status(btrn, wn->min_iqs); + ret = btr_node_status(btrn, wn->min_iqs, BTR_NT_LEAF); if (ret == 0) return; if (ret < 0) @@ -168,6 +167,7 @@ static void file_write_post_select_btr(__a_unused struct sched *s, err: assert(ret < 0); t->error = ret; + btr_remove_node(btrn); } __malloc static void *file_write_parse_config(const char *options) @@ -183,6 +183,11 @@ __malloc static void *file_write_parse_config(const char *options) return NULL; } +static void file_write_free_config(void *conf) +{ + file_cmdline_parser_free(conf); +} + /** the init function of the file writer */ void file_write_init(struct writer *w) { @@ -195,6 +200,7 @@ void file_write_init(struct writer *w) w->post_select = file_write_post_select; w->post_select_btr = file_write_post_select_btr; w->parse_config = file_write_parse_config; + w->free_config = file_write_free_config; w->close = file_write_close; w->shutdown = NULL; /* nothing to do */ w->help = (struct ggo_help) {