qemu/include/block/write-threshold.h
<<
>>
Prefs
   1/*
   2 * QEMU System Emulator block write threshold notification
   3 *
   4 * Copyright Red Hat, Inc. 2014
   5 *
   6 * Authors:
   7 *  Francesco Romani <fromani@redhat.com>
   8 *
   9 * This work is licensed under the terms of the GNU LGPL, version 2 or later.
  10 * See the COPYING.LIB file in the top-level directory.
  11 */
  12#ifndef BLOCK_WRITE_THRESHOLD_H
  13#define BLOCK_WRITE_THRESHOLD_H
  14
  15#include "qemu-common.h"
  16
  17/*
  18 * bdrv_write_threshold_set:
  19 *
  20 * Set the write threshold for block devices, in bytes.
  21 * Notify when a write exceeds the threshold, meaning the device
  22 * is becoming full, so it can be transparently resized.
  23 * To be used with thin-provisioned block devices.
  24 *
  25 * Use threshold_bytes == 0 to disable.
  26 */
  27void bdrv_write_threshold_set(BlockDriverState *bs, uint64_t threshold_bytes);
  28
  29/*
  30 * bdrv_write_threshold_get
  31 *
  32 * Get the configured write threshold, in bytes.
  33 * Zero means no threshold configured.
  34 */
  35uint64_t bdrv_write_threshold_get(const BlockDriverState *bs);
  36
  37/*
  38 * bdrv_write_threshold_is_set
  39 *
  40 * Tell if a write threshold is set for a given BDS.
  41 */
  42bool bdrv_write_threshold_is_set(const BlockDriverState *bs);
  43
  44/*
  45 * bdrv_write_threshold_exceeded
  46 *
  47 * Return the extent of a write request that exceeded the threshold,
  48 * or zero if the request is below the threshold.
  49 * Return zero also if the threshold was not set.
  50 *
  51 * NOTE: here we assume the following holds for each request this code
  52 * deals with:
  53 *
  54 * assert((req->offset + req->bytes) <= UINT64_MAX)
  55 *
  56 * Please not there is *not* an actual C assert().
  57 */
  58uint64_t bdrv_write_threshold_exceeded(const BlockDriverState *bs,
  59                                       const BdrvTrackedRequest *req);
  60
  61#endif
  62