• Home
  • Raw
  • Download

Lines Matching refs:s

76 static int process_raw_chunk(struct sparse_file *s, unsigned int chunk_size,  in process_raw_chunk()  argument
82 int64_t len = blocks * s->block_size; in process_raw_chunk()
84 if (chunk_size % s->block_size != 0) { in process_raw_chunk()
88 if (chunk_size / s->block_size != blocks) { in process_raw_chunk()
92 ret = sparse_file_add_fd(s, fd, offset, len, block); in process_raw_chunk()
114 static int process_fill_chunk(struct sparse_file *s, unsigned int chunk_size, in process_fill_chunk() argument
119 int64_t len = (int64_t)blocks * s->block_size; in process_fill_chunk()
133 ret = sparse_file_add_fill(s, fill_val, len, block); in process_fill_chunk()
155 static int process_skip_chunk(struct sparse_file *s, unsigned int chunk_size, in process_skip_chunk() argument
164 int64_t len = (int64_t)blocks * s->block_size; in process_skip_chunk()
198 static int process_chunk(struct sparse_file *s, int fd, off64_t offset, in process_chunk() argument
209 ret = process_raw_chunk(s, chunk_data_size, fd, offset, in process_chunk()
212 verbose_error(s->verbose, ret, "data block at %" PRId64, offset); in process_chunk()
217 ret = process_fill_chunk(s, chunk_data_size, fd, in process_chunk()
220 verbose_error(s->verbose, ret, "fill block at %" PRId64, offset); in process_chunk()
225 ret = process_skip_chunk(s, chunk_data_size, fd, in process_chunk()
229 verbose_error(s->verbose, ret, "skip block at %" PRId64, offset); in process_chunk()
237 verbose_error(s->verbose, -EINVAL, "crc block at %" PRId64, in process_chunk()
243 verbose_error(s->verbose, -EINVAL, "unknown block %04X at %" PRId64, in process_chunk()
250 static int sparse_file_read_sparse(struct sparse_file *s, int fd, bool crc) in sparse_file_read_sparse() argument
316 ret = process_chunk(s, fd, offset, sparse_header.chunk_hdr_sz, &chunk_header, in sparse_file_read_sparse()
332 static int sparse_file_read_normal(struct sparse_file *s, int fd) in sparse_file_read_normal() argument
335 uint32_t *buf = (uint32_t *)malloc(s->block_size); in sparse_file_read_normal()
337 int64_t remain = s->len; in sparse_file_read_normal()
348 to_read = std::min(remain, (int64_t)(s->block_size)); in sparse_file_read_normal()
356 if (to_read == s->block_size) { in sparse_file_read_normal()
358 for (i = 1; i < s->block_size / sizeof(uint32_t); i++) { in sparse_file_read_normal()
370 sparse_file_add_fill(s, buf[0], to_read, block); in sparse_file_read_normal()
372 sparse_file_add_fd(s, fd, offset, to_read, block); in sparse_file_read_normal()
384 int sparse_file_read(struct sparse_file *s, int fd, bool sparse, bool crc) in sparse_file_read() argument
391 return sparse_file_read_sparse(s, fd, crc); in sparse_file_read()
393 return sparse_file_read_normal(s, fd); in sparse_file_read()
402 struct sparse_file *s; in sparse_file_import() local
429 s = sparse_file_new(sparse_header.blk_sz, len); in sparse_file_import()
430 if (!s) { in sparse_file_import()
438 sparse_file_destroy(s); in sparse_file_import()
442 s->verbose = verbose; in sparse_file_import()
444 ret = sparse_file_read(s, fd, true, crc); in sparse_file_import()
446 sparse_file_destroy(s); in sparse_file_import()
450 return s; in sparse_file_import()
455 struct sparse_file *s; in sparse_file_import_auto() local
459 s = sparse_file_import(fd, verbose, crc); in sparse_file_import_auto()
460 if (s) { in sparse_file_import_auto()
461 return s; in sparse_file_import_auto()
471 s = sparse_file_new(4096, len); in sparse_file_import_auto()
472 if (!s) { in sparse_file_import_auto()
476 ret = sparse_file_read_normal(s, fd); in sparse_file_import_auto()
478 sparse_file_destroy(s); in sparse_file_import_auto()
482 return s; in sparse_file_import_auto()