Ejemplo n.º 1
0
 void write_block(vdblock &block) {
     int realsize;
     uint8_t * outdata;
     block.dblock->write(&outdata, realsize);
     std::string blockfname = blockfilename(block.blockid);
     iomgr->managed_pwritea_now(block.fd, &outdata, realsize, 0); /* Need to write whole block in the compressed regime */
     write_block_uncompressed_size(blockfname, realsize);
 }
Ejemplo n.º 2
0
        void init_block(int blockid) {
            std::string bfilename = blockfilename(blockid);
            if (!file_exists(bfilename)) {
                mkdir(dirname.c_str(), 0777);
                size_t initsize = verticesperblock * sizeof(typename VertexDataType::sizeword_t);
                int f = open(bfilename.c_str(),  O_RDWR | O_CREAT, S_IROTH | S_IWOTH | S_IWUSR | S_IRUSR);
                uint8_t * zeros = (uint8_t *) calloc(verticesperblock, sizeof(typename VertexDataType::sizeword_t));
                write_compressed(f, zeros, initsize);
                free(zeros);

                write_block_uncompressed_size(bfilename, initsize);
                close(f);
            }
        }
Ejemplo n.º 3
0
 void commit_now(stripedio * iomgr) {
     if (active && data != NULL && writedesc >= 0) {
         size_t len = ptr-data;
         if (len > end-offset) len = end-offset;
         if (is_edata_block) {
             uint8_t * outdata = NULL;
             int realsize;
             dynblock->write(&outdata, realsize);
             write_block_uncompressed_size(blockfilename, realsize);
             iomgr->managed_pwritea_now(writedesc, &outdata, realsize, 0); /* Need to write whole block in the compressed regime */
             free(outdata);
         } else {
             iomgr->managed_pwritea_now(writedesc, &data, len, offset);
         }
     }
 }