Hello aoetools-discuss, Hi again, sending more 'clean' diff with RX ring, buffering, and something more (details below)... Also refactored code (including existing... a bit :), moved config defines to config.h, added some documentation into readme, config.h and usage text (BTW also added usage hint for existing command line switches). Also added image file locking when its opened for write access to avoid accident launching of 2 copies of vblade for same file that can corrupt data (remember write buffering). Also since I found and read 'hacking' - this time I created diff with -uprN option:) Details about 'something more' - there was another email thread where I worried about data integrity vs hw duplicated packets. I implemented experimental tags tracking functionality that can be used _only_ if initiator uses Aoehdr::tag field as monotonically incrementing little ending counter per each unique ATA command. If it doesn't do so - this functionality shouldn't be used and thats why its disabled by default but can be enabled by -t and -T command line switches: -T - enables tracking of last 32768 tags (ring sliding window used), If write command with same mac-mask/tag appears as it was before - vblade will blindly reply without any processing at all. So using this option with initiator that doesn't comply above Aoehdr::tag field behaviour is extremely dangerous. WinAoE 0.97g is good for that - I checked its source code. Others may not. -t - called 'RX tags tracking' - this is more performance than integrity improvement and it safe in term of integrity, It uses benefits of RX memmaped ringbuffer receiving (and works only when compiled with its support). Since during bulk x-fer kernel puts so many packets into ring buffer as it can fit there - so instead of dealing with each single packet one-by-one its now possible to loop over all present packets in buffer and eliminate duplicates that often present there due to initiator re-transmits identical packets from time to time after some timeout waiting for reply. So if any dublicate found (by comparing mac-mask/tag) - it silently dropped. Thats why this is safe - if this code will drop something important - initiator will re-transmit it after some time, so most worst thing can happen if used -t option is incorrect initiator - performance may degrade. But if this option will be used with 'right' initiator - CPU and network load will lower, since most reduntant packets will not be processed and replied anymore. I tested this changes by running coping process of ~200GB up and down and checked that resulted files are binary identical. Sure its much far from production-safe but seems its good for testing. Also most of above description briefely included into README together with a proposed solution what to do to identify correct initiator if developers will decide to use this one day. -- Best regards, Killer{R} mailto:support@xxxxxxxxxxxx
<<attachment: vblade_rxring_tagstrack_writebuf.zip>>
------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs
_______________________________________________ Aoetools-discuss mailing list Aoetools-discuss@xxxxxxxxxxxxxxxxxxxxx https://lists.sourceforge.net/lists/listinfo/aoetools-discuss