Lines Matching refs:tgt
216 RangeSinkState(RangeSet& rs) : tgt(rs) { };
219 const RangeSet& tgt;
253 if (rss->p_block < rss->tgt.count) {
254 rss->p_remain = (rss->tgt.pos[rss->p_block * 2 + 1] -
255 rss->tgt.pos[rss->p_block * 2]) * BLOCKSIZE;
257 off64_t offset = static_cast<off64_t>(rss->tgt.pos[rss->p_block*2]) * BLOCKSIZE;
326 if (nti->rss->p_block == nti->rss->tgt.count) {
366 static int WriteBlocks(const RangeSet& tgt, const std::vector<uint8_t>& buffer, int fd) {
370 for (size_t i = 0; i < tgt.count; ++i) {
371 off64_t offset = static_cast<off64_t>(tgt.pos[i * 2]) * BLOCKSIZE;
372 size_t size = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * BLOCKSIZE;
421 static int LoadSrcTgtVersion1(CommandParameters& params, RangeSet& tgt, size_t& src_blocks,
434 parse_range(params.tokens[params.cpos++], tgt);
863 // reallocated if needed to accommodate the source data. *tgt is the
866 static int LoadSrcTgtVersion2(CommandParameters& params, RangeSet& tgt, size_t& src_blocks,
877 parse_range(params.tokens[params.cpos++], tgt);
898 *overlap = range_overlaps(src, tgt);
962 static int LoadSrcTgtVersion3(CommandParameters& params, RangeSet& tgt, size_t& src_blocks,
983 if (LoadSrcTgtVersion2(params, tgt, src_blocks, params.buffer, params.fd, params.stashbase,
988 std::vector<uint8_t> tgtbuffer(tgt.size * BLOCKSIZE);
990 if (ReadBlocks(tgt, tgtbuffer, params.fd) == -1) {
994 if (VerifyBlocks(tgthash, tgtbuffer, tgt.size, false) == 0) {
1044 RangeSet tgt;
1047 status = LoadSrcTgtVersion1(params, tgt, blocks, params.buffer, params.fd);
1049 status = LoadSrcTgtVersion2(params, tgt, blocks, params.buffer, params.fd,
1052 status = LoadSrcTgtVersion3(params, tgt, blocks, true, overlap);
1070 if (WriteBlocks(tgt, params.buffer, params.fd) == -1) {
1084 params.written += tgt.size;
1122 RangeSet tgt;
1123 parse_range(params.tokens[params.cpos++], tgt);
1125 fprintf(stderr, " zeroing %zu blocks\n", tgt.size);
1131 for (size_t i = 0; i < tgt.count; ++i) {
1132 off64_t offset = static_cast<off64_t>(tgt.pos[i * 2]) * BLOCKSIZE;
1133 size_t size = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * BLOCKSIZE;
1142 for (size_t j = tgt.pos[i * 2]; j < tgt.pos[i * 2 + 1]; ++j) {
1153 params.written += tgt.size;
1166 RangeSet tgt;
1167 parse_range(params.tokens[params.cpos++], tgt);
1170 fprintf(stderr, " writing %zu blocks of new data\n", tgt.size);
1172 RangeSinkState rss(tgt);
1175 rss.p_remain = (tgt.pos[1] - tgt.pos[0]) * BLOCKSIZE;
1177 off64_t offset = static_cast<off64_t>(tgt.pos[0]) * BLOCKSIZE;
1178 if (!discard_blocks(params.fd, offset, tgt.size * BLOCKSIZE)) {
1197 params.written += tgt.size;
1222 RangeSet tgt;
1227 status = LoadSrcTgtVersion1(params, tgt, blocks, params.buffer, params.fd);
1229 status = LoadSrcTgtVersion2(params, tgt, blocks, params.buffer, params.fd,
1232 status = LoadSrcTgtVersion3(params, tgt, blocks, false, overlap);
1248 fprintf(stderr, "patching %zu blocks to %zu\n", blocks, tgt.size);
1255 RangeSinkState rss(tgt);
1258 rss.p_remain = (tgt.pos[1] - tgt.pos[0]) * BLOCKSIZE;
1260 off64_t offset = static_cast<off64_t>(tgt.pos[0]) * BLOCKSIZE;
1283 // We expect the output of the patcher to fill the tgt ranges exactly.
1284 if (rss.p_block != tgt.count || rss.p_remain != 0) {
1289 blocks, tgt.size, params.cmdline);
1298 params.written += tgt.size;
1324 RangeSet tgt;
1325 parse_range(params.tokens[params.cpos++], tgt);
1328 fprintf(stderr, " erasing %zu blocks\n", tgt.size);
1330 for (size_t i = 0; i < tgt.count; ++i) {
1333 blocks[0] = tgt.pos[i * 2] * (uint64_t) BLOCKSIZE;
1335 blocks[1] = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * (uint64_t) BLOCKSIZE;