LCOV - code coverage report
Current view: top level - module/bdev/ocf - utils.c (source / functions) Hit Total Coverage
Test: ut_cov_unit.info Lines: 0 59 0.0 %
Date: 2024-12-13 10:52:24 Functions: 0 8 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 "spdk/stdinc.h"
       7             : #include "spdk/log.h"
       8             : 
       9             : #include "utils.h"
      10             : #include "vbdev_ocf.h"
      11             : 
      12             : static char *cache_modes[ocf_cache_mode_max] = {
      13             :         [ocf_cache_mode_wt] = "wt",
      14             :         [ocf_cache_mode_wb] = "wb",
      15             :         [ocf_cache_mode_wa] = "wa",
      16             :         [ocf_cache_mode_pt] = "pt",
      17             :         [ocf_cache_mode_wi] = "wi",
      18             :         [ocf_cache_mode_wo] = "wo",
      19             : };
      20             : 
      21             : static char *seqcutoff_policies[ocf_seq_cutoff_policy_max] = {
      22             :         [ocf_seq_cutoff_policy_always] = "always",
      23             :         [ocf_seq_cutoff_policy_full] = "full",
      24             :         [ocf_seq_cutoff_policy_never] = "never",
      25             : };
      26             : 
      27             : ocf_cache_mode_t
      28           0 : ocf_get_cache_mode(const char *cache_mode)
      29             : {
      30           0 :         int i;
      31             : 
      32           0 :         for (i = 0; i < ocf_cache_mode_max; i++) {
      33           0 :                 if (strcmp(cache_mode, cache_modes[i]) == 0) {
      34           0 :                         return i;
      35             :                 }
      36           0 :         }
      37             : 
      38           0 :         return ocf_cache_mode_none;
      39           0 : }
      40             : 
      41             : const char *
      42           0 : ocf_get_cache_modename(ocf_cache_mode_t mode)
      43             : {
      44           0 :         if (mode > ocf_cache_mode_none && mode < ocf_cache_mode_max) {
      45           0 :                 return cache_modes[mode];
      46             :         } else {
      47           0 :                 return NULL;
      48             :         }
      49           0 : }
      50             : 
      51             : int
      52           0 : ocf_get_cache_line_size(ocf_cache_t cache)
      53             : {
      54           0 :         return ocf_cache_get_line_size(cache) / KiB;
      55             : }
      56             : 
      57             : ocf_seq_cutoff_policy
      58           0 : ocf_get_seqcutoff_policy(const char *policy_name)
      59             : {
      60           0 :         int policy;
      61             : 
      62           0 :         for (policy = 0; policy < ocf_seq_cutoff_policy_max; policy++)
      63           0 :                 if (!strcmp(policy_name, seqcutoff_policies[policy])) {
      64           0 :                         return policy;
      65             :                 }
      66             : 
      67           0 :         return ocf_seq_cutoff_policy_max;
      68           0 : }
      69             : 
      70             : int
      71           0 : vbdev_ocf_mngt_start(struct vbdev_ocf *vbdev, vbdev_ocf_mngt_fn *path,
      72             :                      vbdev_ocf_mngt_callback cb, void *cb_arg)
      73             : {
      74           0 :         if (vbdev->mngt_ctx.current_step) {
      75           0 :                 return -EBUSY;
      76             :         }
      77             : 
      78           0 :         memset(&vbdev->mngt_ctx, 0, sizeof(vbdev->mngt_ctx));
      79             : 
      80           0 :         vbdev->mngt_ctx.current_step = path;
      81           0 :         vbdev->mngt_ctx.cb = cb;
      82           0 :         vbdev->mngt_ctx.cb_arg = cb_arg;
      83             : 
      84           0 :         (*vbdev->mngt_ctx.current_step)(vbdev);
      85             : 
      86           0 :         return 0;
      87           0 : }
      88             : 
      89             : void
      90           0 : vbdev_ocf_mngt_stop(struct vbdev_ocf *vbdev, vbdev_ocf_mngt_fn *rollback_path, int status)
      91             : {
      92           0 :         if (status) {
      93           0 :                 vbdev->mngt_ctx.status = status;
      94           0 :         }
      95             : 
      96           0 :         if (vbdev->mngt_ctx.status && rollback_path) {
      97           0 :                 vbdev->mngt_ctx.poller_fn = NULL;
      98           0 :                 vbdev->mngt_ctx.current_step = rollback_path;
      99           0 :                 (*vbdev->mngt_ctx.current_step)(vbdev);
     100           0 :                 return;
     101             :         }
     102             : 
     103           0 :         if (vbdev->mngt_ctx.cb) {
     104           0 :                 vbdev->mngt_ctx.cb(vbdev->mngt_ctx.status, vbdev, vbdev->mngt_ctx.cb_arg);
     105           0 :         }
     106             : 
     107           0 :         memset(&vbdev->mngt_ctx, 0, sizeof(vbdev->mngt_ctx));
     108           0 : }
     109             : 
     110             : void
     111           0 : vbdev_ocf_mngt_continue(struct vbdev_ocf *vbdev, int status)
     112             : {
     113           0 :         if (vbdev->mngt_ctx.current_step == NULL) {
     114           0 :                 return;
     115             :         }
     116             : 
     117           0 :         assert((*vbdev->mngt_ctx.current_step) != NULL);
     118             : 
     119           0 :         vbdev->mngt_ctx.status = status;
     120             : 
     121           0 :         vbdev->mngt_ctx.current_step++;
     122           0 :         if (*vbdev->mngt_ctx.current_step) {
     123           0 :                 (*vbdev->mngt_ctx.current_step)(vbdev);
     124           0 :                 return;
     125             :         }
     126             : 
     127           0 :         vbdev_ocf_mngt_stop(vbdev, NULL, 0);
     128           0 : }
     129             : 
     130             : int
     131           0 : vbdev_ocf_mngt_get_status(struct vbdev_ocf *vbdev)
     132             : {
     133           0 :         return vbdev->mngt_ctx.status;
     134             : }

Generated by: LCOV version 1.15