X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=subfile.cc;h=70e172766273279039c3ebc64421be4b6ce75ee0;hp=4e1300529cab2f452ad7a538c8f5429ed8a25d0d;hb=3d780590edec4583eb3ef0ca16120afd0f7451f9;hpb=d3f9ee42a4023631059f16cc2a8b96b9540750b2 diff --git a/subfile.cc b/subfile.cc index 4e13005..70e1727 100644 --- a/subfile.cc +++ b/subfile.cc @@ -1,7 +1,6 @@ -/* Cumulus: Smart Filesystem Backup to Dumb Servers - * - * Copyright (C) 2008 The Regents of the University of California - * Written by Michael Vrable +/* Cumulus: Efficient Filesystem Backup to the Cloud + * Copyright (C) 2008 The Cumulus Developers + * See the AUTHORS file for a list of contributors. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,12 +22,13 @@ * referenced from the new metadata log. */ #include +#include #include #include #include "subfile.h" -#include "chunk.h" -#include "sha1.h" +#include "third_party/chunk.h" +#include "third_party/sha1.h" using std::list; using std::map; @@ -194,6 +194,12 @@ void Subfile::store_block_signatures(ObjectReference ref, block_summary summary) free(packed); } +void Subfile::store_analyzed_signatures(ObjectReference ref) +{ + if (analyzed_len >= 16384) + store_block_signatures(ref, new_block_summary); +} + /* Compute an incremental representation of the most recent block analyzed. */ enum subfile_item_type { SUBFILE_COPY, SUBFILE_NEW }; @@ -256,16 +262,11 @@ list Subfile::create_incremental(TarSegmentStore *tss, // No data was matched. The entire block can be written out as is into a // new object, and the new_block_summary used to save chunk signatures. if (!matched_old) { - SHA1Checksum block_hash; - block_hash.process(analyzed_buf, analyzed_len); - string block_csum = block_hash.checksum_str(); - - o->set_data(analyzed_buf, analyzed_len); + o->set_age(block_age); + o->set_data(analyzed_buf, analyzed_len, NULL); o->write(tss); ObjectReference ref = o->get_ref(); - db->StoreObject(ref, block_csum, analyzed_len, block_age); - if (analyzed_len >= 16384) - store_block_signatures(ref, new_block_summary); + store_analyzed_signatures(ref); refs.push_back(ref); delete o; return refs; @@ -289,7 +290,7 @@ list Subfile::create_incremental(TarSegmentStore *tss, string block_csum = block_hash.checksum_str(); o->set_group("data"); - o->set_data(literal_buf, new_data); + o->set_data(literal_buf, new_data, NULL); o->write(tss); ObjectReference ref = o->get_ref(); for (i = items.begin(); i != items.end(); ++i) { @@ -299,7 +300,7 @@ list Subfile::create_incremental(TarSegmentStore *tss, } } - db->StoreObject(ref, block_csum, new_data, 0.0); + //db->StoreObject(ref, 0.0); block_summary summary; summary.ref = ref;