Commit 7a589d40 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Add a 'tracked' field to namespaces

Clients can now provide a 'track' flag when defining a namespace to let
urd know that it must keep track of the namespace contents. The flag is
currently propagated by the messaging system and stored in the internal
backend metadata. Tracking not implemented yet.
parent c4d540cb
Loading
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -135,7 +135,7 @@ test:ubuntu:latest:
        - make -j4 core
        - ./core -as
        - make -j4 api
        - NORNS_DEBUG_OUTPUT_TO_STDERR=1 NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api
#        - NORNS_DEBUG_OUTPUT_TO_STDERR=1 NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_register_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_unregister_namespace]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit_copy_local_posix_files]"
@@ -148,10 +148,6 @@ test:ubuntu:latest:
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_resource_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_iotask_init]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::NORNS_TASK]"
##        - valgrind 
##            --leak-check=full 
##            -v 
##            env NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_submit]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::norns_status]"
        - NORNS_DEBUG_CONFIG_FILE_OVERRIDE=1 ./api -as "[api::nornsctl_status]"
+7 −3
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#endif

#include <sys/types.h>
#include <stdbool.h>
#include "nornsctl_types.h"
#include "norns_error.h"

@@ -53,6 +54,7 @@ extern "C" {
/* Descriptor for a storage namespace */
typedef struct {
    int         b_type;     /* namespace type */
    bool        b_track;    /* should the service track its contents? */
    const char* b_mount;    /* mount point */
    uint32_t    b_capacity; /* namespace capacity (in megabytes) for writing data */
} nornsctl_backend_t;
@@ -89,12 +91,14 @@ typedef struct {

nornsctl_backend_t 
NORNSCTL_BACKEND(nornsctl_backend_flags_t flags, 
                 bool track,
                 const char* mount_point, 
                 uint32_t capacity) __THROW;

void 
nornsctl_backend_init(nornsctl_backend_t* backend,
                      nornsctl_backend_flags_t flags,
                      bool track,
                      const char* mount_point,
                      uint32_t capacity) __THROW;

+11 −5
Original line number Diff line number Diff line
@@ -251,25 +251,31 @@ nornsctl_unregister_namespace(const char* nsid) {
}

nornsctl_backend_t 
NORNSCTL_BACKEND(norns_flags_t flags, const char* mount_point, 
NORNSCTL_BACKEND(norns_flags_t flags, 
                 bool track, 
                 const char* mount_point, 
                 uint32_t capacity) {

    nornsctl_backend_t b;

    nornsctl_backend_init(&b, flags, mount_point, capacity);
    nornsctl_backend_init(&b, flags, track, mount_point, capacity);

    return b;
}

void 
nornsctl_backend_init(nornsctl_backend_t* backend, norns_flags_t flags, 
                      const char* mount_point, uint32_t capacity) {
nornsctl_backend_init(nornsctl_backend_t* backend, 
                      norns_flags_t flags, 
                      bool track, 
                      const char* mount_point, 
                      uint32_t capacity) {

    if(backend == NULL) {
        return;
    }

    backend->b_type = flags;
    backend->b_track = track;
    backend->b_mount = mount_point;
    backend->b_capacity = capacity;
}
+1 −0
Original line number Diff line number Diff line
@@ -389,6 +389,7 @@ build_backend_message(const nornsctl_backend_t* backend) {
    norns__rpc__request__namespace__backend__init(backendmsg);

    backendmsg->type = backend->b_type;
    backendmsg->track = backend->b_track;

    // n_mount might be NULL for some namespaces 
    // (e.g. NORNS_NS_PROCESS_MEMORY)
+3 −2
Original line number Diff line number Diff line
@@ -68,8 +68,9 @@ message Request {
        // backend descriptor
        message Backend {
            required int32 type = 1;
            required string mount = 2;
            required int32 capacity = 3;
            required bool track = 2;
            required string mount = 3;
            required int32 capacity = 4;
        }

        required string nsid = 1;
Loading