Re: [PATCH v2 08/11] async_tx: add support for asynchronous GF multiplication

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2009/5/29 Sosnowski, Maciej <maciej.sosnowski@xxxxxxxxx>:
> Dan Williams wrote:
>> +               /* Since we have clobbered the src_list we are committed
>> +                * to doing this asynchronously.  Drivers force forward
>> +                * progress in case they can not provide a descriptor
>> +                */
>> +               for (;;) {
>> +                       tx = dma->device_prep_dma_pq(chan, dma_dest,
>> +                                                    &dma_src[src_off],
>> +                                                    pq_src_cnt,
>> +                                                    &coefs[src_off], len,
>> +                                                    dma_flags);
>> +                       if (likely(tx))
>> +                               break;
>> +                       async_tx_quiesce(&submit->depend_tx);
>> +                       dma_async_issue_pending(chan);
>> +               }
>
> How about adding a timeout to the loop in case we do not get a descriptor at all for some reason?
>

There is an embedded timeout in async_tx_quiesce().  However, now that
we have the ->scribble pointer a future patch could make it a
requirement of the api.  With that in place we would always be able to
fall back to the synchronous at any point because the input parameters
would be preserved.

Thanks,
Dan
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux