StableBit DrivePool =================== Info ==== [D] = Driver was modified (reboot required after update) Confirmed Issues ================ * The GData antivirus add-in crashes the Dashboard when DrivePool is installed. Please contact GData, they do have a fix for this. Not Supported ============= * Shadow copies are not supported on the pool. RELEASE ======= 1.3.6.7585 ---------- * Release final. * [D] [Issue #5223] Fixed renaming file / folder to the same name but with a different case. RC == 1.3.6.7582 ---------- * Release candidate BETA ==== * [Issue #114] When the System Volume Information folder doesn't have the inherit flag set on the SYSTEM permission, drive removal would error out with "Access denied". * [D] Fixed a real-time file size tracking inconsistency that would cause the pooled file size to drift upwards when files were overwritten (FILE_SUPERSEDE, FILE_OVERWRITE, FILE_OVERWRITE_IF). Existing pools will be re-measured automatically. * [D] Fixed creation of empty "PoolPart..." files on drive removal (harmless but annoying). * [D] Fixed a crash when a new file is created and a measuring pass just started, before the first directory is enumerated. * [D] [Issue #2157] Fixed exception handler in MDL creation function. * [D] [Issue #101] The context of a byte range lock request is not always the current thread. * [D] [Issue #101] FileObject->LockOperation seems to be inconsistent, switched to internal flag. * [D] [Issue #101] Byte range locks were not being released immediately on file close. Oddly, this is exactly the expected behavior according to MSDN (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365715): "If a process terminates with a portion of a file locked or closes a file that has outstanding locks, the locks are unlocked by the operating system. However, the time it takes for the operating system to unlock these locks depends upon available system resources." Unfortunately this was creating a number of issues. * [Issue #70] Fixed non-critical disk metadata synchronization issue (with StableBit Scanner). * [Issue #34] Added additional exception handler around file size change tracking. * [Issue #34] Recognize pool part paths in this format: PoolPart.{NNNNNNNN-NNNN-NNNN-NNNN-NNNNNNNNNNNN}. Previously "Not a pool part path" error would be thrown. * Turned off the reader / writer lock slim in factor of a monitor in the Store. There seems to be a bug in .NET that is causing a rare lockup. * Update pool part directory full name when an existing pool part is detected. RELEASE ======= 1.3.5.7572 ---------- * Do not allow folder duplication changes on the entire pool. This is not supported until 2.0. RC == 1.3.5.7571 ---------- * Only allow installation of add-in on Windows version 6.1. * Clicking "Re-index" from any tab will now consistently show you an informative error message if the Windows Search service is disabled. * Changed how DrivePool detects server backup disks in the "Pool" tab list. It now uses the WSS API to monitor when server backup disks are added / removed instead of looking for a special backup folder on each disk. This is more accurate. * Fixed the entire pie chart disappearing when a slice was too small (for all pie charts). * Got rid of the "BETA Expires" text in DrivePool settings. This is no longer applicable. * The "Folders" sub-tab under the StableBit DrivePool tab (separate UI) was not being updated with the correct data if it was started before the DrivePool service was running. * The "Pooled" and "Duplicated" column in Server Folders and Hard Drives was not being refreshed properly as the DrivePool service was started / stopped. * Ignore disk updates from disks that have no media. This was causing the service and UI to refresh too often. Observed this with a DELL USB flash card reader. (port from 2.X) * Added retry logic for disk enumeration. * [D] Fixed race condition causing a system crash. Release ======= 1.3.4.7565 ---------- * Avast was incorrectly flagging the installer as a virus. Rebuilt the installer. 1.3.3.7563 ---------- * [D] When setting a duplication count, always write through the number to disk before considering the set successful (i.e. bypass the cache). * [D] Changed how pools are enumerated at boot time to get rid of the 1 second delay between when the virtual disk driver is loaded and when it spawns its disks. * Put error handler around background duplication size change reporting. * [D] Fixed drive removal issue where volume manager would not let DrivePool read the pool part ignore tag due to the pool part being marked for deletion. This would cause a removed disk to remain in the pool until a reboot. RC == 1.3.3.7558 ---------- * Re-enabled file ID support by default. RELEASE ======= 1.3.2.7556 ---------- * Made the error message more clear when re-indexing is not working due to the Windows Search service being disabled. * Added FolderSizes_Disable to disable folder size queries in the Dashboard for slower servers. Folder sizes are only queried while the Dashboard is open. * [D] Fixed crash when removing the last disk in the pool. * [D] Fixed rare crash in pool part find files, as reported. RC == 1.3.2.7553 ---------- * Fixed folders not showing up in the StableBit DrivePool overview tab due to inconsistent shared folder registry keys. 1.3.2.7551 ---------- * [D] Fixed "Reached the end of file" error when enabling duplication on a folder that was previously duplicated, then was moved off of the pool and then moved back onto the pool (and so is no longer duplicated). 1.3.2.7550 ---------- * Release candidate BETA ==== 1.3.2.7548 ---------- * [D] Fixed system crash after the last drive was removed from a pool. * After a drive was removed, the size statistics might be reported for the wrong pool. 1.3.2.7547 ---------- * Fixed sporadic error when DrivePool_VerifyAfterCopy was enabled (disabled by default). Files were failing verification, even when they were identical. Some files were not getting re-balanced as a result. 1.3.2.7545 ---------- * [D] Enabled File ID support by default. This enables compatibility with the NFS Server, and has a memory usage and performance impact. The file system only consumes extra resources if there is a service that is actively querying it for file IDs. (Controlled by CoveFs_OpenByFileId) * [D] File IDs are now recycled when a file is deleted or renamed. * [D] Fixed MDL based Fast I/O calls (used by NFS Server). * Duplicated files that were not yet duplicated were not being selected for re-balancing. RELEASE ======= 1.3.1.7541 ---------- * [D] Fixed IOCTL pass-through. Was not working correctly with disk filter drivers on our storage stack (port from 2.X). * [D] Added explicit driver date / version to CoveFS disk driver (port from 2.X). BETA ==== 1.3.1.7539 ---------- * [D] Added additional protection against special stream tag overwriting. * Added robust support for file IDs (disabled by default). * [D] Fixed inconsistent disk kernel path causing spontaneous missing disk warning. (observed on iSCSI drobo) (port from 2.X) RELEASE ======= 1.3.0.7534 ---------- * Release final. * Summary of what's new since the last Release final: - Multiple pool support. Create as many pools as you want. - Disk identification for missing disks. - Ping all connected disks in the system for one minute, which lights up the disk access lights on all connected disks, letting you visually identify which disk is missing. - Model, Serial number now reported for disks part of the pool and missing disks. - Case / bay now reported for missing disks, if configured in the StableBit Scanner. - StableBit Scanner's disk health is now reported on the pool tab for disks part of the pool. - An option to force removal of damaged disks from the pool, even when we can't read some un-duplicated files on that disk. - Dashboard improvements in memory / CPU usage and UI redrawing frequency. BETA ==== * [D] Fixed CoveFS update reboot reminder not showing up sometimes. * Fixed folder / drive detail panes not showing up sometimes. * Optimized the Windows Search query algorithm to get folder statistics quicker, for folders with a huge number of files. * Offloaded the non-pooled total folder size Windows Search query onto the background value provider. It was generally very fast, but sometimes not instant, which was causing a slight delay in the UI. * Added background computation and caching value providers. Implemented folder pie chart computation using the new value providers. A folder pie chart computation expires every 5 minutes. * Finalized all translations. * Optimized WPF animations for terminal services. May reduce Dashboard CPU usage by a factor of 10 on low-end systems, when showing animations. * Optimized animations to reduce unnecessary WPF rendering cycles. * COM continues to pump paint messages on the UI thread when it's waiting on a lock. This was a change introduced in Vista to minimize deadlocks. This causes a deadlock if a paint message results in the acquisition of the same lock, on the same thread, which is very possible. This is now turned off to prevent random Dashboard freezes. 1.3.0.7470 ---------- * Added a new option to the remove drive from pool wizard that will force drive removal even if we can't migrate some files off of that drive. This is useful when removing damaged disks from the pool, where some unduplicated pooled files are unreadable. * Added a new advanced option 'DrivePool_VerifyAfterCopy'. This will perform a SHA1 verification after every file move / copy that DrivePool does in the background (e.g. drive removal, re-balance, background duplication). * When drive removal failed, it was reported as a success, but was not actually removed from the pool. * [D] Fixed rare system crash after boot (port from 1.2.5.7232). 1.3.0.7415 ---------- * Fixed extra metadata generation by disk identification (port from 2.0). * [D] Driver prohibition (port from 2.0). * The size of Client Computer Backups may not have been reported on the DrivePool tab. * Added a new setting called RunningFile_FileName. When set, DrivePool will create a file at this path whenever running background tasks. 1.3.0.7388 ---------- * Added an optimization layer to BaseDataInfo that checks whether value and string type properties have actually changed before firing off an expensive UI update. * [D] Fixed driver installation issue where on a non-upgrade install (initial install), an already existing older driver would not get overwritten with a newer one, or vice versa. * Fixed adding RAW disks to the pool. * Rewrote drive removal process (port from 2.0). * [D] Fixed pool part refresh deadlock (port from 2.0). * Folder sizes are now kept track of (using Windows Search) by the service, freeing up Dashboard resources. * Duplication progress will now reflect the actual folder being scanned (not the last one). * Fixed duplication progress not being reported properly. * Pool tab will now update more efficiently. * [D] Never allow the same pool part to be recognized twice, even if they are what appears to be on separate volumes. * Numerous fixes to the Omni-Store, which is responsible for all UI updates and application state metadata management. 1.3.0.7336 ---------- * [D] Fixed file system duplication count cache for multiple pools (ported back from 2.0). * [D] Fixed constant Pool tab refreshes on some pools. * When adding unformatted drives to the pool, DrivePool would always create a new pool. Now fixed. 1.3.0.7319 ---------- * Added pool selection dialog, when multiple pools are present and user clicks 'Add a folder to the pool'. * Added a "Identify disk" task for missing disk where all the known identification data is shown for that missing disk. We also have an option to "Ping" all the connected disks for one minute in order to help you identify the missing disk by looking at the disk access lights. * StableBit Scanner disk health will now be reported on the Pool tab for disks part of the pool when the Scanner is installed (Scanner 1.2+), including missing disks. * Added a disk identification module. DrivePool will now show the model / serial number for drives that are part of the pool or are missing (when available). When the StableBit Scanner (2.3.0.2841+) is installed, the model / serial number is retrieved from the Scanner instead of Windows for added accuracy. In addition, the 'Case' and 'Bay' as specified in the Scanner are also reported. 1.3.0.7252 ---------- * File evacuation is now more persistent. Added new .config option FileBalance_EvacuationPadding. * Fixed some memory leaks in the Dashboard. * Show the pool statistics for the correct pool after removing a missing disk. * [D] Merged changes from 1.2.2 to 1.2.4. 1.3.0.7229 ---------- * [D] Key areas of virtual disks can be written to by the OS in order to allow it to update virtual on-disk structures, for example to resolve signature collisions. * [D] New pools will be GPT disks (not MBR) in order to avoid possibility of signature collisions. Legacy pool will continue to be MBR disk. * Extended the UI to support multiple pools (too many changes to list individually). * Updated the service to support multiple pools (too many changes to list individually). * [D] Added multiple pool support (too many changes to list individually). RELEASE ======= 1.2.6.7245 ---------- * Version 1.2.5.7232 was packed incorrectly with an older build (7229). 1.2.5.7232 ---------- * [D] Fixed rare system crash after boot. * [D] Do not purge cache unnecessarily. 1.2.4.7226 ---------- * [D] Measuring the pool would crash the system on pools with extremely deep directory structures. 1.2.3.7217 ---------- * Perform validation logic for drive removal before doing any work. * When file conflict duplication warnings are present, never duplicate automatically giving the user the chance to deal with them. * For re-measuring, show the current estimated progress in the pool condition bar. * For background duplication, show the folder that's currently being checked / duplicated and an estimated completion percentage in the pool condition bar. * Localized built-in balancing plug-in names / descriptions. * [D] When opening / creating files, for low priority threads (<= 7), we perform a non-parallelized low priority open in order to conserve system resources. * [D] Added option to lower the priority of background duplication, calculate ratio, re-balance and re-measure (DrivePool_BackgroundTasksVeryLowPriority). * Fixed settings incompatibility when downgrading from 1.3 -> 1.2. * Files with sizes of exactly 1 KB, MB, GB or PB would never be selected for re-balancing. * File size selection for re-balancing could be off by one byte. * When re-balancing, file size measurements would drift by a few bytes for each file moved. 1.2.2.7145 ---------- * [D] When CoveFs_ReportAsNtfs was enabled, the pool would lock up. 1.2.1.7140 ---------- * Final release build. * Major new items since last release (1.1.0): - A flexible balancing framework. - Fine grained balancing settings. - Layered plug-in based balancing algorithms with user customizable settings. - 3rd party balancing plug-in support. Anyone can write a new balancing plug-in. - Integration with Scanner 2.2+ allowing for file evacuation and temperature control. - Use your SSD as a landing zone for new files on the pool with our 'Archive Optimizer' plug-in. - A completely rewritten real-time file size tracking system. It's faster and more accurate. - Various drive removal improvements. * Balance ratio recalculation is now based on the number of bytes changed on the pool. * Drive removal was unnecessarily leaving behind some duplicated files on the drive that was removed. BETA ==== 1.2.1.7135 ---------- * [D] Fixed access denied error on drive removal. 1.2.1.7133 ---------- * [D] Enabled all compiler optimizations in preparation for final release . * When removing a drive from the pool, the pool is put into full read-only mode. Previously, only duplicated folders were read only. There are 2 reasons for this: - Because the files that are being migrated will not be visible on the pool while they're on the disk that's being removed, any application that expects to see a set of interdependent files will only see a subset of them (E.g. The Windows Client Computer Backup service). We want to prevent such applications from making any changes to any files until the removal process completes and the full set of files is restored. - If a file with the exact same name as a file that is being migrated from a disk that's being removed is created on the pool, DrivePool will detect this and will NOT overwrite it. This was always the behavior but at the same time it will leave the un-migrated file on the disk that you're removing. This can be confusing for the user because a number of files can be left behind after a disk is removed from the pool. If you understand these issues and would still like to enable the old behavior of allowing write access while removing a disk, you can do so by turning off the new RemoveDrive_PoolReadOnly option in the .config. * [D] Fixed issue where even if the pool was in read-only mode 0 byte files would be allowed to be created under specific conditions. * Finalized translations for 1.2.1. * Added balancing settings and re-measure to the pool tab (when pool drive is selected). * Fixed Dashboard crash due to Windows Search error. * [D] Got rid of a small bit of code that ran when a pool part arrived, it wasn't doing anything useful. 1.2.1.7123 ---------- * Folder duplication changes will now only perform a background duplication pass over that folder instead or the entire pool (in most cases). * Retired DrivePool's folder size tracking. Folder sizes are now all reported using Windows Search. Folder sizes are not used by DrivePool for anything internally, they are only reported to the user. * [D] Implemented a 100% kernel mode file size tracking solution. It's even faster than the old one and is directly synchronized with the file system. - Full pool access even while re-measuring. Size modifications are kept track of. - Keeps track of file size changes directly in the kernel with no user mode services involved. - Saves pool part file sizes in the pool parts themselves, so sizes will even migrate between OS re-installs. - Synchronized with background duplication (when changing the duplication level of a folder). - Synchronized with re-balancing. - Will need to re-measure the pool: - After removing a disk. - After accidentally unplugging a disk while the system is running. * [D] Retired hybrid kernel / user-mode real-time file size tracking. 1.2.0.6989 ---------- * Fixed error adding an unformatted but initialized MBR disk to the pool. DrivePool expected a GPT disk and was throwing an error. * [D] Fixed special tag directory cloning on disk removal. * [D] Fixed 'Access Denied' on disk removal when removing unduplicated but protected files. * Finalized translations. * Added extra safeguards to drive removal when deleting files from the drive being removed. 1.2.0.6962 ---------- * Added byte deltas to re-balance markers. * The StableBit Scanner balancer will now respect existing limits and use protected vs. unprotected limits when deciding how to best evacuate files. * Changed the drive emptying algorithm to not empty a drive beyond the point which was computed at the time of the balance model calculation. This caused unintentional drive overfill and perpetual balancing under some circumstances. * When removing a drive, DrivePool will scan for any local server processes / services that are using any files on that pool part and attempt to gracefully close them (or restart them, if supported). * [D] Added workaround for a bug in Windows. The bug seems to manifests itself only on domain controllers (such as the Windows Small Business Server 2011 Essentials). The user sees "Insufficient resources" error messages when copying files to / from the server. The error is actually coming from the server and not from DrivePool. Apparently, Windows inadvertently exhausts an internal pooled resource when sending network based read / write requests to the file system. This doesn't typically happen on NTFS because of the different timing semantics there (but it seems possible). CoveFS will now limit the number of "in-flight" requests in order to keep the overzealous Windows component from asking for more data than it can handle. (yes, this one took a bit of doing to figure out) * Added polish translation (Credit: Marek) * Drive removal would fail if a duplicated file was in-use with a non-descriptive error message. 1.2.0.6864 ---------- * Added the 'StableBit Scanner' built-in balancer. - Immediately evacuates files out of damaged drives. - Immediately evacuates files out of drives with SMART warnings. - Provides temperature control by controlling new file placement. * Made immediate balancing / throttling more consistent. * In the balancing framework, changed meaning of BalanceNow to force a re-calculation not a full balance pass. * In the balancing framework, added new move option "MoveNow" that will suggest to the system to re-balance immediately. 1.2.0.6817 ---------- * Enabled 3rd party balancing plug-in support. To write your own plug-in see: http://wiki.covecube.com/StableBit_DrivePool_-_Develop_Balancing_Plugins * Pool size chart vanished when pool had < 1KB of data. * Balance ratio will not decrease unless pool has > 1MB. * [D] Fixed real-time file size tracking issues related to multiple handles (will re-measure on upgrade). * Added Settings tab to the balancing settings window. - Control when automatic balancing happens. - Control automatic balancing triggers. - Allow 3rd party balancers to start an immediate balancing pass at any time. 1.2.0.6716 ---------- * Do not shift the balancing markers around on the UI, while balancing. * Fixed excessive re-measuring on reboot. * Added a new balancer type for equalizing disk space usage on volumes that are located on the same physical disk. * File mover is now capable of re-balancing individual pool parts on the same storage unit. * Implemented pool part equalization calls into balancer framework. * Fixed Duplication Space Optimizer / Duplication Obstruction balancer formula. Was moving too much data. * Fixed perpetual balancing when pool has files with sizes < 128 B. * Re-enable background I/O in new pool balancer. * Added limit markers on the DrivePool -> Disks tab. Indicates real-time file placement limits. * Do not allow balancers to request a duplicated file move unless we have more than 2 storage units. * When requesting to move all files, attempt to move unprotected files first in order to satisfy the move quota, since this is simpler. * Updated the file mover to be more persistent when building the duplicated file move model. In particular, when emptying a storage unit completely. 1.2.0.6659 ---------- * Added visual markers on the DrivePool -> Disks tab to indicate where the balancer wants to attempt to reshuffle your files. * Added animated arrows on the DrivePool -> Disks tab that show what the balancer is doing in real-time. * [D] Fixed system crash under some rare conditions due to the timing of I/O operations. * [D] Upgraded the pool balancing system. - Now uses a layered system of balancers. - Each balancer is responsible for implementing its own balancing algorithm. - A combined balancing model is built by querying all the balancers, where the upper balancers have priority over the lower balancers. - Each balancer can: - Schedule file moves for protected and un-protected files, separately. - Set up real time file placement limits on any drive. - Two types of limits are supported, hard limits and soft limits. - There are 3 built-in balancers: - Duplication Space Optimizer - A perfectly accurate duplication space optimizer that figures out if there are any files blocking the optimal use of disk space for duplicated file placement. It only moves files when it is absolutely necessary. - Prevent Drive Overfill - If any drive becomes full, and there is disk space on other drives, move some of the files to the other drives. This balancer comes with a bunch of settings letting you set up the appropriate balancing limits. - File Placement Limiter (new) - Control where new files will be placed by the real-time file placement algorithm. This balancer comes with settings that let you choose which file types go onto which drives. The algorithm sets up a "soft limit" which will be broken if all of the drives in the system are "full". "Full" is defined in the settings pane and defaults to 90% full. - There is a simple API for building 3rd party balancers (exposed in DrivePool.Integration.dll - not enabled yet). - Each balancer can be enabled / disable or rearranged in the stack by the user. - A balancer can come with a WPF user control for any settings that have to be exposed to the user. - Each balancer stores its settings in a settings state object that is automatically serialized / de-serialized for the balancer by the system. RELEASE ======= 1.1.0.6326 ---------- * Final release build. * Major new items since last release (1.0.1): - Improved read striping algorithm. - Network I/O prioritization for smoother streaming video. - Fast drive removal (option) for setups with many duplicated folders. - Improved balancing algorithm which will actively keep drives from getting full. - Many CoveFS changes / fixes, including an overhauled buffering and an updated locking model. BETA ==== 1.0.2.6324 ---------- * Finalized translations. * Updated UI controls to latest. * Updated installer for compatibility with the next Scanner release. 1.0.2.6309 ---------- * [D] Got rid of short file name support. * After removing a missing disk (not reconnecting it), the pool would still remain in missing disk mode, disallowing write access to duplicated folders until a reboot. * Physical drive index was not being updated on reboot. Just a UI issue. * [D] Fixed crash on resource exhaustion in the directory listing code. It will now return the proper error code. This was extremely rare. 1.0.2.6298 ---------- * Fixed disk enumeration, where disks would not come out of a missing state or newly added disks would not immediately show up as being part of the pool. * [D] Do not fail when a file needs to be extended due to a file mapping object. * [D] Changes made to dirty pages in a mapped view (section), should be visible to non-mapped reads. In particular, this was breaking the SQL installer. 1.0.2.6291 ---------- * [D] System crash caused by MDL fix, fixed. * Fixed notifications. 1.0.2.6285 ---------- * [D] Handle MDLs sent down to the file system properly. MDLs are built by upper filter drivers to describe requests that are not coming directly from the original caller. The filters expect the file system to use the MDL instead of the user buffer. (e.g. this is sometimes done by anti-virus file system filters) * Turned off write network I/O priority boost. (CoveFs_BoostNetworkIoPriorityWrite in .config) 1.0.2.6278 ---------- * Sometimes VDS was being queried too often. * After removing a drive, sometimes a full duplication pass was scheduled. This is not necessary unless you specified to duplicate later in the remove wizard. * When DrivePool creates new partitions, it will now properly align them on sector / cylinder boundaries. This was a problem when formatting advanced format disks and was caused by a bug in one of the Windows APIs (IVdsPack::CreateVolume). * Added option to switch the unit type of the file distribution bars on the folder detail panel. 3 unit types: * By Bytes * By Disk Usage Percent * By Percent of Shared Files Not shown for folders stored on a single disk. 1.0.2.6257 ---------- * Added some extra safeguards against pool parts being listed twice in the Pool tab. * Offline volumes are now enumerated properly. They will not be listed in the Pool tab. * Pool tab was sometimes refreshing too often. Changed the timings on the pool tab refresh. 1.0.2.6234 ---------- * Do not lock Store while waiting for VDS to respond. Apparently, VDS locks up while performing server backup, halting all DrivePool UI activity. 1.0.2.6232 ---------- * Fixed Pool tab refreshing constantly. 1.0.2.6229 ---------- * Fixed settings / state getting reset on upgrading. * Added UI option for network I/O prioritization to the Disks DrivePool tab. After some testing, this option seems to be effective at minimizing stutter when streaming high bandwidth media directly from the server (such as BluRay). * Moved read striping option to the Disks DrivePool tab. * [D] Added a new read striping algorithm called "block mode" after conducting some testing with read striping. CoveFS will select the correct algorithm to use in real-time. Added a number of read striping options to .config: CoveFs_ReadStripingBlockMode CoveFs_ReadStripingStripeSize CoveFs_ReadStripingBlockModeNoCache * [D] Added performance measuring instrumentation into the driver. * Exposed CoveFS performance measurements, in real time, into the Dashboard. Hidden feature exposed by hitting 'P' on the DrivePool tab. * Added read striping and network I/O boost real-time visualizations to the DrivePool Disks tab. When these features are actively working, you will see how much pool I/O is being affected, in percentages. * Fixed installer service not starting on fresh install. * Fixed delayed action firing too often, affecting much of the application. Delayed actions are used in the service and Dashboard, not in the file system. 1.0.2.6132 ---------- * [D] Fixed Oplock / share access conflict. 1.0.2.6131 ---------- * [D] Added option to boost read I/O priority of network originated I/O requests over most other I/O. Off by default. (CoveFs_BoostNetworkIoPriority in .config) * [D] Corrected real-time file placement algorithm when using multiple partitions on the same physical disk. Sometimes, it would not select the partition with the most free space. Generally applies to disks > 2TB+. * [D] Updated locking model based on some reverse engineering of Windows internals. * [D] Fixed share access delegation between memory mapped file I/O and non-memory mapped file I/O. * [D] Prevent file truncation, when mapped sections exist and the truncation would overlap the memory mapped region. * [D] Virtual memory mapped section synchronization with on-disk data for writes. This issue was exposed by Microsoft Forefront Client Security which memory maps all files and expects that mapping to be in sync with the on-disk data. * Updated deployment to be in sync with Scanner. 1.0.2.6091 ---------- * Added a check into the driver installation routine to prevent multiple pool instances from being installed. * Added additional parameters and logic for drive fill balancing. These parameters will work better on larger drives. (FileBalance_DriveFillBytes, FileBalance_DriveFillBytesMin, FileBalance_DestinationDriveFillBytes - see .config). * German translation corrections submitted by Thilo Leise (http://www.zistolo.de/). * [D] Changed asynchronous infrastructure to use custom work queues. (See CoveFs_AsyncCriticalThreads and CoveFs_AsyncNormalThreads in .config) 1.0.2.6077 ---------- * [D] Pool parts are now refreshed using a custom work queue to prevent tying up system work queue threads. * [D] Added option to configure volume arrival delay (CoveFs_WaitForVolumesOnMountMs in .config). * [D] Added option to bypass volume arrival delay (CoveFs_WaitForVolumesOnMount in .config). * [D] Added directory write time synchronization for deletes and renames. 1.0.2.6069 ---------- * [D] Added directory write time synchronization, as a work queue job (CoveFs_SynchronizeDirectoryTimes in .config). * [D] Kernel work queue infrastructure. Ability to create custom thread pools to process queued work jobs in the background, in parallel with regular I/O. Work queue jobs do not block I/O. 1.0.2.6062 ---------- * Fixed rare service crash. * Fixed rare Dashboard crash. * Contacted G Data about fixing bug in their add-in. No timeframe was given. * Added quick removal option when removing drives from the pool. Quick removal leaves duplicated files the are on the drive being removed in an unduplicated state on the pool. After the drive is removed, files are then duplicated in the background. This speeds up removing drives containing duplicated files. When removing drives that contain only duplicated files, removal takes a few seconds. This option has no effect on drives containing only un-duplicated files. * [D] Fixed crash related to the timing of refreshing pool parts after more than one existing drives suddenly disconnect. 1.0.2.6037 ---------- * Added a new aspect to the balancing algorithm to actively prevent drive fill. This algorithm is not designed to balance constantly. It is designed to run once, only when one or more drives are > 90% full, and given the file distribution, only if it's possible to re-balance the existing pooled files to make more room on that drive. You will notice your pool condition ratio drop and an option to manually force a rebalance, if necessary, given these new rules. Automatic rebalancing takes place at night. You can enable / disable this aspect of file balancing and change the ratios in the .config. It is enabled by default. * [D] Converted CoveFS to use neither I/O buffering. Less overhead, faster, more compatible. RELEASE ======= 1.0.1.6008 ---------- * When setting duplication on a read-only folder, it used to error out with access denied. * Do not error out on in-use duplicated files / other expected error conditions when removing disks from the pool. 1.0.0.5974 ---------- * Added translations for Spanish, French and German. * [D] Tweaked timing between pool mount and pool part volume enumeration. This addresses disappearing shares on really fast booting servers (typically using SSDs). * Disable file system I/O tracing by default. * Stop keeping track of UI state in service, if no UI present for some time. * Smooth out internal disk updates. Do not query for disk information too often. BETA ==== 1.0.0.5933 ---------- * [D] Alt. stream memory leak plugged. 1.0.0.5932 ---------- * On startup, do a quick check of duplication tag consistency. If inconsistencies are found, fix them and re-check the pool for file duplication consistency. * [D] Fixed some issues with alternate streams. Could cause file duplication to not be enabled on a folder. 1.0.0.5905 ---------- * Added option to force a duplication consistency check (Pool tab). * Added code to safeguard against non-responsive (malfunctioning) devices. * [D] Added code to handle non-responsive (malfunctioning) devices. 1.0.0.5888 ---------- * Show folder pie chart for folders containing a '. * "Indexing" is no longer shown when indexing is paused. * Allow disk removal without a license. * Recalculate balance ratio right after adding a new drive to the pool. * Do not change the source / destination parent directory modification times when performing background copy / move (background duplication / rebalancing). * [D] Fixed crash related to ECP list. 1.0.0.5870 ---------- * Always duplicate to the drive with the most free space (background duplication). * Enabled licensing / purchasing. * [D] Clone duplicated directories on drive removal. 1.0.0.5843 ---------- * [D] Fixed incorrect number of copies sometimes being created for files in duplicated folders, depending on directory layout. * [D] Fixed oplock delay when writing to duplicated folders. * [D] Fixed an issue that was preventing the client backup engine from creating new data files under certain circumstances, depending on directory layout. 1.0.0.5831 ---------- * [D] Proper oplock cancellation support. * If the user cancels disk removal, abort immediately, even if we're in the middle of copying a large file. 1.0.0.5824 ---------- * [D] Allow simulated volume read. 1.0.0.5822 ---------- * Increased critical balance ratio from 75% to 90%. * Added option for NTFS compatibility with applications that look for an "NTFS" file system (CoveFs_ReportAsNtfs). * Fixed a longstanding issue that was causing periodic (30 sec.) disk cache flushing on all the disks, pooled and non-pooled. This was reported back when BETA M3 first went public. * You can now disable folder duplication on duplicated folders when there is only one disk present. * Enabled oplocks by default. Rebuilding the Windows Search index did not work without this. * [D] Fixed oplock file part selection. 1.0.0.5805 ---------- * When removing drives from the pool, cleanly abort all duplication / re-balancing runs while the removal is in progress. * After hashing files to verify consistency during duplication, if the files are identical, synchronize the last modification times to prevent hashing them again in a future duplication run. Having different file modification times on file parts from duplicated files would have lead to extremely long duplication times because the duplication process would hash each file part to verify consistency. * When background duplication / de-duplication needs to hash files because of a file modification time mismatch, the hashing process should be abortable and completely transparent to other I/O. * Do not crash the Dashboard if indexing services are disabled. * Fixed null error on drive removal. * Missing disk alert is now cleared if a pooled disk is disconnected, then system is shut down and the disk is reconnected before the next boot up. Previously, the alert would get stuck in the on state. * Balance ratio is immediately re-calculated after a re-balance. * [D] After manually deleting a pool part folder, the entire pool stopped working until the server rebooted. * When re-balancing files or duplicating files in the background, if another application requests write access to the file we cleanly abort what we were doing and move on the the next file. The application that requested access is then given access without an error. 1.0.0.5752 ----------- * Fixed a number of issues with the balancing algorithm. * File balancing now properly supports multiple pool parts on the same physical disk. * Fixed M3 -> M4 migration 'access denied' issue. Migration failed if the pool had a previously deleted folder, and the folder was in use at the time of the deletion, and the server did not reboot to complete folder deletion yet, and then you tried to migrate M3 -> M4. 1.0.0.5735 ---------- * Added 'DrivePool Console' to overview tab (bottom right - or hit 'C'). Shows tracing data in real-time and lets you change tracing detail level per-session. For debugging purposes only. * [D] Full Oplock support added. (see .config - disabled by default for now) NTFS-compatible implementation. All the new Windows 7 oplocks supported. Alternate streams supported. Oplocks improve performance over SMB / SMB2 by allowing local read and write caching on the client. This also adds compatibility with offline files, Apple time machine backing up directly to the pool, etc... * [D] Fixed crash having to do with target file name allocation. 1.0.0.5690 ---------- * [D] CoveFS now accesses NTFS directly, bypassing any filters present. This will prevent antivirus applications from double or triple scanning the same files on the pool when they're opened. (once on the pool drive and once or twice on the NTFS pool parts -- once is enough) * [D] Virtual disks should not be enumerated for pool parts and you should not be able to add them to the pool. WHS server backup mounts the backup as a VHD while backing up. * If a server is rebooted in the middle of disk removal, the "removing" flag was not cleared on the next boot. 1.0.0.5677 ---------- * Fix for keeping integrated mode enabled after updating. * [D] Fixed rename and overwrite issue. Was not allowing directory merging among other things. 1.0.0.5669 ---------- * [D] Fixed compatibility issue with volume shadow copy service (for non-pooled drives). It is a good idea to reboot BEFORE upgrading to this version, just in case VSS is locked up. If VSS is locked up while upgrading, the upgrade will lock up: In that case, Reboot -> Dashboard -> Remove DrivePool -> Reboot -> Install latest build. * Fixed M4 migration issue causing "Access denied" error. * [D] Workaround for issue in rdbss (bug?) that denies a flush on a read-only handle. This incorrectly returns access denied errors for non-write operations. This only affects files accessed using a UNC share path, locally on the server. Accessing shares from remote or from the local drive letter does not trigger this problem. * [D] When cloning directories, clone the owner properly. * [D] Improved performance / accuracy of file size tracking. 1.0.0.5635 ---------- * [D] Better support for empty pool. Treat as a disk that has 0 bytes free. * Fixed Dashboard crash on missing disk. * Added BitLocker support for pool parts (disabled by default - see .config). * Fixed null reference when removing drives from an unmounted pool. * Fixed pool condition UI bar getting stuck at 0. * Fixed deadlock when 2 background services were attempting to start at the exact same time. Did not stall I/O. * When removing a drive, show it as such, instead of missing disk. * When removing a drive, report duplication warnings. * Do not automatically duplicate when encountering an incomplete file if there are duplication warnings that need resolutions. Give the user a chance to view the warnings and resolve the issue. This does not affect nightly duplication runs (when there are unduplicated files present). This does not affect instant duplication runs when moving a file from a duplicated folder to a non-duplicated folder and vice versa. This does not affect duplication runs when adding a non-empty pooled disk, et al. * Do not list system reserved volume in Pool tab. * Volume name is now respected by DrivePool tabs. * [D] Pool drive can now have a volume name. 1.0.0.5536 ---------- * [D] Changed driver load order to address disappearing shares on reboot. * [D] Fixed timestamp issue in disk driver. Was preventing installation from going through on some systems. * Added new Drives sub-tab under the DrivePool tab. Shows disk space usage on all pooled drives. 1.0.0.5472 ---------- * Tweaked folder details presenter. * [D] Changed pool part initialization / refresh to be synchronous. 1.0.0.5452 ---------- * [D] Added support for undocumented directory listing file system behavior having to do with indexed requests. Managed to keep the same parallelized performance aspect of the algorithm, while adding deterministic ordering of results. Indexed queries are not as fast as non-indexed queries, but they are rarer (E.g. Triggered by: XP, OS X, boxee, MS-DOS applications, ...), and are only issued for large directory listings. * [D] Tightened up the directory listing algorithm code. 1.0.0.5449 ---------- * Fixed installation issue, where if the previous M4 install failed in the middle, future installs would not work. * [D] Fixed directory enumeration issue that was causing the WHS client backup engine to report damage in the backup database. Note that, when reproducing this issue, the backup database files were not actually damaged. 1.0.0.5421 ---------- * [D] Fixed simple rename crash (E.g. when renaming from OS X). * [D] Disk buffer fixes. * Attempted to fix folder re-share on migration (unable to reproduce). 1.0.0.5417 ---------- * [D] Fixed directory listing. Sometimes it would incorrectly tell the caller that there are no more files. * [D] Changed disk buffer access one more time to use exception handling instead of relying on WDF. 1.0.0.5401 ---------- * [D] Cleanup success code is now consistent with IRP. * [D] Fixed crash in handling lock control. * [D] Fixed virtual physical disk buffer access (was causing a number of crashes). This buffer is really meaningless, as we don't do much with it. 1.0.0.5387 ---------- * [D] Fixed rename + replace issue. If an application requested to rename / move a file and replace the destination in one operation, then there was a chance that the destination file would not be replaced properly. The duplication engine would detect this later as a file conflict and offer to fix the situation be deleting the older file part. * [D] Fixed crash when reading data. * [D] Fixed crash when FAT32 (or other file systems) volumes are present or plugged in (such as USB thumb drives). There was a bug in the file system identification code. 1.0.0.5380 ---------- * [D] Brand new file system driver, CoveFS. * Not based on old user mode / kernel mode hybrid FS approach. * 100% native solution, on par with the built-in file systems. * Built from scratch specifically for pooling. * Does not rely on any user mode service / program to function. * Mimics NTFS for many operations. * Direct file I/O pathways for ALL operations with Fast I/O support. * Fast directory listing using parallelized algorithm. * Pool loads at boot time, like regular file system over a virtual disk. * [D] Brand new virtual disk drive. * Pool volume sits on this virtual drive. * You can mount drive letters to it, etc... Just like any other disk. * Shows up in computer / server management. * Full plug and play / power support. * Pool is now mounted using a drive letter. You can work with it, like any other drive. * Integrated UI. * Integrates elements of DrivePool into the default "Server Folders and Hard Drives" tab. * Allows you to fully manage your pool from the standard tabs. * Enhances the detail panes with information from the Windows Indexing service and DrivePool. * This UI mode is optional and can be turned off, which takes you to a M3-like UI. * DrivePool overview tab. * Displays all the statistics for your pool in one place. * Links to various other related areas of the Dashboard. * Can be completely hidden in integrated mode for a native look and feel. * DrivePool settings. * Integrated into standard Dashboard settings UI. * Standard built-in wizards for add / move / delete folder. * Best compatibility with the existing Microsoft code. * Full compatibility with media streaming / HomeGroups out of the box. * Client computer backups folder can be moved to the pool using the standard wizard. * Background duplication. * Changes to file duplication happen in the background. * User is not forced to wait when setting the duplication status for a folder. * Files are duplicated using Background I/O (does not interfere with other disk access). * Pool condition percent replaces balance ratio. * Pool condition indicates balance ratio and duplication status in one place. * Allows you to manually initiate balancing / duplication actions. * Pool can function in 2 different duplication modes. * Real-time * Same idea as M3. * Files are duplicated as they are written. * Writes happen to 2 separate hard drives, in parallel. * Duplicate later * Files are always written to one hard drive. * Files that need to be duplicated are copied to the second drive during the nightly maintenance cycle. * This carries some restrictions. Naturally, files that are in use during the maintenance cycle cannot be duplicated. * The duplication maintenance cycle happens only once a day, at night, and only if this mode is enabled. * Updated icon :) * All the other goodness from M3 is mostly still here. * Real-time folder size tracking. * Real-time pool balance ratio to let the algorithm know if balancing is "necessary". * Real-time pool usage pie chart. * Add / remove disks to the pool with existing data on them without altering the existing data. * Pooled files are stored as standard NTFS files on each pooled disk. ^^^ 1.0 BETA M4 ^^^ * [D] Fixed crash on enumerating disks. 1.0.0.4133 ---------- * Moved up expiration for M3 to Mar 1 2012. In order not to annoy people to upgrade often. * Fixed a few locking contentions that would lock up the service. * Fixed error when removing last drive from the pool. * Fixed possible deadlock when removing a drive from the pool. 1.0.0.4114 ---------- * [D] Fixed startup system crash. * Disabled BETA M2 migration on startup (M2 expired). 1.0.0.4108 ---------- * [D] Small change in status return codes to directory queries that don't find any files. * [D] Direct file I/O for deleting files. (off by default ...) * [D] Direct file I/O for misc. file related APIs, including getting file dates, file allocation information, etc... (off by default ...) * [D] Direct file I/O for NTFS-like security. (off by default - enabled by master Direct file I/O switch in options) 1.0.0.4105 ---------- * [D] Implemented Direct file I/O, directory listing. (off by default - see options) Fast directory querying, written entirely in the kernel. * Asynchronously queries all the disks for their directory lists. * Buffers the results in memory, while returning the master list to the application in parallel. * Fast algorithm, O(Log(N)) speeds @ up to 65 thousand files per directory. Speed decreases above 65 thousand files, but will still work. 1.0.0.4099 ---------- * [D] Fixed crash on shutdown / uninstall. * [D] M4 pool part runtime. This is big. (not activated yet) 1.0.0.4074 ---------- * Re-enabled access to the .Mount folder. * Fixed security issues after adding a new drive. 1.0.0.4070 ---------- * Fixed new folder creation for Guest user right after adding a new drive to the pool, before a reboot. * [D] Fixed access violation when requesting security token. 1.0.0.4065 ---------- * Added .config file for service to allow users to tweak advanced options. 1.0.0.4063 ---------- * Ensure SYSTEM and Guest have proper access to root of all drives part of the pool and all pool part folders. * [D] Fixed memory access violation that was causing a system crash, when not using Direct I/O. 1.0.0.4058 ---------- * Ensure proper permissions on pool part folders. 1.0.0.4056 ---------- * Start the client computer backup service after upgrade. 1.0.0.4055 ---------- * Changed reset permissions to apply owner / inheritance rules in separate stages. 1.0.0.4040 ---------- * Security functions should be Unicode enabled. 1.0.0.4039 ---------- * Change permissions on C:\ServerPool\ServerFolders.Mount to prevent file / folder creation when DrivePool is not running. * Before sharing a folder, ensure proper access to it. * Added reset folder permission settings option. See folder properties, permissions tab. * [D] Fixed new file creation change notification. 1.0.0.3959 ---------- * When FolderLinks had no security set, setting permissions on a folder issued an access denied error. Now fixed. 1.0.0.3955 ---------- * [D] Fixed Fast I/O issue that was causing system crashes. (As reported: uTorrent, iTunes on Mac, etc...) * [D] Update current file position after successful Fast I/O call. 1.0.0.3940 ---------- * Fixed reading NTFS security from folder / files that don't have appropriate permissions and must use backup semantics to reset permissions. Some people are experiencing permissions issues accessing folders on the pool. You should try to open folder properties in DrivePool and re-apply the permission settings. You can do this by changing the permissions values to something and then changing them back and hitting OK. With this change, DrivePool should take ownership of all the folders / files and rest the permissions to their correct state. 1.0.0.3933 ---------- * [D] Some MDLs don't have a user buffer associated with them but only contain a system mapped address. * [D] Fixed timing of file object dereference to accomodate file mappings and paging I/O after the last user mode handle is closed. This affected notepad and other apps that mapped views of files. * [D] Fixed current file position advance on Direct file I/O read / write. 1.0.0.3929 ---------- * [D] Critical fix to Direct file I/O having to do with writing alternate streams on directories (DrivePool uses this a lot). Used to return invalid handle error sometimes. * Increased timeout for WHS folder listing to 60 seconds. 1.0.0.3923 ---------- * Turned off the NTFS permission changes introduced in the last build for now. * When setting permissions, DrivePool will now reset the owner of a folder if the permissions can't be set. 1.0.0.3874 ---------- * Correct NTFS permissions on the ServerPoolPart folder and the . (volume root) folder, if they're broken. * Server backup disks cannot be part of the pool. * When moving folders, if a folder cannot be moved because of an access denied error (NTFS permissions don't allow it), then reset the NTFS permissions instead of aborting. * When pool was being balanced, tooltip said "Balanced". * Fixed handle leak for security tokens. * Added new DrivePool performance features (see new DrivePool Settings dialog for more info): * [D] Direct I/O * [D] Fast I/O * [D] Read striping * [D] Fast directory listing (not enabled yet) * [D] Fast I/O write * Parallel execution limit 1.0.0.3808 ---------- * DrivePool doesn't manage WHS backup service on startup anymore, Widows will do that. * Added backup service dependency on DrivePool. Removed on uninstall. * Fixed errors when Guest permissions are not set correctly on the root directories of drives in the pool. * Wrapped the BETA M2 migration code with error reporting actions. 1.0.0.3790 ---------- * Fixed theme compatibility with StableBit Scanner 2.0. * Do not fail to start the DrivePool service if can't start backup service. A more concrete fix for this is coming later. * Fixed error in error handling logic when moving non-shared folder (i.e. backup). 1.0.0.3785 ---------- * Fixed rare but critical race condition in read / write I/O.` * Extended expiration by another 30 days (10/1/2011). * Do not consider error 6 as an I/O error. * Added the ability to move the computer client backup folder to the pool. Supports moving the folder to / from the pool, changing duplication and calculating folder size. * Fixed file deletion where if Windows decided not to delete a file after flagging it for deletion, the file was deleted anyway. This affected CD / DVD creation from files in the pool. 1.0.0.3717 ---------- * Changed expiration policy to allow read access to the pool even if expired. * Set permissions directly on the pool, avoid auto-propagation. * Do not use thread pool to propagate permissions. * Fixed some critical errors that were shutting the service down unexpectedly. 1.0.0.3703 ---------- * Remove any empty directories in the mount point before mounting pool. * Add new folder wizard now respects HomeGroup permissions and publishes the folder properly to the HomeGroup. 1.0.0.3696 ---------- * Shared folder security propagation is now asynchronous. * Added new function to folder links that will clean up any shares pointing to non-existent paths. * More minor HomeGroup synchronization improvements. * Fixed various issues with folder renaming. 1.0.0.3664 ---------- * Fixed deleting folders. 1.0.0.3661 ---------- * Suspend folder links while renaming. 1.0.0.3660 ---------- * Fixed HomeGroup maintenance. Many changes. HomeGroup access is now synchronized across renames / duplication changes / folder moves. Symptoms of a broken HomeGroup are inaccessible folders stuck in the HomeGroup that don't exist on the server. The easiest thing to do to get rid of those folders is to make your server leave the HomeGroup and then re-join. This change will keep the HomeGroup synchronized properly with your pooled folders. * Fixed media streaming library maintenance. Many changes. Media library is now synchronized across renames / duplication changes / folder moves. Symptoms of a broken media library is inaccessible videos stuck on the media library portion of the remote web access site, or through your DLNA device. * Changed folder links format to not include the duplication count. 1.0.0.3486 ---------- * Fixed issue that was crashing the service periodically. This could have been responsible for the sporadic mount errors / service startup issues that people have been seeing recently. 1.0.0.3481 ---------- * Re-added support for pending deleted folders. * SBSE 2011 Essentials compatibility restored. * Fixed changing folder name / duplication status in batch. * When adding a new folder the description is now saved. * Implemented persistent move for folder duplication change and folder rename (folder move already did this). This should help with the remaining sporadic access denied errors. 1.0.0.3467 ---------- * Fixed missing folders under some circumstances. * Fixed strange interaction between the kernel I/O manager and the file system regarding access checks. I/O manager is supposed to perform access check but seems to be getting bypassed by certain built-in Windows processes. Moreover, this behavior is expected by Windows and breaks things if we don't emulate it. This was preventing us from running apps directly from the mount point and maybe other related issues. 1.0.0.3444 ---------- * Rewrote the WHS folder links module from scratch. - Automatic default folder migration. - Share name conflict resolution. - Faster startup / maintenance runs. 1.0.0.3417 ---------- * Fixed error message mangling under some task abort conditions. * Added rename folder task to proper concurrency group. * Fixed incorrect file size calculation for 4+ GB files (internal to disk tasks). * Fixed Dashboard lock-up on start. * Fixed access denied when performing disk tasks due to media streaming service. * Incomplete repair wizard would not correct de-duplication errors, just duplication errors. * Incomplete file repair was marking too many files fixed, even ones on other pool parts that it didn't scan. * Fixed access denied error when removing duplication status from a folder (if file part was read-only). * Fixed false positives in the duplication error detection. * Fixed error resolving conflicting duplicated files in repair task. 1.0.0.3334 ---------- * Moving a folder now reports per-file progress. This will keep the progress bar moving even when a large file is in the process of being moved. * Added move folder wizard. * Enabled shared folder descriptions. Descriptions are stored on the pool in a hidden alternate stream inside the folder record itself. Because of this they are synchronized with the OS on startup and are preserved across different servers. * Fixed alternate stream access on directories. 1.0.0.3292 ---------- * Made the Dashboard details presenters display a reboot required message when the server needs rebooting instead of "Error starting service". * Fixed anti-flicker code in the Dashboard. * Fixed device not ready errors when moving / renaming files on the pool. * Fixed rare file not found errors that were being thrown when creating new files / moving existing files. 1.0.0.3267 ---------- * Renaming a folder to the same name would make it disappear from Dashboard. * Regenerating files would sometimes throw a null exception. * Access denied on folder duplication change could un-share the folder. 1.0.0.3262 ---------- * Fixed the annoying issue of folder names being upper cased. This fix should stop it from happening in the future. * Fixed bug in code that takes a file out of service. * Incomplete file repair task now correctly detects files that were out of service and were brought back into service. It now correctly removes the out of service tag. * Out of service files are not repaired. * Incomplete file repair task now correctly repairs incomplete directories as well (they were being detected but not repaired). Security / attributes / access times / alternate streams are of course preserved across repairs. * Fixed unduplicated file detection to not throw up an error if the file part being opened is taken out of service. 1.0.0.3210 ---------- * Fixed a critical upgrade error. Must restart the server after this build is installed. 1.0.0.3204 ---------- * Wrapped folder size update thread in an error handler to prevent it from shutting down the service if something goes wrong. An error report will be written. * Fixed another startup issue related to missing disks. 1.0.0.3189 ---------- * Disk usage pie chart was reporting 'other' space usage incorrectly under some cases. * Fixed a number of issues with missing disks having to do with service startup, folder size calculation, balance ratio calculation, file balancing, folder migration. 1.0.0.3141 ---------- * Fixed renaming non-pooled shares. * Implemented a different way of monitoring WHS folders. * Resynchronize notifications for existing installs after last notifications fix. * Old M2 mount point was not being removed for some reason. Added code to forcefully remove it in M3. This used to cause your pooled shares to not show up after the upgrade. 1.0.0.3078 ---------- * Notifications were not being cleared properly in some cases. * Cancel button was not working on folder migration. * More persistent folder deletion when migrating folders. * Better handling of in use files when migrating folders. 1.0.0.3057 ---------- * Foreign disk wizard was broken. Fixed. * Added migration code to fix incorrectly cased default folder names. * Directory casing is now being preserved across pool parts. If a default share's casing was changed, WHS would not recognize it. 1.0.0.3026 ---------- * Folder reconciliation. Resolve conflicting share names by making the folder name unique. * Guest mode fix migration. 1.0.0.3001 ---------- * Increased service timeout to 60 seconds. * Fixed race condition in real-time folder size tracking. * [D] Race condition caused a system crash. * Win32 file time parsing fixed. * Fixed guest access. 1.0.0.2984 ---------- * DrivePool is now more aggressive when closing handles to open files. * Addressed folder moving reliability issues (access denied, HomeGroup support, roll-back not working sometimes). 1.0.0.2939 (M3) --------------- * Many other fixes. * OS X compatability (and other samba based devices / software). * Added visualizations for folder / disk sizes and file balance ratio. * Added file balance resolutions. * Added file balance ratio computation and reason for unbalance. * Added folder size calculation and real-time tracking. * Added folder migration. Pool -> Disk Disk -> Pool Disk -> Disk * Added folder duplication level switch task. * Standardized internal task management model for service tasks and client tasks. * Now using the built in remove folder wizard instead of the custom one. * DrivePool folders will now be visible to the WHS storage service. Media streaming sees DrivePool folders. Remote web access sees DrivePool folders. DrivePool folders now show up under the standard Server and Folders tab (total size is incorrect). * Add folder / folder properties now uses NTFS-like security not share level security. * Do not consider Access Denied / File Locked / etc.. An I/O error. * When there is a pool part missing on a volume, and that volume is attached to the system (i.e. The ServerPoolPart folder was deleted), then the missing pool part would be incorrectly displayed twice. 1.0.0.1928 ---------- * Updated expiration to 9/1/2011. 1.0.0.1927 ---------- * Increased service startup timeout. 1.0.0.1925 ---------- * When moving a file within a pooled folder, if the destination already existed there was a chance that the move could fail because it would try to switch the pool part that the file was on. 1.0.0.1919 (restart required if upgrade) ---------- * [D] Fix for error 0x800705AA (insufficient resources) when writing a file. * Fixed race condition in code responsible for force closing access to open files. (used when removing a drive and other places). 1.0.0.1917 ---------- * Fixed folder rename access denied. 1.0.0.1914 (restart required if upgrade) ---------- * Added DrivePool.Comm.dll cleanup code. * [D] Updated move file code for previous fix. * Fixed file merge move and replace (Win 7+). * Ported back better I/O error detection from M3 regarding read / write notifications. 1.0.0.1865 (restart required if upgrade) ---------- * [D] Fixed multiple system crashes related to memory access violations. 1.0.0.1864 (restart required if upgrade) ---------- * Extended expiration by 1 month. * Corrected interop stack mismatch. * Fixed error encountered when processing disk change notifications. * [D] Fixed system crash related to an access violation when closing a handle. 1.0.0.1856 ---------- * Free space in the drives list is now updated periodically. * Sometimes a task wizard would report success before the task finished. 1.0.0.1838 ---------- * Increased logging disk free space limit to 200MB. * Increased daily log file size limit to 50MB. * ETW logs were being reset when entering the about window. 1.0.0.1836 ---------- * You shouldn't be able to perform repair tasks on disks that are not in the pool. * After trying multiple notification techniques (WMI, Powershell, Direct WHS), scrapped existing notification system and rewrote it from scratch. All notification are now in real-time with no interaction from the clients. This fixes the client computer monitoring error. It can take up to 6 hrs to replicate the new settings to the client computers. * Do not notify about incomplete files while a disk is being removed. * Individual drive free space was actually the capacity. 1.0.0.1736 ---------- * Implemented installation upgrading. Uninstall of the old version is not required anymore. A reboot is optional, depending on the files updated. Reboot is indicated on the last step of the installer. Dashboad tab UI will also indicate a reboot required. * Fixed locking issue in enumerating open file contexts. 1.0.0.1706 ---------- * Dashboard tab now has a reboot UI when the driver install requires a server reboot (after upgrade typically). * Fixed error when adding new folder (duplicate share). * Error report writing fixed. * Removed locks from dashboard real-time notification management (potential runaway threads). 1.0.0.1679 ---------- * Windows 7 and above directory merging fixed. (This is a feature of the OS that allows you to merge two directory trees) 1.0.0.1675 ---------- * Removing a folder with read-only files would error out with an access denied. * Fixed open context enumeration error (affects new remove drive code). * Do not notify about un-duplicated files if there are missing disks. 1.0.0.1671 ---------- * [D] Tweaked the unmount timeout algorithm to prevent automatic unmount on sleep. * Fixed alert monitoring error. * Write error notifications were not being issued for non-duplicated folders. (you may need to delete the old monitoring error alert) 1.0.0.1665 ---------- * Expiration updated. * Drive removal now takes priority over open handles. This means that if a file is open with no proper share access, that file will be force closed if the drive removal task needs to work on it. This is contrary to the old behavior of the drive removal task being safely aborted. * Read-only files on duplicated shares would prevent drive removal. Not any more. * When there is any kind of I/O error during drive related tasks (e.g. Drive removal), display the file path causing it. 1.0.0.1648 ---------- * Another fix for Dashboard not starting after upgrade from 1588 and earlier. This was a result of files from 1588 being left in c:\program files\stablebit\drivepool after uninstall. This doesn't affect new installs, only some people upgrading. 1.0.0.1635 ---------- * Not all files were being duplicated by the foreign verification wizard. (DrivePool will detect any files that are not duplicated and offer a fix in the Dashboard). * Fix to Dashboard not starting (rare). * Do not notify about incomplete files while there are missing disks. * Repairing incomplete files should not proceed if there are disks missing. 1.0.0.1627 ---------- * Fixed progress reporting for various repair tasks. * Restored the pool total size in UI. * Added incomplete file repair task along with notifications and repair wizard. Incomplete files are files that exist in a duplicated folder on a non-foreign disk that are missing at least one pool part. This should not normally happen, but if this condition is detected a repair wizard is offered that will restore the duplication status of the affected files. You can see this new functionality in action by deleting a duplicated file manually from any pool part and then trying to open it from the share. The file will open successfully and you will be able to change it, but the pool part holding the single remaining copy of the file will be marked unhealthy in the dashboard. 1.0.0.1588 ---------- * Fixed creating new directories. 1.0.0.1584 ---------- * Open directory status fix, prompted by media player classic file not found error. * [D] Fixed system crash in cleanup routine. * Both logging systems are controlled literally by a flip of a switch from the DrivePool about dialog. On by default for the BETA. To record a problem, just make sure logging is on, reproduce the issue and contact support. These are in addition to the existing error report system. * Rolling text log files for the DrivePool service. Placed in C:\ProgramData\StableBitDrivePool\Service\Logs\Service. These are text based log files useful for high level troubleshooting. They will auto-roll to new files and clean up themselves after 7 days. * [D] Extensive ETW based WPP logging for every I/O operation in the kernel. Uses the built-in high performance logger designed not to slow down the computer. Logs to C:\ProgramData\StableBitDrivePool\Service\Logs\CoveWhsFs. Log file is a special circular format that will auto delete old log messages as new ones arrive. Stored in a compact binary format to take less disk space / computer resources. * Delayed notifications when dashboard is not running. * [D] Fixed alternate stream file name path forming. Now properly forms an alternate stream path when both stream name and type are specified to a relative path which is the file. * An incomplete file (not duplicated due to disk error) in a duplicated folder cannot be moved. It must be regenerated first. * Write error resilency on the file system level for duplicated folders. If a write error occurs on a single duplicated file part, then the write as a whole will attempt to succeed. The bad file part is taken out of service and renamed with a .bad suffix, while the good data is written to the remaining good file parts. A write will always fail on a non-duplicated folder, and on a duplicated folder the write can fail if all the file parts fail the write, or if a damaged file part is locked or can't be moved for some other reason. Once a write fails, the pool part with the file that failed the write will be marked as unhealthy and the file is marked for repair. At this point, the file is not duplicated any longer as the duplicated file part failed. After the affected handle is closed, no further write access is allowed to the damaged duplicated file, until the user repairs the pool part. It is up to the user to decide what to do with the .bad file, it will simply be listed in the directory. Writes still happen in parallel to multiple disks at the same time for duplicated files. * Read error resolution task and wizard. * Read error simulation. * Real-time notifications for missing / foreign / read error / write error when Dashboard is open. * Added ability to add "hidden disks" to the pool. If a disk has no volumes on it, you will now have an option in the add drive to pool wizard to not mount it to any drive letter. Hidden disks have the advantage of not using up a drive letter. The disadvantage is that you can't add normal, non-pooled folders to hidden disks. * Added ability to add uninitialized / empty disks to the pool. Uninitialized disks will be initialized as GPT disk and a basic NTFS volume will be created. * [D] Fixed multiple access violations with exit trace for pending IRPs. * Disk / volume enumeration is now independent of the WHS 2011. * Support for raw, unformatted disks. * WHS 2011 notification provider for metadata states. * New pool part metadata states: Read error, Write error, Missing disk, Foreign disk. Metadata states exist to help the UI manage pool parts, they are not stored on the pool and are not required for the pool to function. - Write error: There was a problem writing to one or more files on the pool. Error returned to the caller. - Read error: There was a problem reading from one or more files on the pool. Error returned if folder not duplicated or read over both duplicated copies failed. - Missing disk: There is a disk missing holding a pool part. Non-duplicated files on that pool part are missing, duplicated files are in read only mode. - Foreign disk: A new disk was connected to the pool, it may contain duplicated files that need to be regenerated. * Generally, the basic service functionality is now not dependent on the UI. * Directory change detection. On pool parts in use, the root directory of the volume is watched for changes that might affect the pool parts. This means that you can add a pool part simply by creating a new folder in the correct format (ServerPoolPart.[GUID]). * Volume change detection. The service will now look for pool parts as volumes are added / removed on the system independent of the UI. * Full 32K long path support. Note that the application you use might still be limited to < 260 characters. * Pool parts no longer need to be mounted at any particular place. Direct volume access is used without logical drive or mount point. This means that pool parts can reside on any NTFS basic volume, even unmounted ones. * Asynchronous service starting. 1.0.0.718 --------- * Limited long path support. Long paths are now collapsed to short paths. Any path can be used as long as its short path form is less than 260 characters. While not supporting the full 32k limit, this should allow for some really long paths. As an optimization, path collapsing only happens for paths > 250 characters (counting P:\ServerPoolPart...). * [D] OPLOCK return codes were incorrect (started in 692). Caused SMB1 to malfunction. * Wide reaching bug that had to do with file / directory creation. At the least, this manifested itself in a "Try again" dialog that would come up for some files and directories. 1.0.0.692 --------- * [D] Certain FSCTLs must be handled synchronously. This had the potential of causing a system crash depending on the timing of things. 1.0.0.687 --------- * Reworked MoveFile to use a different API. Still had problems (in Win XP for example). 1.0.0.652 --------- * Threaded parallel writing for duplicated shares. * Numerous fixes with drag and drop, or cut and paste (i.e. MoveFile/MoveFileEx). * Unicode support. * Alternate stream support fixed. (fix for "Are you sure you want to copy this file without its properties?", Firefox 4 and other apps that use ADS). 1.0.0.590 --------- * Folder shares are now restored properly after a mount. This fixes issues with shares not showing up after a reboot. * Mount on service start up will now fail correctly. I.e. if mount failure occurs then an error report is written, and the service goes into a non-running state. * Started experimenting with remote web access, media streaming from the pool and moving existing folders to the pool, including Client Computer Backups. None of this is enabled, but it's now possible in a future version. 1.0.0.579 --------- * [D] Multiple access violation errors fixed. 1.0.0.578 --------- * [D] Set access mask on create. * [D] Changed response code for security query. 1.0.0.569 --------- * Added new physical disk column to hard Drive Pooling tab. * Pool parts that are on different partitions of the same drive will NOT be considered as duplication candidates. Volumes spanning multiple physical disks that overlap on at least one disk will not be considered as candidates for file duplication either. * [D] Fixed an issue with reporting a file change after changing file attributes on some files. Thanks Errol. 1.0.0.537 --------- * Fixed potential I/O error on files >= 4GB. * Fixed a bug where if a file had an alternate stream, there was a chance that the alternate stream would be put on a separate pool part from the original file, confusing the system. Thanks Steve. 1.0.0.521 --------- * Removed interaction with the Server (LanmanServer) service. Now using an alternate technique to re-establish shares. This should fix some of the reboot issues. * Added default share permissions so a new shared folder would open from the Administrator account. 1.0.0.498 --------- * First public release. * Add / remove drives from pool. * Detection of missing disks. * Add / remove folders. * Duplicated folders with redundant I/O. * Share permissions.