LCOV - code coverage report
Current view: top level - module/bdev/ocf - data.c (source / functions) Hit Total Coverage
Test: ut_cov_unit.info Lines: 0 45 0.0 %
Date: 2024-11-05 10:06:02 Functions: 0 4 0.0 %

          Line data    Source code
       1             : /*   SPDX-License-Identifier: BSD-3-Clause
       2             :  *   Copyright (C) 2018 Intel Corporation.
       3             :  *   All rights reserved.
       4             :  */
       5             : 
       6             : #include <ocf/ocf.h>
       7             : #include "spdk/bdev.h"
       8             : #include "data.h"
       9             : 
      10             : struct bdev_ocf_data *
      11           0 : vbdev_ocf_data_alloc(uint32_t iovcnt)
      12             : {
      13             :         struct bdev_ocf_data *data;
      14             : 
      15           0 :         data = env_malloc(sizeof(*data), ENV_MEM_NOIO);
      16           0 :         if (!data) {
      17           0 :                 return NULL;
      18             :         }
      19             : 
      20           0 :         data->seek = 0;
      21             : 
      22           0 :         if (iovcnt) {
      23           0 :                 data->iovs = env_malloc(sizeof(*data->iovs) * iovcnt, ENV_MEM_NOIO);
      24           0 :                 if (!data->iovs) {
      25           0 :                         env_free(data);
      26           0 :                         return NULL;
      27             :                 }
      28             :         }
      29             : 
      30           0 :         data->iovcnt = 0;
      31           0 :         data->iovalloc = iovcnt;
      32             : 
      33           0 :         return data;
      34             : }
      35             : 
      36             : void
      37           0 : vbdev_ocf_data_free(struct bdev_ocf_data *data)
      38             : {
      39           0 :         if (!data) {
      40           0 :                 return;
      41             :         }
      42             : 
      43           0 :         if (data->iovalloc != 0) {
      44           0 :                 env_free(data->iovs);
      45             :         }
      46             : 
      47           0 :         env_free(data);
      48             : }
      49             : 
      50             : void
      51           0 : vbdev_ocf_iovs_add(struct bdev_ocf_data *data, void *base, size_t len)
      52             : {
      53           0 :         assert(NULL != data);
      54           0 :         assert(data->iovalloc != -1);
      55             : 
      56           0 :         if (data->iovcnt == data->iovalloc) {
      57             :                 /* TODO: Realloc iovs */
      58           0 :                 SPDK_ERRLOG("IOV error\n");
      59             :         }
      60             : 
      61           0 :         data->iovs[data->iovcnt].iov_base = base;
      62           0 :         data->iovs[data->iovcnt].iov_len = len;
      63           0 :         data->iovcnt++;
      64           0 : }
      65             : 
      66             : struct bdev_ocf_data *
      67           0 : vbdev_ocf_data_from_spdk_io(struct spdk_bdev_io *bdev_io)
      68             : {
      69             :         struct bdev_ocf_data *data;
      70             : 
      71           0 :         if (bdev_io == NULL) {
      72           0 :                 return NULL;
      73             :         }
      74             : 
      75           0 :         switch (bdev_io->type) {
      76           0 :         case SPDK_BDEV_IO_TYPE_WRITE:
      77             :         case SPDK_BDEV_IO_TYPE_READ:
      78           0 :                 assert(bdev_io->u.bdev.iovs);
      79           0 :                 break;
      80           0 :         case SPDK_BDEV_IO_TYPE_FLUSH:
      81             :         case SPDK_BDEV_IO_TYPE_UNMAP:
      82           0 :                 break;
      83           0 :         default:
      84           0 :                 SPDK_ERRLOG("Unsupported IO type %d\n", bdev_io->type);
      85           0 :                 return NULL;
      86             :         }
      87             : 
      88           0 :         data = (struct bdev_ocf_data *)bdev_io->driver_ctx;
      89           0 :         data->iovs = bdev_io->u.bdev.iovs;
      90           0 :         data->iovcnt = bdev_io->u.bdev.iovcnt;
      91           0 :         data->size = bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
      92             : 
      93           0 :         return data;
      94             : }

Generated by: LCOV version 1.15