1 /* 2 * Copyright (C) 2016 Jakub Kruszona-Zawadzki, Core Technology Sp. z o.o. 3 * 4 * This file is part of MooseFS. 5 * 6 * MooseFS is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, version 2 (only). 9 * 10 * MooseFS is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with MooseFS; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA 18 * or visit http://www.gnu.org/licenses/gpl-2.0.html 19 */ 20 21 #ifndef _CHUNKS_H_ 22 #define _CHUNKS_H_ 23 24 #include <stdio.h> 25 #include <inttypes.h> 26 #include "bio.h" 27 28 #define MAXCSCOUNT 10000 29 30 typedef enum { 31 CHUNK_FLOOP_NOTFOUND, 32 CHUNK_FLOOP_DELETED, 33 CHUNK_FLOOP_MISSING_NOCOPY, 34 CHUNK_FLOOP_MISSING_INVALID, 35 CHUNK_FLOOP_MISSING_WRONGVERSION, 36 CHUNK_FLOOP_UNDERGOAL, 37 CHUNK_FLOOP_OK 38 } chunkfloop; 39 40 /* 41 int chunk_create(uint64_t *chunkid,uint8_t goal); 42 int chunk_duplicate(uint64_t *chunkid,uint64_t oldchunkid,uint8_t goal); 43 int chunk_increase_version(uint64_t chunkid); 44 int chunk_truncate(uint64_t chunkid,uint32_t length); 45 int chunk_duptrunc(uint64_t *chunkid,uint64_t oldchunkid,uint32_t length,uint8_t goal); 46 int chunk_reinitialize(uint64_t chunkid); 47 48 void chunk_load_goal(void); 49 */ 50 int chunk_mr_multi_modify(uint32_t ts,uint64_t *nchunkid,uint64_t ochunkid,uint8_t goal,uint8_t opflag); 51 int chunk_mr_multi_truncate(uint32_t ts,uint64_t *nchunkid,uint64_t ochunkid,uint8_t goal); 52 //int chunk_multi_reinitialize(uint32_t ts,uint64_t chunkid); 53 int chunk_mr_unlock(uint64_t chunkid); 54 int chunk_mr_increase_version(uint64_t chunkid); 55 int chunk_mr_set_version(uint64_t chunkid,uint32_t version); 56 57 int chunk_mr_nextchunkid(uint64_t nchunkid); 58 int chunk_mr_chunkadd(uint64_t chunkid,uint32_t version,uint32_t lockedto); 59 int chunk_mr_chunkdel(uint64_t chunkid,uint32_t version); 60 61 // void chunk_text_dump(FILE *fd); 62 63 void chunk_stats(uint32_t *del,uint32_t *repl); 64 void chunk_store_info(uint8_t *buff); 65 uint32_t chunk_get_missing_count(void); 66 void chunk_store_chunkcounters(uint8_t *buff,uint8_t matrixid); 67 uint32_t chunk_count(void); 68 void chunk_info(uint32_t *allchunks,uint32_t *allcopies,uint32_t *regcopies); 69 uint8_t chunk_counters_in_progress(void); 70 71 int chunk_get_validcopies(uint64_t chunkid,uint8_t *vcopies); 72 chunkfloop chunk_fileloop_task(uint64_t chunkid,uint8_t goal,uint8_t aftereof); 73 74 int chunk_multi_modify(uint64_t *nchunkid,uint64_t ochunkid,uint8_t goal,uint8_t *opflag); 75 int chunk_multi_truncate(uint64_t *nchunkid,uint64_t ochunkid,uint32_t length,uint8_t goal); 76 //int chunk_multi_reinitialize(uint64_t chunkid); 77 int chunk_repair(uint8_t goal,uint64_t ochunkid,uint32_t *nversion); 78 79 /* ---- */ 80 uint8_t chunk_get_version_and_csdata(uint8_t mode,uint64_t chunkid,uint32_t cuip,uint32_t *version,uint8_t *count,uint8_t cs_data[100*10]); 81 /* ---- */ 82 uint16_t chunk_server_connected(void *ptr); 83 84 void chunk_server_has_chunk(uint16_t csid,uint64_t chunkid,uint32_t version); 85 void chunk_damaged(uint16_t csid,uint64_t chunkid); 86 void chunk_lost(uint16_t csid,uint64_t chunkid); 87 void chunk_server_register_end(uint16_t csid); 88 void chunk_server_disconnected(uint16_t csid); 89 90 void chunk_got_delete_status(uint16_t csid,uint64_t chunkid,uint8_t status); 91 void chunk_got_replicate_status(uint16_t csid,uint64_t chunkid,uint32_t version,uint8_t status); 92 93 void chunk_got_chunkop_status(uint16_t csid,uint64_t chunkid,uint8_t status); 94 95 void chunk_got_create_status(uint16_t csid,uint64_t chunkid,uint8_t status); 96 void chunk_got_duplicate_status(uint16_t csid,uint64_t chunkid,uint8_t status); 97 void chunk_got_setversion_status(uint16_t csid,uint64_t chunkid,uint8_t status); 98 void chunk_got_truncate_status(uint16_t csid,uint64_t chunkid,uint8_t status); 99 void chunk_got_duptrunc_status(uint16_t csid,uint64_t chunkid,uint8_t status); 100 101 /* ---- */ 102 uint8_t chunk_no_more_pending_jobs(void); 103 104 int chunk_change_file(uint64_t chunkid,uint8_t prevgoal,uint8_t newgoal); 105 int chunk_delete_file(uint64_t chunkid,uint8_t goal); 106 int chunk_add_file(uint64_t chunkid,uint8_t goal); 107 int chunk_unlock(uint64_t chunkid); 108 109 void chunk_get_memusage(uint64_t allocated[3],uint64_t used[3]); 110 111 int chunk_load(bio *fd,uint8_t mver); 112 uint8_t chunk_store(bio *fd); 113 void chunk_cleanup(void); 114 void chunk_newfs(void); 115 int chunk_strinit(void); 116 117 #endif 118