Project

General

Profile

Bug #4970

need controls on i/o issued by zpool import -XF

Added by Matthew Ahrens about 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Category:
zfs - Zettabyte File System
Start date:
2014-07-08
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

When doing an "extreme rewind" import ("zpool import -XF"), we attempt to
verify all data in the pool, essentially scrubbing the entire pool. The
problem is that spa_load_verify_cb() issues an unbounded number of concurrent
scrub i/os. This can lead to all of memory being used for these zio's, wedging
the system. Like normal scrub, we need to put a cap on the number of
outstanding i/os, and have the traverse thread block when we reach this cap.
For this purpose the cap can be very large (100,000?) to optimize the elevator
algorithm.

Additionally, it would be nice to have a few switches (kernel tunables) to
control how much we verify during extreme rewind:

- disable verification of user data (i.e. make spa_load_verify_cb() a no-op)
- disable verification of more than N txg's (or disable verification
entirely?)

History

#1

Updated by Electric Monk about 5 years ago

  • % Done changed from 0 to 100
  • Status changed from New to Closed

git commit e42d205944d245bf5d1c4fc45261cbe09e28a7b9

commit  e42d205944d245bf5d1c4fc45261cbe09e28a7b9
Author: Matthew Ahrens <mahrens@delphix.com>
Date:   2014-07-15T18:58:42.000Z

    4970 need controls on i/o issued by zpool import -XF
    4971 zpool import -T should accept hex values
    4972 zpool import -T implies extreme rewind, and thus a scrub
    4973 spa_load_retry retries the same txg
    4974 spa_load_verify() reads all data twice
    Reviewed by: Christopher Siden <christopher.siden@delphix.com>
    Reviewed by: Dan McDonald <danmcd@omniti.com>
    Reviewed by: George Wilson <george.wilson@delphix.com>
    Approved by: Robert Mustacchi <rm@joyent.com>

Also available in: Atom PDF