diff options
Diffstat (limited to 'libglusterfs/src/iobuf.c')
| -rw-r--r-- | libglusterfs/src/iobuf.c | 98 | 
1 files changed, 70 insertions, 28 deletions
diff --git a/libglusterfs/src/iobuf.c b/libglusterfs/src/iobuf.c index a717792ce..42b7f4267 100644 --- a/libglusterfs/src/iobuf.c +++ b/libglusterfs/src/iobuf.c @@ -77,8 +77,10 @@ __iobuf_arena_destroy_iobufs (struct iobuf_arena *iobuf_arena)          page_size  = iobuf_arena->iobuf_pool->page_size;          iobuf_cnt  = arena_size / page_size; -        if (!iobuf_arena->iobufs) +        if (!iobuf_arena->iobufs) { +                gf_log ("", GF_LOG_DEBUG, "iobufs not found");                  return; +        }          iobuf = iobuf_arena->iobufs;          for (i = 0; i < iobuf_cnt; i++) { @@ -97,9 +99,10 @@ __iobuf_arena_destroy (struct iobuf_arena *iobuf_arena)  {          struct iobuf_pool *iobuf_pool = NULL; -        if (!iobuf_arena) +        if (!iobuf_arena) { +                gf_log ("", GF_LOG_DEBUG, "iobufs not found");                  return; - +        }          iobuf_pool = iobuf_arena->iobuf_pool;          __iobuf_arena_destroy_iobufs (iobuf_arena); @@ -131,12 +134,16 @@ __iobuf_arena_alloc (struct iobuf_pool *iobuf_pool)          arena_size = iobuf_pool->arena_size;          iobuf_arena->mem_base = mmap (NULL, arena_size, PROT_READ|PROT_WRITE,                                        MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); -        if (iobuf_arena->mem_base == MAP_FAILED) +        if (iobuf_arena->mem_base == MAP_FAILED) { +                gf_log ("", GF_LOG_WARNING, "maping failed");                  goto err; +        }          __iobuf_arena_init_iobufs (iobuf_arena); -        if (!iobuf_arena->iobufs) +        if (!iobuf_arena->iobufs) { +                gf_log ("", GF_LOG_DEBUG, "init failed");                  goto err; +        }          iobuf_pool->arena_cnt++; @@ -174,8 +181,10 @@ __iobuf_pool_add_arena (struct iobuf_pool *iobuf_pool)          if (!iobuf_arena)                  iobuf_arena = __iobuf_arena_alloc (iobuf_pool); -        if (!iobuf_arena) +        if (!iobuf_arena) { +                gf_log ("", GF_LOG_WARNING, "arena not found");                  return NULL; +        }          list_add_tail (&iobuf_arena->list, &iobuf_pool->arenas.list); @@ -204,8 +213,10 @@ iobuf_pool_destroy (struct iobuf_pool *iobuf_pool)          struct iobuf_arena *iobuf_arena = NULL;          struct iobuf_arena *tmp = NULL; -        if (!iobuf_pool) +        if (!iobuf_pool) { +                gf_log ("", GF_LOG_WARNING, "iobuf pool not found");                  return; +        }          list_for_each_entry_safe (iobuf_arena, tmp, &iobuf_pool->arenas.list,                                    list) { @@ -223,8 +234,12 @@ iobuf_pool_new (size_t arena_size, size_t page_size)  {          struct iobuf_pool  *iobuf_pool = NULL; -        if (arena_size < page_size) +        if (arena_size < page_size) { +                gf_log ("", GF_LOG_WARNING, +                        "arena size (%zu) is less than page size(%zu)", +                        arena_size, page_size);                  return NULL; +        }          iobuf_pool = GF_CALLOC (sizeof (*iobuf_pool), 1,                                  gf_common_mt_iobuf_pool); @@ -357,12 +372,16 @@ iobuf_get (struct iobuf_pool *iobuf_pool)          {                  /* most eligible arena for picking an iobuf */                  iobuf_arena = __iobuf_select_arena (iobuf_pool); -                if (!iobuf_arena) +                if (!iobuf_arena) { +                        gf_log ("", GF_LOG_WARNING, "arena not found");                          goto unlock; +                }                  iobuf = __iobuf_get (iobuf_arena); -                if (!iobuf) +                if (!iobuf) { +                        gf_log ("", GF_LOG_WARNING, "iobuf not found");                          goto unlock; +                }                  __iobuf_ref (iobuf);          } @@ -404,16 +423,22 @@ iobuf_put (struct iobuf *iobuf)          struct iobuf_arena *iobuf_arena = NULL;          struct iobuf_pool  *iobuf_pool = NULL; -        if (!iobuf) +        if (!iobuf) { +                gf_log ("", GF_LOG_WARNING, "iobuf not found");                  return; +        }          iobuf_arena = iobuf->iobuf_arena; -        if (!iobuf_arena) +        if (!iobuf_arena) { +                gf_log ("", GF_LOG_WARNING, "arena not found");                  return; +        }          iobuf_pool = iobuf_arena->iobuf_pool; -        if (!iobuf_pool) +        if (!iobuf_pool) { +                gf_log ("", GF_LOG_WARNING, "iobuf pool not found");                  return; +        }          pthread_mutex_lock (&iobuf_pool->mutex);          { @@ -430,8 +455,10 @@ iobuf_unref (struct iobuf *iobuf)  {          int  ref = 0; -        if (!iobuf) +        if (!iobuf) { +                gf_log ("", GF_LOG_WARNING, "iobuf not found");                  return; +        }          LOCK (&iobuf->lock);          { @@ -448,8 +475,10 @@ iobuf_unref (struct iobuf *iobuf)  struct iobuf *  iobuf_ref (struct iobuf *iobuf)  { -        if (!iobuf) +        if (!iobuf) { +                gf_log ("", GF_LOG_WARNING, "iobuf not found");                  return NULL; +        }          LOCK (&iobuf->lock);          { @@ -482,8 +511,10 @@ iobref_new ()  struct iobref *  iobref_ref (struct iobref *iobref)  { -        if (!iobref) +        if (!iobref) { +                gf_log ("", GF_LOG_WARNING, "iobref not found");                  return NULL; +        }          LOCK (&iobref->lock);          { @@ -521,8 +552,10 @@ iobref_unref (struct iobref *iobref)  {          int ref = 0; -        if (!iobref) +        if (!iobref) { +                gf_log ("", GF_LOG_WARNING, "iobref not found");                  return; +        }          LOCK (&iobref->lock);          { @@ -558,11 +591,10 @@ iobref_add (struct iobref *iobref, struct iobuf *iobuf)  {          int  ret = 0; -        if (!iobref) -                return -EINVAL; - -        if (!iobuf) +        if (!iobref || !iobuf) { +                gf_log ("", GF_LOG_WARNING, "(iobref || iobuf) not found");                  return -EINVAL; +        }          LOCK (&iobref->lock);          { @@ -606,14 +638,20 @@ iobuf_size (struct iobuf *iobuf)  {          size_t size = 0; -        if (!iobuf) +        if (!iobuf) { +                gf_log ("", GF_LOG_WARNING, "iobuf not found");                  goto out; +        } -        if (!iobuf->iobuf_arena) +        if (!iobuf->iobuf_arena) { +                gf_log ("", GF_LOG_WARNING, "arena not found");                  goto out; +        } -        if (!iobuf->iobuf_arena->iobuf_pool) +        if (!iobuf->iobuf_arena->iobuf_pool) { +                gf_log ("", GF_LOG_WARNING, "pool not found");                  goto out; +        }          size = iobuf->iobuf_arena->iobuf_pool->page_size;  out: @@ -627,8 +665,10 @@ iobref_size (struct iobref *iobref)          size_t size = 0;          int    i = 0; -        if (!iobref) +        if (!iobref) { +                gf_log ("", GF_LOG_WARNING, "iobref not found");                  goto out; +        }          LOCK (&iobref->lock);          { @@ -649,15 +689,17 @@ iobuf_info_dump (struct iobuf *iobuf, const char *key_prefix)          struct iobuf my_iobuf;          int    ret = 0; -        if (!iobuf) +        if (!iobuf) { +                gf_log ("", GF_LOG_WARNING, "iobuf not found");                  return; +        }          memset(&my_iobuf, 0, sizeof(my_iobuf));          ret = TRY_LOCK(&iobuf->lock);          if (ret) {                  gf_log("", GF_LOG_WARNING, "Unable to dump iobuf" -                       " errno: %d", errno); +                       " errno: %s", strerror (errno));                  return;          }          memcpy(&my_iobuf, iobuf, sizeof(my_iobuf)); @@ -712,7 +754,7 @@ iobuf_stats_dump (struct iobuf_pool *iobuf_pool)          if (ret) {                  gf_log("", GF_LOG_WARNING, "Unable to dump iobuf pool" -                       " errno: %d", errno); +                       " errno: %s", strerror (errno));                  return;          }          gf_proc_dump_add_section("iobuf.global");  | 
