diff options
author | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2011-05-09 16:45:40 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-05-18 14:38:46 +0200 |
commit | 6f321e93abb27b4e7ceb228b4204aa304e95daad (patch) | |
tree | 91a670fd257f3c412aeca38156112dc557491ce9 /trace-events | |
parent | 5fc09ca5c315b87539db882fba175a7955783530 (diff) | |
download | qemu-6f321e93abb27b4e7ceb228b4204aa304e95daad.zip qemu-6f321e93abb27b4e7ceb228b4204aa304e95daad.tar.gz qemu-6f321e93abb27b4e7ceb228b4204aa304e95daad.tar.bz2 |
qed: Periodically flush and clear need check bit
One strategy to limit the startup delay of consistency check when
opening image files is to ensure that the file is marked dirty for as
little time as possible.
QED currently marks the image dirty when the first allocating write
request is issued and clears the dirty bit again when the image is
cleanly closed. In practice that means the image is marked dirty for
most of a guest's lifetime and prone to being in a dirty state upon
crash or power failure.
It is safe to clear the dirty bit after all allocating write requests
have completed and a flush has been performed. This patch adds a timer
after the last allocating write request completes. When the timer fires
it will flush and then clear the dirty bit. The timer is set to 5
seconds and is cancelled upon arrival of a new allocating write request.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'trace-events')
-rw-r--r-- | trace-events | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/trace-events b/trace-events index a00b63c..385cb00 100644 --- a/trace-events +++ b/trace-events @@ -220,6 +220,9 @@ disable qed_write_table(void *s, uint64_t offset, void *table, unsigned int inde disable qed_write_table_cb(void *s, void *table, int flush, int ret) "s %p table %p flush %d ret %d" # block/qed.c +disable qed_need_check_timer_cb(void *s) "s %p" +disable qed_start_need_check_timer(void *s) "s %p" +disable qed_cancel_need_check_timer(void *s) "s %p" disable qed_aio_complete(void *s, void *acb, int ret) "s %p acb %p ret %d" disable qed_aio_setup(void *s, void *acb, int64_t sector_num, int nb_sectors, void *opaque, int is_write) "s %p acb %p sector_num %"PRId64" nb_sectors %d opaque %p is_write %d" disable qed_aio_next_io(void *s, void *acb, int ret, uint64_t cur_pos) "s %p acb %p ret %d cur_pos %"PRIu64"" |