Code Change Request

# 2165

Back to Code Changes

Alex
Software Development
StableBit DrivePool
2.1.0.X
Public
Alex

* [Issue #2165] Meaningless folder placement rules are now defined as rules that are set up exactly the same way as the 
                immediate ancestor rule. These rules will be automatically removed. With this change a rule with all the 
                drives checked can now be "meaningful" as long as it has a different immediate ancestor rule. This allows 
                you to effectively "override" and disable an ancestor folder placement rule on one or more specific 
                child folders.
* [Issue #2165] Changed folder placement icon to a green filter icon when a folder placement rule is defined on a folder.
                The icon will turn black (and shrink) if a folder is "inheriting" a folder placement rule from an ancestor.
* [Issue #2165] Added disk tool tips over the file placement disk list.
Public
Alex

* [Issue #2165] File placement rules were not being saved if the only thing that changed about them was the order.
* [Issue #2165] For a new folder based file placement rule, the UI will now base the rule off of the parent folder's 
                rule. A new rule will only be created for the sub folder if it differs from the parent rule.
* [Issue #2165] "Balance immediately" wasn't taking file placement rules into account.
* [Issue #2165] Meaningless rules will now be saved, if they are pattern based (not folder based).
* [Issue #2165] Added multi-select support for file placement rules (hold down Ctrl or Shift to select multiple rules).
* [Issue #2165] Folder based rules can now be rearranged, as long as the new arrangement doesn't violate the path depth 
                rules. Folder rules defined on deeper directory structures must always have a higher priority than folder 
                rules defined on shallower directory structures. The depth of a folder rule is defined as the number of "\" 
                characters.
* [Issue #2165] File placement rules now have an option that automatically excludes new drives from being selected for 
                that rule.
* [Issue #2165] Automatically prioritize file placement rules if any exist from previous builds with no priority. Also 
                force a re-balance using the new priority based rules.
* [Issue #2165] When file parts need to be cleaned up due to duplication changes, file parts that are violating placement 
                rules are cleaned up first.
* [D] [Issue #2165] File placement rules now have a priority associated with each rule. Whenever a file path matches multiple 
                    patterns, the rule with the highest priority is applied.
                        - Folder based file placement rules have a priority automatically assigned to them. Folders that are 
                          deeper have a higher priority.
                        - Manually defined pattern based file placement rules can now be moved up and down the list to define 
                          their priority. Rules at the top have higher priority than rules at the bottom.
Public
Alex

This is now live @ stablebit.com with v. 2.1.0.503:
Public
Alex

2.1.0.499:

* [Issue #2165] Added warning strip to the file placement tab when balancing rules are not being satisfied due to low 
                disk space or other conflicting rules.
Public
Alex

2.1.0.498:

* Added bar chart that shows file distribution per pool part when a folder is selected.
* Added folder size pie chart to file placement folder tree.
Public
Alex

2.1.0.492:

* [D] When the file system detects that a pattern limit has been violated, inform the service. The service will 
      set a flag and it will be reported in the pool organization bar.

* When performing background duplication or drive removal, try to respect file placement limits:
    - When looking for destination pool parts in order to duplicate a file part, prefer pool parts that don't 
      violate existing file placement limits for that file.
    - If a file placement limit must be violated, then reflect that in the balance state, which will be reflected 
      in the pool organization bar.

* When balancing and emptying a disk, added edge condition to fully empty the last remaining files even if that 
  strictly violates the target pool part's balancing delta. For example, when one file is remaining on the source 
  pool part and there are 2 target pool parts, that single file obviously can't be split up in 2. This ensures 
  that file evacuation works as expected.
Public
Alex

* Added new balancing options to deal with Balancer <=> File placement interaction:
  See Pool Options -> Balancing... -> Settings
    - The file pattern mover should not violate real-time file placement limits set by the balancers.
    - The existing pool part file mover should not violate file placement pattern rules when moving files around.
        - Unless, the pool part is being emptied.

* After successfully removing a pool part, check file placement limits to make sure that there are no limits that exclude 
  all existing pool parts. If such limits exist, they are meaningless, remove them.

* Implemented a background file placement balancer:
    - When changing file placement rules, the "file placement balancing state" is marked dirty and a file placement 
      background balancing run is needed to move the existing files on the pool in accordance with the file placement 
      rules. This drops the balancing ratio to 0.0.
    - In the horizontal UI mode, if the file placement balancing state is dirty, a little file icon will be shown 
      next to each pooled disk's balancing bar indicating that file placement balancing is required on this disk.
    - When the file placement balancer needs to move a file off of an existing pool part because it is violating the 
      pre-set limit, it uses these rules when deciding which pool part to place the file on:
      - A pool part is chosen that doesn't violate other pattern based file placement limits and doesn't violate 
        real-time file placement limits.
      - If no such pool parts exist, the file is not moved.
      - Protected files are never moved onto a pool part that resides on the same storage unit as another file part 
        of the same file. This would break the file protection rules.

* Added a folder based file placement rule configuration UI. See Pool Options -> Balancing... -> File Placement ->
  Folders:
    - Specifying a folder rule will automatically generate a pattern based rule for that folder.
    - The pattern for a folder based rule cannot be edited.
    - Folder based rules cannot be defined for the meta-data and root directories.
    - Only meaningful rules are saved. A rule with all drives selected is not meaningful.

* [D] Added real-time pattern based file placement rules. See Pool Options -> Balancing... -> File Placement:
        - You can specify one or more rules that will direct matched new files to be put on one or more specific 
          pool parts.
        - Patterns can include wild-cards (*, ?).
        - Given the wild-card support you can create patterns that are absolute such as "\Users\*" or relative "*.ISO".
        - Each rule can optionally overflow files onto deselected disks if all the chosen disks are getting full.
        - A non-overflowing rule will give an out of disk space message if all of the chosen disks are full for any 
          file that matches that rule.
        - A simpler folder based interface will be added.