Thread (43 messages) 43 messages, 6 authors, 2009-03-30

Re: [PATCH 06/13] async_tx: add support for asynchronous GF multiplication

From: Ilya Yanok <hidden>
Date: 2009-03-21 20:05:28
Also in: lkml

Hi H.Peter,

H. Peter Anvin wrote:
quoted
+ * @scfs: array of source coefficients used in GF-multiplication
    
Array of source coefficients?  Are you doing a vector-vector
multiplication here?

Given this code:

  
quoted
	for (d = 0; d < len; d++) {
+		wq = wp = ptrs[0][d];
+		for (z = 1; z < src_cnt; z++) {
+			wd = ptrs[z][d];
+			wp ^= wd;
+			wq ^= raid6_gfmul[scfs[z]][wd];
+		}
    
... it kinds of looks like that.

This is really quite expensive!  The whole point of the restore code
that exists is that we never do a two-dimensional lookup, instead
caching a pointer to the multiplication table that we intend to use,
because the RAID-6 code only ever contains scalar-vector multiplications.

I really don't get this, and I think it's broken.
  
Well, that code IS broken. Dan, I think you over-optimized this part.
Have you ever tested this code path? Besides of doing two-dimensional
lookup at every step it ignores scfs[0] completely so if it's not equal
to one the result is wrong.

Regards, Ilya.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help