Lines Matching refs:tgt
235 explicit RangeSinkState(RangeSet& rs) : tgt(rs) { };
238 const RangeSet& tgt;
272 if (rss->p_block < rss->tgt.count) {
273 rss->p_remain = (rss->tgt.pos[rss->p_block * 2 + 1] -
274 rss->tgt.pos[rss->p_block * 2]) * BLOCKSIZE;
276 off64_t offset = static_cast<off64_t>(rss->tgt.pos[rss->p_block*2]) * BLOCKSIZE;
345 if (nti->rss->p_block == nti->rss->tgt.count) {
385 static int WriteBlocks(const RangeSet& tgt, const std::vector<uint8_t>& buffer, int fd) {
389 for (size_t i = 0; i < tgt.count; ++i) {
390 off64_t offset = static_cast<off64_t>(tgt.pos[i * 2]) * BLOCKSIZE;
391 size_t size = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * BLOCKSIZE;
900 // *tgt is the target RangeSet. Any stashes required are loaded using LoadStash.
902 static int LoadSrcTgtVersion2(CommandParameters& params, RangeSet& tgt, size_t& src_blocks,
913 tgt = parse_range(params.tokens[params.cpos++]);
933 *overlap = range_overlaps(src, tgt);
1005 static int LoadSrcTgtVersion3(CommandParameters& params, RangeSet& tgt, size_t& src_blocks,
1025 if (LoadSrcTgtVersion2(params, tgt, src_blocks, &overlap) == -1) {
1029 std::vector<uint8_t> tgtbuffer(tgt.size * BLOCKSIZE);
1031 if (ReadBlocks(tgt, tgtbuffer, params.fd) == -1) {
1035 if (VerifyBlocks(tgthash, tgtbuffer, tgt.size, false) == 0) {
1084 RangeSet tgt;
1085 int status = LoadSrcTgtVersion3(params, tgt, blocks, true, overlap);
1102 if (WriteBlocks(tgt, params.buffer, params.fd) == -1) {
1115 params.written += tgt.size;
1186 RangeSet tgt = parse_range(params.tokens[params.cpos++]);
1188 LOG(INFO) << " zeroing " << tgt.size << " blocks";
1194 for (size_t i = 0; i < tgt.count; ++i) {
1195 off64_t offset = static_cast<off64_t>(tgt.pos[i * 2]) * BLOCKSIZE;
1196 size_t size = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * BLOCKSIZE;
1205 for (size_t j = tgt.pos[i * 2]; j < tgt.pos[i * 2 + 1]; ++j) {
1216 params.written += tgt.size;
1229 RangeSet tgt = parse_range(params.tokens[params.cpos++]);
1232 LOG(INFO) << " writing " << tgt.size << " blocks of new data";
1234 RangeSinkState rss(tgt);
1237 rss.p_remain = (tgt.pos[1] - tgt.pos[0]) * BLOCKSIZE;
1239 off64_t offset = static_cast<off64_t>(tgt.pos[0]) * BLOCKSIZE;
1240 if (!discard_blocks(params.fd, offset, tgt.size * BLOCKSIZE)) {
1259 params.written += tgt.size;
1284 RangeSet tgt;
1287 int status = LoadSrcTgtVersion3(params, tgt, blocks, false, overlap);
1302 LOG(INFO) << "patching " << blocks << " blocks to " << tgt.size;
1305 RangeSinkState rss(tgt);
1308 rss.p_remain = (tgt.pos[1] - tgt.pos[0]) * BLOCKSIZE;
1310 off64_t offset = static_cast<off64_t>(tgt.pos[0]) * BLOCKSIZE;
1333 // We expect the output of the patcher to fill the tgt ranges exactly.
1334 if (rss.p_block != tgt.count || rss.p_remain != 0) {
1338 LOG(INFO) << "skipping " << blocks << " blocks already patched to " << tgt.size
1348 params.written += tgt.size;
1374 RangeSet tgt = parse_range(params.tokens[params.cpos++]);
1377 LOG(INFO) << " erasing " << tgt.size << " blocks";
1379 for (size_t i = 0; i < tgt.count; ++i) {
1382 blocks[0] = tgt.pos[i * 2] * (uint64_t) BLOCKSIZE;
1384 blocks[1] = (tgt.pos[i * 2 + 1] - tgt.pos[i * 2]) * (uint64_t) BLOCKSIZE;