18.05.2010 22:38, Michael Tokarev пишет:
18.05.2010 22:09, Avi Kivity wrote:
On 05/18/2010 09:03 PM, Michael Tokarev wrote:
18.05.2010 21:38, Avi Kivity wrote:
[Qemu-devel] [PATCH +stable] block: don't attempt to merge overlapping
requests
quick tests shows it works correctly so far.
At least it went further than before, not
stopping at the "usual" sector 3145727872.
Hmm. Ide has no queue, hence no mergeing,
that's why it does not occur with ide,
right? :)
[]
Yes. Why would Linux post overlapping requests? makes
0xffffffff00000000
sense.
[]
Note also that it's not as on the original bugreport -
there, the sector# is apparently different:
http://sourceforge.net/tracker/?func=detail&aid=2933400&group_id=180599&atid=893831
I don't think it's related to a particular sector number.
I added a debug printf into the place that is touched
by the patch mentioned above, to print the case where
the request were merged before that patch but not any
more with it applied:
if (reqs[i].sector == oldreq_last) {
merge = 1;
}
else if (reqs[i].sector < oldreq_last)
fprintf(stderr, "NOT mergeing:\n"
" reqs[i].sector=%Ld oldreq_last=%Ld\n"
" reqs[outidx].sector=%Ld reqs[outidx].nb_sectors=%d\n"
, reqs[i].sector, oldreq_last,
reqs[outidx].sector, reqs[outidx].nb_sectors);
In a few runs it showed different info (and I modified the
printf line 2 times too):
NOT mergeing: reqs[i].sector=92306456 oldreq_last=3145728000
NOT mergeing:
reqs[i].sector=92322056 oldreq_last=3145728000
reqs[outidx].sector=3145727872
NOT mergeing:
reqs[i].sector=0 oldreq_last=3145728000
reqs[outidx].sector=3145727872 reqs[outidx].nb_sectors=128
NOT mergeing:
reqs[i].sector=0 oldreq_last=3145728000
reqs[outidx].sector=3145727872 reqs[outidx].nb_sectors=128
NOT mergeing:
reqs[i].sector=92308152 oldreq_last=3145728000
reqs[outidx].sector=3145727872 reqs[outidx].nb_sectors=128
NOT mergeing:
reqs[i].sector=0 oldreq_last=3145728000
reqs[outidx].sector=3145727872 reqs[outidx].nb_sectors=128
So it's definitely timing-related somehow (esp. it changes
when interrupting mkfs and immediately starting again), and
shows different values, but for me it's - apparently - always
reqs[outidx].sector=3145727872 together with some other sector.
And once I hit "Send" it showed another:
NOT mergeing:
reqs[i].sector=760 oldreq_last=3141599488
reqs[outidx].sector=3141597896 reqs[outidx].nb_sectors=1592
so it's not the case here ;)
/mjt
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html