[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [PATCH] cdi: Entry-Interface fuer Cache entfernen



---
 src/modules/cdi/include/cdi/cache.h |   90 -----------
 src/modules/cdi/lib/cache.c         |  282 -----------------------------------
 2 files changed, 0 insertions(+), 372 deletions(-)

diff --git a/src/modules/cdi/include/cdi/cache.h b/src/modules/cdi/include/cdi/cache.h
index fd43bca..3c13230 100644
--- a/src/modules/cdi/include/cdi/cache.h
+++ b/src/modules/cdi/include/cdi/cache.h
@@ -32,13 +32,6 @@ struct cdi_cache_block {
     void*       private;
 };
 
-/** Cache-Bereiche fuer komfortablen, dafuer etwas langsameren, Zugriff */
-struct cdi_cache_entry {
-    struct cdi_cache* cache;
-
-    /* OS-Spezifische Daten folgen... */
-};
-
 /** Typ fuer Cache-Callback zum einlesen eines Blocks. */
 typedef int (cdi_cache_read_block_t)(struct cdi_cache* cache, uint64_t block,
     size_t count, void* dest, void* prv);
@@ -112,87 +105,4 @@ void cdi_cache_block_release(struct cdi_cache* cache,
 void cdi_cache_block_dirty(struct cdi_cache* cache,
     struct cdi_cache_block* block);
 
-/**
- * Cache-Eintrag erstellen
- *
- * @param offset    Position auf dem Datentraeger
- * @param size      Groesse des Bereichs
- *
- * @return Handle
- */
-struct cdi_cache_entry* cdi_cache_entry_new(struct cdi_cache* cache,
-    uint64_t offset, size_t size);
-
-/**
- * Cache-Eintrag freigeben
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_release(struct cdi_cache_entry* entry);
-
-/**
- * Cache-Eintrag sperren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_lock(struct cdi_cache_entry* entry);
-
-/**
- * Cache-Eintrag entsperren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_unlock(struct cdi_cache_entry* entry);
-
-/**
- * Cache-Eintrag als veraendert markieren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_dirty(struct cdi_cache_entry* entry);
-
-/**
- * Einzelnen Block im Cache-Eintrag als veraendert markieren
- *
- * @param entry Handle
- * @param block Blocknummer (von 0 an)
- */
-void    cdi_cache_entry_blkdirty(struct cdi_cache_entry* entry, uint64_t block);
-
-
-
-/**
- * Pointer auf einen Block im Cache-Eintrag holen
- *
- * @param entry Handle
- * @param block Blocknummer relativ zum Eintrag (der Offset innerhalb des
- *              Eintrags wird nicht beruecksichtigt)
- *
- * @return Pointer auf den Block
- */
-void*   cdi_cache_entry_block(struct cdi_cache_entry* entry, size_t block);
-
-/**
- * Daten aus dem Cache-Eintrag lesen
- *
- * @param entry     Handle
- * @param offset    Offset relativ zum Cache-Eintrag
- * @param size      Groesse des zu lesenden Bereichs
- * @param buffer    Puffer in dem die Daten abgelegt werden sollen
- */
-int     cdi_cache_entry_read(struct cdi_cache_entry* entry, size_t offset,
-            size_t size, void* buffer);
-
-/**
- * Daten in den Cache-Eintrag schreiben
- *
- * @param entry     Handle
- * @param offset    Offset relativ zum Cache-Eintrag
- * @param size      Groesse des zu schreibenden Bereichs
- * @param buffer    Puffer aus dem die Daten gelesen werden
- */
-int     cdi_cache_entry_write(struct cdi_cache_entry* entry, size_t offset,
-            size_t size, const void* buffer);
-
-
 #endif
diff --git a/src/modules/cdi/lib/cache.c b/src/modules/cdi/lib/cache.c
index 30ecdc3..486382a 100644
--- a/src/modules/cdi/lib/cache.c
+++ b/src/modules/cdi/lib/cache.c
@@ -103,29 +103,6 @@ struct cache {
     uint16_t            prev_hint;
 };
 
-/**
- * Cache-eintrag
- */
-struct entry {
-    /** Eigentlicher CDI-Cache-Eintrag */
-    struct cdi_cache_entry  entry;
-
-    /** Offset */
-    uint64_t                offset;
-
-    /** Groesse des Bereichs */
-    size_t                  size;
-
-    /** Anzahl der Blocks */
-    size_t                  block_count;
-
-    /** Pointer auf ein Array mit Blockpointern */
-    struct block**          blocks;
-
-    /** Gesperrt */
-    int                     locked;
-};
-
 
 
 /**
@@ -711,262 +688,3 @@ void cdi_cache_block_dirty(struct cdi_cache* cache,
     struct block* b = (struct block*) block;
     b->dirty = 1;
 }
-
-
-
-
-/**
- * Cache-Eintrag erstellen
- *
- * @param offset    Position auf dem Datentraeger
- * @param size      Groesse des Bereichs
- *
- * @return Handle
- */
-struct cdi_cache_entry* cdi_cache_entry_new(struct cdi_cache* cache,
-    uint64_t offset, size_t size)
-{
-    struct entry* entry = malloc(sizeof(struct entry));
-    size_t block_size = cache->block_size;
-    uint64_t start_block = offset / block_size;
-    uint64_t end_block = (offset + size - 1) / block_size;
-
-    entry->entry.cache = cache;
-    entry->locked = 0;
-    entry->offset = offset;
-    entry->size = size;
-    entry->block_count = end_block - start_block + 1;
-    entry->blocks = calloc(sizeof(struct block*) * entry->block_count, 1);
-
-    return (struct cdi_cache_entry*) entry;
-}
-
-/**
- * Cache-Eintrag freigeben
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_release(struct cdi_cache_entry* entry)
-{
-    struct entry* e = (struct entry*) entry;
-    size_t i;
-
-    if (e->locked) {
-        cdi_cache_entry_unlock(entry);
-    }
-
-    for (i = 0; i < e->block_count; i++) {
-        struct block* block = e->blocks[i];
-        if (block) {
-            block->ref_count--;
-        }
-    }
-
-    free(e);
-}
-
-/**
- * Cache-Eintrag sperren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_lock(struct cdi_cache_entry* entry)
-{
-    struct entry* e = (struct entry*) entry;
-    e->locked = 1;
-}
-
-/**
- * Cache-Eintrag entsperren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_unlock(struct cdi_cache_entry* entry)
-{
-    struct entry* e = (struct entry*) entry;
-    e->locked = 0;
-}
-
-/**
- * Cache-Eintrag als veraendert markieren
- *
- * @param entry Handle
- */
-void    cdi_cache_entry_dirty(struct cdi_cache_entry* entry)
-{
-    struct entry* e = (struct entry*) entry;
-    size_t i;
-
-    for (i = 0; i < e->block_count; i++) {
-        struct block* block = e->blocks[i];
-        block->dirty = 1;
-    }
-}
-
-
-
-/**
- * Pointer auf einen Block im Cache-Eintrag holen
- *
- * @param entry Handle
- * @param block Blocknummer relativ zum Eintrag (der Offset innerhalb des
- *              Eintrags wird nicht beruecksichtigt)
- *
- * @return Pointer auf den Block
- */
-void*   cdi_cache_entry_block(struct cdi_cache_entry* entry, size_t block)
-{
-    struct entry* e = (struct entry*) entry;
-    size_t block_size = entry->cache->block_size;
-    uint64_t dev_start_block = (e->offset) / block_size;
-
-    if (block >= e->block_count) {
-        return NULL;
-    }
-
-    if (e->blocks[block] == NULL) {
-        e->blocks[block] = get_block((struct cache*) entry->cache,
-            dev_start_block + block, 1);
-        e->blocks[block]->ref_count++;
-    }
-
-
-    return e->blocks[block]->cdi.data;
-}
-
-/**
- * Daten aus dem Cache-Eintrag lesen
- *
- * @param entry     Handle
- * @param offset    Offset relativ zum Cache-Eintrag
- * @param size      Groesse des zu lesenden Bereichs
- * @param buffer    Puffer in dem die Daten abgelegt werden sollen
- */
-int     cdi_cache_entry_read(struct cdi_cache_entry* entry, size_t offset,
-            size_t size, void* buffer)
-{
-    struct entry* e = (struct entry*) entry;
-    size_t block_size = entry->cache->block_size;
-    uint64_t dev_start_block = (e->offset + offset) / block_size;
-    size_t start_block = (e->offset + offset) / block_size - e->offset /
-        block_size;
-    size_t end_block = (e->offset + offset + size -1) / block_size - e->offset /
-        block_size;
-    size_t block_count = end_block - start_block + 1;
-    size_t i;
-    size_t bytes_done = 0;
-
-    // Nicht ueber den Eintragsrand hinauslesen
-    if ((offset + size) > e->size) {
-        return 0;
-    }
-
-    // Offset vom Block-Anfang im Cacheeintrag beruecksichtigen, falls vorhanden
-    offset += e->offset % block_size;
-
-    for (i = 0; i < block_count; i++) {
-        void* block;
-        size_t bytes = block_size;
-        size_t off = 0;
-
-        if (e->blocks[start_block + i] == NULL) {
-            e->blocks[start_block + i] = get_block((struct cache*) entry->cache,
-                dev_start_block + i, 1);
-            e->blocks[start_block + i]->ref_count++;
-        }
-
-        block = e->blocks[start_block + i]->cdi.data;
-        e->blocks[start_block + i]->access_time = ++cache_time;
-
-        // Beim ersten Durchlauf muss der Anfangsoffset beruecksichtigt werden
-        if (i == 0) {
-            off = offset % block_size;
-            bytes = block_size - off;
-        }
-
-        // Beim letzten Durchlauf muss unter umstaenden nicht mehr ein ganzer
-        // Block gelesen werden.
-        if (i == block_count - 1) {
-            bytes = size - bytes_done;
-        }
-
-        memcpy((void*) ((uintptr_t) buffer + bytes_done), (void*)
-            ((uintptr_t) block + off), bytes);
-        bytes_done += bytes;
-    }
-
-    return 1;
-}
-
-/**
- * Daten in den Cache-Eintrag schreiben
- *
- * @param entry     Handle
- * @param offset    Offset relativ zum Cache-Eintrag
- * @param size      Groesse des zu schreibenden Bereichs
- * @param buffer    Puffer aus dem die Daten gelesen werden
- */
-int     cdi_cache_entry_write(struct cdi_cache_entry* entry, size_t offset,
-            size_t size, const void* buffer)
-{
-    struct entry* e = (struct entry*) entry;
-    size_t block_size = entry->cache->block_size;
-    uint64_t dev_start_block = (e->offset + offset) / block_size;
-    size_t start_block = (e->offset + offset) / block_size - e->offset /
-        block_size;
-    size_t end_block = (e->offset + offset + size - 1) / block_size - e->offset /
-        block_size;
-    size_t block_count = end_block - start_block + 1;
-    size_t i;
-    size_t bytes_done = 0;
-
-    // Nicht ueber den Eintragsrand hinausschreiben
-    if ((offset + size) > e->size) {
-        return 0;
-    }
-
-    // Offset vom Block-Anfang im Cacheeintrag beruecksichtigen, falls vorhanden
-    offset += e->offset % block_size;
-
-    for (i = 0; i < block_count; i++) {
-        void* block;
-        size_t bytes = block_size;
-        size_t off = 0;
-
-        // Beim ersten Durchlauf muss der Anfangsoffset beruecksichtigt werden
-        if (i == 0) {
-            off = offset % block_size;
-            bytes = block_size - off;
-        }
-
-        if (i == block_count - 1) {
-            bytes = size - bytes_done;
-        }
-
-
-        if (e->blocks[start_block + i] == NULL) {
-            int read = 1;
-
-            if ((off == 0) && (bytes == block_size)) {
-                read = 0;
-            }
-
-            e->blocks[start_block + i] = get_block((struct cache*) entry->cache,
-                dev_start_block + i, read);
-            e->blocks[start_block + i]->ref_count++;
-        }
-
-        block = e->blocks[start_block + i]->cdi.data;
-        e->blocks[start_block + i]->access_time = ++cache_time;
-        e->blocks[start_block + i]->dirty = 1;
-
-
-        memcpy((void*) ((uintptr_t) block + off), (void*) ((uintptr_t) buffer +
-            bytes_done), bytes);
-        bytes_done += bytes;
-    }
-
-    return 1;
-}
-
-
-- 
1.5.4.5