Showing posts from July, 2011

NexentaStor 3.1 available now

After a lon g, and arduous, release cycle, I am pleased to report that NexentaStor 3.1 is available now . Customers running existing 3.0 installations may upgrade at no cost. This release includes a number of key features, including some significant improvements for performance and manageability. Folks using SCSI target mode will probably see the biggest performance boost relative to earlier editions of NexentaStor, especially those folks using NexentaStor to serve up storage to VMware guests -- thanks to the VAAI offload support that is part of this release. And for the record, yes, this release includes the fix the long standing problem with iSCSI timeouts. For ZFS fans, this release also includes the updates for ZFS version 28. (This does mean that folks upgrading need to be cautious -- their pools will not be automatically updated to ZFS version 28, but if they are manually updated then there will be no way to move those pools back to an older release. That also means that poo

Bombproof taskqs

As part of fixing some recent bugs, I integrated the following into illumos : 734 taskq_dispatch_prealloc() desired 943 zio_interrupt ends up calling taskq_dispatch with TQ_SLEEP The interesting one is the first of these. The interface is actually called taskq_dispatch_ent (), and is private to the "consolidation" (i.e. for use within bundled code only). What this interface provides for, however, is a way to bomb-proof your taskq dispatches, if you can arrange for the dispatching state structure ( taskq_ent_t ) to be allocated in advance. This means you never have to worry about the possibility of a dispatch failing due to insufficient resources. What's even cooler, is that the cost of the dispatching is much cheaper; taskq_dispatch () was the hottest piece of code on a very busy storage server. Now it goes much much faster, because it is just twiddling some linked list pointers and sending a signal to wake up the thread processing the taskq. More impor