WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] BUG in blkback? on bio generation

To: "xen-devel" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] BUG in blkback? on bio generation
From: "Y. D." <duyuyang@xxxxxxxxx>
Date: Thu, 25 Dec 2008 15:48:44 +0800
Delivery-date: Wed, 24 Dec 2008 23:49:28 -0800
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:from:to:subject :message-id:x-mailer:mime-version:content-type :content-transfer-encoding; bh=jmUi7EQquPF+27UvJvpPFMWxJAIVc7uR5RQrsLCxuro=; b=gBZPn00lCv58N2Fj+3lnjXrQiFkZ+ltclUm6voSxMSHRJf575vkx2qcV0a041LbCsV wn+prgb6rrAMsxbs+OL3nvFwCArPIUy18gNBfP6B8SrA2c8EOA6eOFDQzt6XO9lEfHzV 6S6u5UJEYz7gjQpI1Z9oDiLNIfdH6cPi+N4U0=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:subject:message-id:x-mailer:mime-version:content-type :content-transfer-encoding; b=KrB2sVqb/kvbEwqAwnnNWkBK8UYBRPxAWjutZt3FnQGUuT1RqjXLmmI6vaGaGhBdXC y9iW895oLQevdnoUILrvw5cH9Lktah81oArdc+7LdzaJb2gOTpefH7yLvl7ayYDWpYgX UOEDIcxMOtl0B3nDzpKiUMDb+WfWZtzAR+lzc=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Hi,

Merry Christmas.

I am reading code in blkback.c, while I find that the bio generation might be 
really bad. 
The bio_add_page() returns length of added bio vector, so if it fails it 
returns 0.
Therefore, should not bio_add_page() be negated in the while() loop condition??

        for (i = 0; i < nseg; i++) {           
                if (((int)preq.sector_number|(int)seg[i].nsec) &
                    ((bdev_hardsect_size(preq.bdev) >> 9) - 1)) {
                        DPRINTK("Misaligned I/O request from domain %d",
                                blkif->domid);         
                        goto fail_put_bio;     
                }             

                while ((bio == NULL) ||           
          -------->(bio_add_page(bio,                           
                                     virt_to_page(vaddr(pending_req, i)),
                                     seg[i].nsec << 9,              
                                     seg[i].buf & ~PAGE_MASK) == 0)) {
                        bio = biolist[nbio++] = bio_alloc(GFP_KERNEL, nseg-i);
                        if (unlikely(bio == NULL))             
                                goto fail_put_bio;                              
                                                                               

                        bio->bi_bdev    = preq.bdev;   
                        bio->bi_private = pending_req; 
                        bio->bi_end_io  = end_block_io_op;
                        bio->bi_sector  = preq.sector_number;                   
                                                                               
                }             

                preq.sector_number += seg[i].nsec;
        }

Cheers,
Shawn


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>