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

Re: [Xen-devel] [PATCH] Re: Another blktap2-ish shutdown crash

On Mon, 2010-06-07 at 09:43 -0400, Jan Beulich wrote:
> >>> On 07.06.10 at 13:12, Daniel Stodden <daniel.stodden@xxxxxxxxxx> wrote:
> > On Mon, 2010-06-07 at 03:29 -0400, Jan Beulich wrote:
> >> >>> On 03.06.10 at 03:50, Daniel Stodden <daniel.stodden@xxxxxxxxxx> wrote:
> >> 
> >> Why would you want blk_start_request() only after the blk_fs_request()
> >> check, but not after the blk_barrier_rq() one?
> > 
> > Huh? But cases did get the blk_start_request call (?!)
> 
> I have to admit that I don't understand your response at all.

".. both ..", sorrry :)

> Assuming that you think my original question was rubbish, this is
> the original (before your patch) code I look at
> 
>       while ((req = blk_peek_request(rq)) != NULL) {
>               if (!blk_fs_request(req)) {
>                       blk_end_request(req, -EIO, 0);
>                       continue;
>               }
> 
>               if (blk_barrier_rq(req)) {
>                       blk_end_request(req, -EIO, 0);
>                       continue;
>               }
> ...
>               blk_start_request(req);
> ...
> 
> Your patch inserts a call to blk_start_request() into the
> first if clause's body, and I was asking why the second
> one's wouldn't also need such a call.
> 
> Sorry if I'm being dense - I'll appreciate any enlightenment.

This is the relevant hunk from 

http://git.kernel.org/?p=linux/kernel/git/jeremy/xen.git;a=blobdiff;f=drivers/xen/blktap/device.c;h=8650f028485a6ac10bcb89ebfeaa5756ff2204e6;hp=a50b622ef018c0db88f0d491ce389768c570a4bc;hb=b34e5649ea3fc0f70f87e104c9b08a0dc013b6bb;hpb=4b647759e9f4afd46c23e26e54241a9dfa7d8f4b
  

        while ((req = blk_peek_request(rq)) != NULL) {
                if (!blk_fs_request(req)) {
+                       blk_start_request(req);
                        __blk_end_request_cur(req, 0);
                        continue;
                }
 
                if (blk_barrier_rq(req)) {
+                       blk_start_request(req);
                        __blk_end_request_cur(req, 0);
                        continue;
                }

Looks correct to me. What are you looking at?

Cheers,
Daniel



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

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