Skip to content

Commit

Permalink
dm thin: add read only and fail io modes
Browse files Browse the repository at this point in the history
Add read-only and fail-io modes to thin provisioning.

If a transaction commit fails the pool's metadata device will transition
to "read-only" mode.  If a commit fails once already in read-only mode
the transition to "fail-io" mode occurs.

Once in fail-io mode the pool and all associated thin devices will
report a status of "Fail".

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
  • Loading branch information
Joe Thornber authored and Alasdair G Kergon committed Jul 27, 2012
1 parent da105ed commit e49e582
Show file tree
Hide file tree
Showing 2 changed files with 344 additions and 96 deletions.
24 changes: 23 additions & 1 deletion Documentation/device-mapper/thin-provisioning.txt
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,9 @@ i) Constructor
no_discard_passdown: Don't pass discards down to the underlying
data device, but just remove the mapping.

read_only: Don't allow any changes to be made to the pool
metadata.

Data block size must be between 64KB (128 sectors) and 1GB
(2097152 sectors) inclusive.

Expand All @@ -239,7 +242,7 @@ ii) Status

<transaction id> <used metadata blocks>/<total metadata blocks>
<used data blocks>/<total data blocks> <held metadata root>

[no_]discard_passdown ro|rw

transaction id:
A 64-bit number used by userspace to help synchronise with metadata
Expand All @@ -257,6 +260,21 @@ ii) Status
held root. This feature is not yet implemented so '-' is
always returned.

discard_passdown|no_discard_passdown
Whether or not discards are actually being passed down to the
underlying device. When this is enabled when loading the table,
it can get disabled if the underlying device doesn't support it.

ro|rw
If the pool encounters certain types of device failures it will
drop into a read-only metadata mode in which no changes to
the pool metadata (like allocating new blocks) are permitted.

In serious cases where even a read-only mode is deemed unsafe
no further I/O will be permitted and the status will just
contain the string 'Fail'. The userspace recovery tools
should then be used.

iii) Messages

create_thin <dev id>
Expand Down Expand Up @@ -329,3 +347,7 @@ regain some space then send the 'trim' message to the pool.
ii) Status

<nr mapped sectors> <highest mapped sector>

If the pool has encountered device errors and failed, the status
will just contain the string 'Fail'. The userspace recovery
tools should then be used.
Loading

0 comments on commit e49e582

Please sign in to comment.