summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/data_writer.h93
-rw-r--r--include/highlevel.h36
2 files changed, 34 insertions, 95 deletions
diff --git a/include/data_writer.h b/include/data_writer.h
deleted file mode 100644
index cdf7a44..0000000
--- a/include/data_writer.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* SPDX-License-Identifier: GPL-3.0-or-later */
-/*
- * data_writer.h
- *
- * Copyright (C) 2019 David Oberhollenzer <goliath@infraroot.at>
- */
-#ifndef DATA_WRITER_H
-#define DATA_WRITER_H
-
-#include "config.h"
-
-#include "sqfs/compress.h"
-#include "sqfs/data.h"
-#include "fstree.h"
-#include "util.h"
-
-typedef struct data_writer_t data_writer_t;
-
-typedef struct {
- size_t file_count;
- size_t blocks_written;
- size_t frag_blocks_written;
- size_t duplicate_blocks;
- size_t sparse_blocks;
- size_t frag_count;
- size_t frag_dup;
- uint64_t bytes_written;
- uint64_t bytes_read;
-} data_writer_stats_t;
-
-enum {
- /* Don't generate fragments, always write the last block to disk as a
- block, even if it is incomplete. */
- DW_DONT_FRAGMENT = 0x01,
-
- /* Intentionally write all blocks uncompressed. */
- DW_DONT_COMPRESS = 0x02,
-
- /* Make sure the first block of a file is alligned to
- device block size */
- DW_ALLIGN_DEVBLK = 0x04,
-};
-
-/*
- Create a data writer. The pointer to the super block is kept internally and
- used to automatically update various counters when writing data.
-
- Returns NULL on failure and prints errors to stderr.
- */
-data_writer_t *data_writer_create(sqfs_super_t *super, sqfs_compressor_t *cmp,
- sqfs_file_t *file, size_t devblksize,
- unsigned int num_jobs, size_t max_backlog);
-
-void data_writer_destroy(data_writer_t *data);
-
-/*
- Write the finalfragment table to the underlying file.
-
- Returns 0 on success, prints errors to stderr.
-*/
-int data_writer_write_fragment_table(data_writer_t *data);
-
-/*
- Wait for everything to be written to disk. This also forces a currently
- pending fragment block to be compressed and wrtten.
-
- Returns 0 on success, prints errors to stderr.
-*/
-int data_writer_sync(data_writer_t *data);
-
-/*
- Read data from the given file descriptor, partition it into blocks and
- write them out (possibly compressed) to the underlying file. If the size
- is not a multiple of the block size, the last bit is kept in an internal
- fragment buffer which is written out if full.
-
- The file_info_t object is updated accordingly and used to determine the
- number of bytes to write and the input file name to report errors.
-
- Blocks or fragments that are all zero bytes automatically detected,
- not written out and the sparse file accounting updated accordingly.
-
- The flags argument is a combination of DW_* flags. After completion the
- data writer collects the 'fi' in an internal list it uses for deduplication.
-
- Returns 0 on success, prints errors to stderr.
-*/
-int write_data_from_file(data_writer_t *data, sqfs_inode_generic_t *inode,
- sqfs_file_t *file, int flags);
-
-data_writer_stats_t *data_writer_get_stats(data_writer_t *data);
-
-#endif /* DATA_WRITER_H */
diff --git a/include/highlevel.h b/include/highlevel.h
index bfc2d91..5bc4a96 100644
--- a/include/highlevel.h
+++ b/include/highlevel.h
@@ -15,20 +15,47 @@
#include "sqfs/data.h"
#include "sqfs/table.h"
#include "sqfs/meta_writer.h"
+#include "sqfs/data_reader.h"
+#include "sqfs/data_writer.h"
#include "sqfs/dir_writer.h"
#include "sqfs/dir_reader.h"
+#include "sqfs/block.h"
#include "sqfs/xattr.h"
#include "sqfs/dir.h"
#include "sqfs/io.h"
-#include "sqfs/data_reader.h"
-#include "data_writer.h"
#include "fstree.h"
+#include "util.h"
#include "tar.h"
#include <sys/stat.h>
#include <stdint.h>
#include <stddef.h>
+typedef struct {
+ size_t file_count;
+ size_t blocks_written;
+ size_t frag_blocks_written;
+ size_t duplicate_blocks;
+ size_t sparse_blocks;
+ size_t frag_count;
+ size_t frag_dup;
+ uint64_t bytes_written;
+ uint64_t bytes_read;
+} data_writer_stats_t;
+
+enum {
+ /* Don't generate fragments, always write the last block to disk as a
+ block, even if it is incomplete. */
+ DW_DONT_FRAGMENT = 0x01,
+
+ /* Intentionally write all blocks uncompressed. */
+ DW_DONT_COMPRESS = 0x02,
+
+ /* Make sure the first block of a file is alligned to
+ device block size */
+ DW_ALLIGN_DEVBLK = 0x04,
+};
+
/*
High level helper function to serialize an entire file system tree to
a squashfs inode table and directory table.
@@ -86,4 +113,9 @@ int sqfs_data_reader_dump(sqfs_data_reader_t *data,
sqfs_file_t *sqfs_get_stdin_file(const sparse_map_t *map, uint64_t size);
+void register_stat_hooks(sqfs_data_writer_t *data, data_writer_stats_t *stats);
+
+int write_data_from_file(sqfs_data_writer_t *data, sqfs_inode_generic_t *inode,
+ sqfs_file_t *file, size_t block_size, int flags);
+
#endif /* HIGHLEVEL_H */