Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753570AbZCUUF2 (ORCPT ); Sat, 21 Mar 2009 16:05:28 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753622AbZCUUFJ (ORCPT ); Sat, 21 Mar 2009 16:05:09 -0400 Received: from ocean.emcraft.com ([213.221.7.182]:39493 "EHLO ocean.emcraft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752144AbZCUUFI (ORCPT ); Sat, 21 Mar 2009 16:05:08 -0400 Message-ID: <49C5486D.9020103@emcraft.com> Date: Sat, 21 Mar 2009 23:05:01 +0300 From: Ilya Yanok User-Agent: Mozilla-Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: "H. Peter Anvin" CC: Dan Williams , linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, neilb@suse.de, maciej.sosnowski@intel.com, Yuri Tikhonov Subject: Re: [PATCH 06/13] async_tx: add support for asynchronous GF multiplication References: <20090318191248.20375.40560.stgit@dwillia2-linux.ch.intel.com> <20090318192046.20375.89854.stgit@dwillia2-linux.ch.intel.com> <49C26D91.10804@intel.com> In-Reply-To: <49C26D91.10804@intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1308 Lines: 42 Hi H.Peter, H. Peter Anvin wrote: >> + * @scfs: array of source coefficients used in GF-multiplication >> > > Array of source coefficients? Are you doing a vector-vector > multiplication here? > > Given this code: > > >> 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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/