Lines Matching refs:writer
182 struct chapter_writer *writer = index->chapter_writer; in finish_previous_chapter() local
184 mutex_lock(&writer->mutex); in finish_previous_chapter()
186 uds_wait_cond(&writer->cond, &writer->mutex); in finish_previous_chapter()
187 result = writer->result; in finish_previous_chapter()
188 mutex_unlock(&writer->mutex); in finish_previous_chapter()
218 struct chapter_writer *writer = index->chapter_writer; in start_closing_chapter() local
220 mutex_lock(&writer->mutex); in start_closing_chapter()
221 finished_zones = ++writer->zones_to_write; in start_closing_chapter()
222 writer->chapters[zone_number] = chapter; in start_closing_chapter()
223 uds_broadcast_cond(&writer->cond); in start_closing_chapter()
224 mutex_unlock(&writer->mutex); in start_closing_chapter()
675 struct chapter_writer *writer = arg; in close_chapters() local
676 struct uds_index *index = writer->index; in close_chapters()
679 mutex_lock(&writer->mutex); in close_chapters()
681 while (writer->zones_to_write < index->zone_count) { in close_chapters()
682 if (writer->stop && (writer->zones_to_write == 0)) { in close_chapters()
687 mutex_unlock(&writer->mutex); in close_chapters()
691 uds_wait_cond(&writer->cond, &writer->mutex); in close_chapters()
699 mutex_unlock(&writer->mutex); in close_chapters()
714 result = uds_close_open_chapter(writer->chapters, index->zone_count, in close_chapters()
716 writer->open_chapter_index, in close_chapters()
717 writer->collated_records, in close_chapters()
720 mutex_lock(&writer->mutex); in close_chapters()
725 writer->result = result; in close_chapters()
726 writer->zones_to_write = 0; in close_chapters()
727 uds_broadcast_cond(&writer->cond); in close_chapters()
731 static void stop_chapter_writer(struct chapter_writer *writer) in stop_chapter_writer() argument
735 mutex_lock(&writer->mutex); in stop_chapter_writer()
736 if (writer->thread != NULL) { in stop_chapter_writer()
737 writer_thread = writer->thread; in stop_chapter_writer()
738 writer->thread = NULL; in stop_chapter_writer()
739 writer->stop = true; in stop_chapter_writer()
740 uds_broadcast_cond(&writer->cond); in stop_chapter_writer()
742 mutex_unlock(&writer->mutex); in stop_chapter_writer()
748 static void free_chapter_writer(struct chapter_writer *writer) in free_chapter_writer() argument
750 if (writer == NULL) in free_chapter_writer()
753 stop_chapter_writer(writer); in free_chapter_writer()
754 uds_free_open_chapter_index(writer->open_chapter_index); in free_chapter_writer()
755 vdo_free(writer->collated_records); in free_chapter_writer()
756 vdo_free(writer); in free_chapter_writer()
763 struct chapter_writer *writer; in make_chapter_writer() local
769 &writer); in make_chapter_writer()
773 writer->index = index; in make_chapter_writer()
774 mutex_init(&writer->mutex); in make_chapter_writer()
775 uds_init_cond(&writer->cond); in make_chapter_writer()
778 &writer->collated_records); in make_chapter_writer()
780 free_chapter_writer(writer); in make_chapter_writer()
784 result = uds_make_open_chapter_index(&writer->open_chapter_index, in make_chapter_writer()
788 free_chapter_writer(writer); in make_chapter_writer()
792 writer->memory_size = (sizeof(struct chapter_writer) + in make_chapter_writer()
795 writer->open_chapter_index->memory_size); in make_chapter_writer()
797 result = vdo_create_thread(close_chapters, writer, "writer", &writer->thread); in make_chapter_writer()
799 free_chapter_writer(writer); in make_chapter_writer()
803 *writer_ptr = writer; in make_chapter_writer()
1300 struct chapter_writer *writer = index->chapter_writer; in uds_wait_for_idle_index() local
1302 mutex_lock(&writer->mutex); in uds_wait_for_idle_index()
1303 while (writer->zones_to_write > 0) in uds_wait_for_idle_index()
1304 uds_wait_cond(&writer->cond, &writer->mutex); in uds_wait_for_idle_index()
1305 mutex_unlock(&writer->mutex); in uds_wait_for_idle_index()