Unlike other parts of StableBit CloudDrive, technical details will often substitute the word write for upload, and read for download.

Because not all storage providers have to necessarily be network based, these terms are actually more accurate when describing storage providers writing and reading data.

Toolbar

The Toolbar lets you select which cloud drive you want to get technical details about and various other options.

Here's what each part of the Toolbar does:

Toolbar Parts

When one of the menu options are selected, StableBit CloudDrive will stop writing data to the storage provider as soon as an error is encountered.
Normally, failed writes are retried, and additional data continues to upload.

This is useful if you are attempting to use an external tool to record a specific but rare error from the storage provider.

The type of error that will cause the writing to pause can be narrowed down further by the available menu options:

Any Error

When enabled, writing will be paused on the first storage provider error encountered. Any storage provider error will trigger this.

Security Error

When enabled, writing will be paused on the first storage provider security error encountered.

Each storage provider defines what it considers a security error. For example, most HTTP-based storage providers will consider a HTTP status code 403 to
be a security error.

HTTP Error

When enabled, writing will be paused on encountering the first HTTP error with one or more specific status codes. You can specify more than one status code
separated by commas.

This option only applies to HTTP-based storage providers.

Write Verification Error

When enabled, writing will be paused on encountering the first write verification error (also known as an upload verification error).
See Upload Verification for information on how to enable and disable it for your cloud drive.

Optimizations enable or disable certain code optimizations in StableBit CloudDrive. Normally, all optimizations should be enabled.

Handle Caching

When enabled, open handles to the local cache will be reused among different I/O requests. This is done in order to avoid opening and closing
the cache files for each I/O request.

RAM Cache

When enabled, RAM will be used to assist I/O requests in order to avoid issuing redundant requests to the storage provider.
The size of the RAM cache can be set when Creating a Drive under Advanced Settings > Chunk Cache Size.

Short Circuiting

When enabled, this optimization works under 2 specific scenarios:

When a chunk is being written, and a read request comes in for a part of that chunk, the write will immediately pause, copy the
required data into the read request and resume writing. This makes sure that the read request can complete immediately.

When a chunk is being read, and other read requests come in for a range of data that is already being read. Instead of issuing
separate requests to the storage provider for the same data, the existing data will be used to satisfy all of the requests.

Write Thread Boosting

When enabled, if multiple writes need to perform a read-modify-write on the same chunk of data, an attempt will be made to combine all of them
into 3 steps that require 2 storage provider I/O requests.

The whole chunk will be read from the storage provider.

Each write will apply their individual change to the chunk that was read in.

The entire chunk will be written back to the storage provider..

In certain cases, such as when the storage provider returns an error, this optimization won't be applied,
and the write requests may be split up for individual processing.

Kernel Read Buffering

When enabled, a shared non-paged kernel memory space will be used to send data directly to the virtual disk when servicing read requests.

Otherwise, the data will have to be written out to the local cache and then read back in by the virtual disk.

Write Pre-buffering

When enabled, for all of the data that needs to be written to the storage provider, a single dedicated thread will be used to pre-buffer
that data from the local cache.

Otherwise, multiple upload threads may have to read from the local cache at the same time. This can cause disk thrashing, thereby slowing down
the performance of the local cache disk.

Options to simulate various storage provider errors are available here.

All of these error simulations will be turned off on the next reboot (or when the StableBit CloudDrive service restarts).

Simulate Read Errors

When enabled, there will be a 10% chance that a storage provider read will return a simulated error.

Simulate Write Errors

When enabled, there will be a 10% chance that a storage provider write will return a simulated error.

Simulate Read Failures

When enabled, there will be a 100% chance that a storage provider read will return a simulated error.

Simulate Write Failures

When enabled, there will be a 100% chance that a storage provider write will return a simulated error.

Simulate Security Errors

When enabled, there will be a 100% chance that a security error will be simulated on either a storage provider read or write .

Include Mounting in Error Simulation

Normally error simulation doesn't prevent the drive from mounting, because the mount process is not included in the error simulation.

When enabled together with simulating read failures or simulating security errors, the drive will return an appropriate simulated error when mounting.

When disabled, completed requests will not be shown in Provider I/O after they end.

When enabled, I/O Requests and Provider I/O will pause updating. This will let you examine
the information contained there in detail.

I/O Requests

Every time StableBit CloudDrive needs to read some data from a storage provider or write some data to a storage provider, it issues a Read or Write request to
the Chunk I/O Pipeline. The chunk I/O pipeline is a state machine that can split, join, and process I/O requests in more complicated ways.
The decisions that the chunk I/O pipeline makes depend on your cloud drive settings and the capabilities of the storage provider.

The I/O Requests view, provides a detailed trace of each I/O request as it traverses through the chunk I/O pipeline.

For example, when a part of a chunk needs to be written, and the storage provider doesn't support partial chunk writes (like most cloud storage providers), this
may show up in I/O Requests:

Each time an I/O request needs to be split, joined, or something more complicated needs to happen, a sub-node will be shown in the I/O Requests view for that request.
Hovering your mouse over that node will show you a detailed tooltip of what exactly happened there.

Clicking on the node of a Provider type of I/O request will highlight the corresponding Provider I/O request that was issued to the storage provider
as a result.

In the above example, we can see that a part of chunk 310 needs to be written to the storage provider. But the storage provider doesn't support writing parts of chunks,
so the entire chunk needs to be read, patched, and written back to the storage provider.

Moreover, a similar write request is being issued at the same time, and instead of doing the above twice, both of those requests are being combined into one operation.

Each I/O requests always starts off as one of 3 types:

Prefetch

Read

Write

But in order to process that request, it may be necessary to issue additional I/O requests of a different type.

The type of I/O request that is being issued at each individual point of an ongoing I/O request is indicated by an icon:

I/O Request Types

This is a prefetch read request.

This is a non-prefetch read request.

This is a write request.

In addition to the I/O request type icon, certain I/O requests are highlighted with different colors for emphasis.

I/O Request Colors

Provider I/O

Provider I/O shows detailed information about each I/O request that goes out to the storage provider.

Just like in I/O Requests, each request has an icon associated with it and some possible highlighting for emphasis.

Provider I/O Icons

This is a non-prefetch read request.

This is a prefetch read request.

This is a write request.

This request ended successfully. The item will be shown for 4 seconds after it ends.

This request ended unsuccessfully. Selecting it will show the error message in the Status Bar. The item will be shown for 15 seconds after it ends.

Provider I/O Colors

This is the information shown for each storage provider I/O request:

ID

A unique identifier of the this request. This is just an incrementing number.

Type

The type of request:

Write - A write request.

Read (prefetch) - A prefetch read request.

Read (verify) - A read request verifying a previous write.

Read - A non-prefetch and non-verifying read request.

Duration

How long this request has been running.

Note that this window only updates about once a second.

Chunk

The chunk number that is being read or written.

Offset

The 0-based offset in the chunk that is being read or written.

Length

The length of the data that is being read or written.

Progress

Out of the entire length, how much of it has already been read or written, as a percentage.

Response Time

How long it took the storage provider to respond to this request after it was issued.

Speed

How fast this request is being read or written, as an average speed from the time that the request was started.

When an error occurs, selecting it will show the error message in the Status Bar.

Similarly, if the request was retried, selecting the retry will also show the error message that triggered the retry.

Status Bar

The status bar shows information about the currently selected Provider I/O request.

For example:

Drive Details

The drive details window shows information about the properties of the selected cloud drive.

Selecting each property will show a brief description of that property at the bottom of the window.

All of these properties are for informational purposes only and they cannot be changed here.

Here are the categories that the cloud drive properties are grouped into: