aboutsummaryrefslogtreecommitdiff
path: root/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'db.go')
-rw-r--r--db.go13
1 files changed, 12 insertions, 1 deletions
diff --git a/db.go b/db.go
index 1acef14..cbcc322 100644
--- a/db.go
+++ b/db.go
@@ -453,13 +453,24 @@ func (db *DB) Copy(w io.Writer) error {
return err
}
- // Copy everything.
+ // Copy the meta pages.
+ db.metalock.Lock()
+ _, err = io.CopyN(w, f, int64(db.pageSize*2))
+ db.metalock.Unlock()
+ if err != nil {
+ _ = t.Rollback()
+ _ = f.Close()
+ return fmt.Errorf("meta copy: %s", err)
+ }
+
+ // Copy data pages.
if _, err := io.Copy(w, f); err != nil {
_ = t.Rollback()
_ = f.Close()
return err
}
+ // Close read transaction and exit.
if err := t.Rollback(); err != nil {
_ = f.Close()
return err