linux/drivers/md/dm-cache-background-tracker.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2017 Red Hat. All rights reserved.
   3 *
   4 * This file is released under the GPL.
   5 */
   6
   7#ifndef DM_CACHE_BACKGROUND_WORK_H
   8#define DM_CACHE_BACKGROUND_WORK_H
   9
  10#include <linux/vmalloc.h>
  11#include "dm-cache-policy.h"
  12
  13/*----------------------------------------------------------------*/
  14
  15struct background_work;
  16struct background_tracker;
  17
  18/*
  19 * FIXME: discuss lack of locking in all methods.
  20 */
  21struct background_tracker *btracker_create(unsigned max_work);
  22void btracker_destroy(struct background_tracker *b);
  23
  24unsigned btracker_nr_writebacks_queued(struct background_tracker *b);
  25unsigned btracker_nr_demotions_queued(struct background_tracker *b);
  26
  27/*
  28 * returns -EINVAL iff the work is already queued.  -ENOMEM if the work
  29 * couldn't be queued for another reason.
  30 */
  31int btracker_queue(struct background_tracker *b,
  32                   struct policy_work *work,
  33                   struct policy_work **pwork);
  34
  35/*
  36 * Returns -ENODATA if there's no work.
  37 */
  38int btracker_issue(struct background_tracker *b, struct policy_work **work);
  39void btracker_complete(struct background_tracker *b,
  40                       struct policy_work *op);
  41bool btracker_promotion_already_present(struct background_tracker *b,
  42                                        dm_oblock_t oblock);
  43
  44/*----------------------------------------------------------------*/
  45
  46#endif
  47