1 /* 2 * Copyright (C) 2021 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 _MATOCSSERV_H_ 22 #define _MATOCSSERV_H_ 23 24 #include <inttypes.h> 25 #include "chunks.h" // MAXCSCOUNT 26 27 uint8_t matocsserv_server_has_labels(void *e,uint32_t *labelmask); 28 uint32_t matocsserv_server_get_labelmask(void *e); 29 uint32_t matocsserv_server_get_ip(void *e); 30 uint16_t matocsserv_servers_with_labelsets(uint32_t *labelmask); 31 uint16_t matocsserv_servers_with_label(uint8_t label); 32 uint16_t matocsserv_servers_count(void); 33 uint16_t matocsserv_almostfull_servers(void); 34 35 // void matocsserv_usagedifference(double *minusage,double *maxusage,uint16_t *usablescount,uint16_t *totalscount); 36 // uint16_t matocsserv_getservers_ordered(uint16_t csids[MAXCSCOUNT],double maxusagediff,uint32_t *min,uint32_t *max); 37 void matocsserv_getservers_test(uint16_t *stdcscnt,uint16_t stdcsids[MAXCSCOUNT],uint16_t *olcscnt,uint16_t olcsids[MAXCSCOUNT],uint16_t *allcscnt,uint16_t allcsids[MAXCSCOUNT]); 38 uint16_t matocsserv_getservers_ordered(uint16_t csids[MAXCSCOUNT]); 39 uint16_t matocsserv_getservers_wrandom(uint16_t csids[MAXCSCOUNT],uint16_t *overloaded); 40 void matocsserv_useservers_wrandom(void* servers[MAXCSCOUNT],uint16_t cnt); 41 // uint16_t matocsserv_getservers_lessrepl(uint16_t csids[MAXCSCOUNT],double replimit,uint8_t highpriority,uint8_t *allservflag); 42 43 #define CSSTATE_NO_SPACE 3 44 #define CSSTATE_LIMIT_REACHED 2 45 #define CSSTATE_OVERLOADED 1 46 #define CSSTATE_OK 0 47 48 void matocsserv_get_server_groups(uint16_t csids[MAXCSCOUNT],double replimit,uint16_t counters[4]); 49 50 51 int matocsserv_have_availspace(void); 52 void matocsserv_getspace(uint64_t *totalspace,uint64_t *availspace,uint64_t *freespace); 53 char* matocsserv_getstrip(void *e); 54 int matocsserv_get_csdata(void *e,uint32_t *servip,uint16_t *servport,uint32_t *servver,uint32_t *servlabelmask); 55 void matocsserv_getservdata(void *e,uint32_t *ver,uint64_t *uspc,uint64_t *tspc,uint32_t *chunkcnt,uint64_t *tduspc,uint64_t *tdtspc,uint32_t *tdchunkcnt,uint32_t *errcnt,uint32_t *load,uint8_t *hlstatus,uint32_t *labelmask,uint8_t *mfrstatus); 56 57 58 void matocsserv_write_counters(void *e,uint8_t x); 59 60 uint8_t matocsserv_has_avail_space(void *e); 61 double matocsserv_get_usage(void *e); 62 63 double matocsserv_replication_write_counter(void *e,uint32_t now); 64 double matocsserv_replication_read_counter(void *e,uint32_t now); 65 uint16_t matocsserv_deletion_counter(void *e); 66 67 int matocsserv_send_replicatechunk(void *e,uint64_t chunkid,uint32_t version,void *src); 68 int matocsserv_send_replicatechunk_raid(void *e,uint64_t chunkid,uint32_t version,uint8_t cnt,const uint32_t xormasks[4],void **src,uint64_t *srcchunkid,uint32_t *srcversion); 69 int matocsserv_send_chunkop(void *e,uint64_t chunkid,uint32_t version,uint32_t newversion,uint64_t copychunkid,uint32_t copyversion,uint32_t leng); 70 int matocsserv_send_deletechunk(void *e,uint64_t chunkid,uint32_t version); 71 int matocsserv_send_createchunk(void *e,uint64_t chunkid,uint32_t version); 72 int matocsserv_send_setchunkversion(void *e,uint64_t chunkid,uint32_t version,uint32_t oldversion); 73 int matocsserv_send_duplicatechunk(void *e,uint64_t chunkid,uint32_t version,uint64_t oldchunkid,uint32_t oldversion); 74 int matocsserv_send_truncatechunk(void *e,uint64_t chunkid,uint32_t length,uint32_t version,uint32_t oldversion); 75 int matocsserv_send_duptruncchunk(void *e,uint64_t chunkid,uint32_t version,uint64_t oldchunkid,uint32_t oldversion,uint32_t length); 76 77 uint8_t matocsserv_isvalid(void *e); 78 79 void matocsserv_disconnection_finished(void *e); 80 int matocsserv_no_more_pending_jobs(void); 81 void matocsserv_disconnect_all(void); 82 void matocsserv_close_lsock(void); 83 int matocsserv_init(void); 84 85 #endif 86