qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] block/iscsi: precache the allocation status of


From: Peter Lieven
Subject: Re: [Qemu-devel] [PATCH] block/iscsi: precache the allocation status of a target
Date: Thu, 7 Jul 2016 13:40:26 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0

Am 30.06.2016 um 17:59 schrieb Paolo Bonzini:

On 30/06/2016 13:08, Peter Lieven wrote:
this fills up the allocationmap at iscsi_open. This helps
to reduce the number of get_block_status requests during runtime
significantly.

Signed-off-by: Peter Lieven <address@hidden>
---
  block/iscsi.c | 16 ++++++++++++++++
  1 file changed, 16 insertions(+)

diff --git a/block/iscsi.c b/block/iscsi.c
index 0cdcedb..04fb0a3 100644
--- a/block/iscsi.c
+++ b/block/iscsi.c
@@ -1774,6 +1774,22 @@ static int iscsi_open(BlockDriverState *bs, QDict 
*options, int flags,
                                       iscsilun->block_size) >> 
BDRV_SECTOR_BITS;
          if (iscsilun->lbprz) {
              ret = iscsi_allocmap_init(iscsilun, bs->open_flags);
+            if (ret == 0) {
+                unsigned int max_reqs = 64;
+                int64_t sector_num = 0;
+                while (max_reqs-- && sector_num < bs->total_sectors) {
+                    int n;
+                    BlockDriverState *file;
+                    ret = bdrv_get_block_status(bs, sector_num,
+                                                BDRV_REQUEST_MAX_SECTORS,
+                                                &n, &file);
+                    if (ret < 0) {
+                        break;
+                    }
+                    sector_num += n;
+                    ret = 0;
+                }
+            }
          }
      }
This can take a long time and the disks may not even be ever used.  I
don't think it's a good idea.

Sure, the target might stay unused, but why do you suspect its slow?

Peter




reply via email to

[Prev in Thread] Current Thread [Next in Thread]