From 83234b0a2eaf359eb9b88485a34fc662ce5dcb3e Mon Sep 17 00:00:00 2001 From: Hongze Cheng Date: Tue, 20 Oct 2020 06:56:43 +0000 Subject: [PATCH] more code --- src/dnode/src/dnodeMain.c | 2 ++ src/dnode/src/dnodeTier.c | 2 +- src/inc/dnode.h | 18 ++++++++++++------ src/inc/taoserror.h | 1 + 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/dnode/src/dnodeMain.c b/src/dnode/src/dnodeMain.c index 97e6f2ce6d..d22cc93cb4 100644 --- a/src/dnode/src/dnodeMain.c +++ b/src/dnode/src/dnodeMain.c @@ -33,6 +33,8 @@ #include "dnodeShell.h" #include "dnodeTelemetry.h" +SDnodeTier *pDnodeTier = NULL; + static int32_t dnodeInitStorage(); static void dnodeCleanupStorage(); static void dnodeSetRunStatus(SDnodeRunStatus status); diff --git a/src/dnode/src/dnodeTier.c b/src/dnode/src/dnodeTier.c index 8e058a3134..310b65a17e 100644 --- a/src/dnode/src/dnodeTier.c +++ b/src/dnode/src/dnodeTier.c @@ -20,7 +20,7 @@ SDnodeTier *dnodeNewTier() { return NULL; } void * dnodeCloseTier(SDnodeTier *pDnodeTier) { return NULL; } -int dnodeAddDisk(SDnodeTier *pDnodeTier, char *dir, int level) { return 0; } +int dnodeAddDisks(SDnodeTier *pDnodeTier, SDiskCfg *pDiskCfgs, int ndisks); int dnodeUpdateTiersInfo(SDnodeTier *pDnodeTier) { return 0; } int dnodeCheckTiers(SDnodeTier *pDnodeTier) { return 0; } SDisk * dnodeAssignDisk(SDnodeTier *pDnodeTier, int level) { return NULL; } diff --git a/src/inc/dnode.h b/src/inc/dnode.h index ec59a33d47..11c56e137a 100644 --- a/src/inc/dnode.h +++ b/src/inc/dnode.h @@ -75,6 +75,12 @@ void dnodeSendStatusMsgToMnode(); #define DNODE_MAX_TIERS 3 #define DNODE_MAX_DISKS_PER_TIER 16 +typedef struct { + char dir[TSDB_FILENAME_LEN]; + int level; + int primary; +} SDiskCfg; + typedef struct { int level; int did; @@ -92,9 +98,9 @@ typedef struct { } SDisk; typedef struct { - int level; - int nDisks; - SDisk disks[DNODE_MAX_DISKS_PER_TIER]; + int level; + int nDisks; + SDisk *disks[DNODE_MAX_DISKS_PER_TIER]; } STier; typedef struct SDnodeTier { @@ -104,7 +110,7 @@ typedef struct SDnodeTier { SHashObj * map; } SDnodeTier; -#define DNODE_PRIMARY_DISK(pDnodeTier) (&(pDnodeTier)->tiers[0].disks[0]) +#define DNODE_PRIMARY_DISK(pDnodeTier) (pDnodeTier)->tiers[0].disks[0] static FORCE_INLINE int dnodeRLockTiers(SDnodeTier *pDnodeTier) { int code = pthread_rwlock_rdlock(&(pDnodeTier->rwlock)); @@ -138,12 +144,12 @@ static FORCE_INLINE SDisk *dnodeGetDisk(SDnodeTier *pDnodeTier, int level, int d if (did < 0 || did >= pDnodeTier->tiers[level].nDisks) return NULL; - return &(pDnodeTier->tiers[level].disks[did]); + return pDnodeTier->tiers[level].disks[did]; } SDnodeTier *dnodeNewTier(); void * dnodeCloseTier(SDnodeTier *pDnodeTier); -int dnodeAddDisk(SDnodeTier *pDnodeTier, char *dir, int level); +int dnodeAddDisks(SDnodeTier *pDnodeTier, SDiskCfg *pDiskCfgs, int ndisks); int dnodeUpdateTiersInfo(SDnodeTier *pDnodeTier); int dnodeCheckTiers(SDnodeTier *pDnodeTier); SDisk * dnodeAssignDisk(SDnodeTier *pDnodeTier, int level); diff --git a/src/inc/taoserror.h b/src/inc/taoserror.h index 39bd7bbc7a..e5619e9267 100644 --- a/src/inc/taoserror.h +++ b/src/inc/taoserror.h @@ -186,6 +186,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_DND_TOO_MANY_DISKS, 0, 0x0405, "Too many d TAOS_DEFINE_ERROR(TSDB_CODE_DND_DISK_ALREADY_EXISTS, 0, 0x0406, "Disk already exists") TAOS_DEFINE_ERROR(TSDB_CODE_DND_DISK_NOT_DIRECTORY, 0, 0x0407, "Disk is not a directory") TAOS_DEFINE_ERROR(TSDB_CODE_DND_NO_DISK_SPACE, 0, 0x0408, "Dnode no disk space") +TAOS_DEFINE_ERROR(TSDB_CODE_DND_DUPLICATE_PRIMARY_DISK, 0, 0x0409, "Duplicate primary disk") // vnode TAOS_DEFINE_ERROR(TSDB_CODE_VND_ACTION_IN_PROGRESS, 0, 0x0500, "Action in progress")