From bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 Mon Sep 17 00:00:00 2001 From: RajithaY Date: Tue, 25 Apr 2017 03:31:15 -0700 Subject: Adding qemu as a submodule of KVMFORNFV This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY --- qemu/block/write-threshold.c | 126 ------------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 qemu/block/write-threshold.c (limited to 'qemu/block/write-threshold.c') diff --git a/qemu/block/write-threshold.c b/qemu/block/write-threshold.c deleted file mode 100644 index cc2ca7183..000000000 --- a/qemu/block/write-threshold.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - * QEMU System Emulator block write threshold notification - * - * Copyright Red Hat, Inc. 2014 - * - * Authors: - * Francesco Romani - * - * This work is licensed under the terms of the GNU LGPL, version 2 or later. - * See the COPYING.LIB file in the top-level directory. - */ - -#include "qemu/osdep.h" -#include "block/block_int.h" -#include "qemu/coroutine.h" -#include "block/write-threshold.h" -#include "qemu/notify.h" -#include "qapi-event.h" -#include "qmp-commands.h" - - -uint64_t bdrv_write_threshold_get(const BlockDriverState *bs) -{ - return bs->write_threshold_offset; -} - -bool bdrv_write_threshold_is_set(const BlockDriverState *bs) -{ - return bs->write_threshold_offset > 0; -} - -static void write_threshold_disable(BlockDriverState *bs) -{ - if (bdrv_write_threshold_is_set(bs)) { - notifier_with_return_remove(&bs->write_threshold_notifier); - bs->write_threshold_offset = 0; - } -} - -uint64_t bdrv_write_threshold_exceeded(const BlockDriverState *bs, - const BdrvTrackedRequest *req) -{ - if (bdrv_write_threshold_is_set(bs)) { - if (req->offset > bs->write_threshold_offset) { - return (req->offset - bs->write_threshold_offset) + req->bytes; - } - if ((req->offset + req->bytes) > bs->write_threshold_offset) { - return (req->offset + req->bytes) - bs->write_threshold_offset; - } - } - return 0; -} - -static int coroutine_fn before_write_notify(NotifierWithReturn *notifier, - void *opaque) -{ - BdrvTrackedRequest *req = opaque; - BlockDriverState *bs = req->bs; - uint64_t amount = 0; - - amount = bdrv_write_threshold_exceeded(bs, req); - if (amount > 0) { - qapi_event_send_block_write_threshold( - bs->node_name, - amount, - bs->write_threshold_offset, - &error_abort); - - /* autodisable to avoid flooding the monitor */ - write_threshold_disable(bs); - } - - return 0; /* should always let other notifiers run */ -} - -static void write_threshold_register_notifier(BlockDriverState *bs) -{ - bs->write_threshold_notifier.notify = before_write_notify; - notifier_with_return_list_add(&bs->before_write_notifiers, - &bs->write_threshold_notifier); -} - -static void write_threshold_update(BlockDriverState *bs, - int64_t threshold_bytes) -{ - bs->write_threshold_offset = threshold_bytes; -} - -void bdrv_write_threshold_set(BlockDriverState *bs, uint64_t threshold_bytes) -{ - if (bdrv_write_threshold_is_set(bs)) { - if (threshold_bytes > 0) { - write_threshold_update(bs, threshold_bytes); - } else { - write_threshold_disable(bs); - } - } else { - if (threshold_bytes > 0) { - /* avoid multiple registration */ - write_threshold_register_notifier(bs); - write_threshold_update(bs, threshold_bytes); - } - /* discard bogus disable request */ - } -} - -void qmp_block_set_write_threshold(const char *node_name, - uint64_t threshold_bytes, - Error **errp) -{ - BlockDriverState *bs; - AioContext *aio_context; - - bs = bdrv_find_node(node_name); - if (!bs) { - error_setg(errp, "Device '%s' not found", node_name); - return; - } - - aio_context = bdrv_get_aio_context(bs); - aio_context_acquire(aio_context); - - bdrv_write_threshold_set(bs, threshold_bytes); - - aio_context_release(aio_context); -} -- cgit 1.2.3-korg