Skip to content

Commit d1c9853

Browse files
committed
Everything is building and working
1 parent d308427 commit d1c9853

File tree

7 files changed

+591
-543
lines changed

7 files changed

+591
-543
lines changed

upstairs/src/downstairs.rs

+21-23
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,16 @@ use std::{
88
use crate::{
99
cdt,
1010
client::{ClientAction, ClientRequest, ClientStopReason, DownstairsClient},
11+
guest::GuestWork,
1112
live_repair::ExtentInfo,
1213
stats::UpStatOuter,
1314
upstairs::{UpstairsConfig, UpstairsState},
1415
AckStatus, ActiveJobs, AllocRingBuffer, ClientData, ClientIOStateCount,
1516
ClientId, ClientMap, CrucibleError, DownstairsIO, DownstairsMend, DsState,
16-
ExtentFix, ExtentRepairIDs, GtoS, GuestWork, GuestWorkId, IOState,
17-
IOStateCount, IOop, ImpactedBlocks, JobId, Message, RawMessage,
18-
ReadRequest, ReadResponse, ReconcileIO, ReconciliationId, RegionDefinition,
19-
ReplaceResult, SerializedWrite, SnapshotDetails, WorkSummary,
17+
ExtentFix, ExtentRepairIDs, GuestWorkId, IOState, IOStateCount, IOop,
18+
ImpactedBlocks, JobId, Message, RawMessage, ReadRequest, ReadResponse,
19+
ReconcileIO, ReconciliationId, RegionDefinition, ReplaceResult,
20+
SerializedWrite, SnapshotDetails, WorkSummary,
2021
};
2122
use crucible_common::MAX_ACTIVE_COUNT;
2223

@@ -1250,15 +1251,15 @@ impl Downstairs {
12501251
|| (repair.aborting_repair && !have_reserved_jobs)
12511252
{
12521253
// We're done, submit a final flush!
1253-
let gw_id = gw.next_gw_id();
1254-
cdt::gw__flush__start!(|| (gw_id.0));
1255-
1256-
let flush_id = self.submit_flush(gw_id, None);
1254+
let (gw_id, flush_id) = gw.submit_job(
1255+
|gw_id| {
1256+
cdt::gw__flush__start!(|| (gw_id.0));
1257+
self.submit_flush(gw_id, None)
1258+
},
1259+
None,
1260+
None,
1261+
);
12571262
info!(self.log, "LiveRepair final flush submitted");
1258-
1259-
let new_gtos = GtoS::new(flush_id, None, None);
1260-
gw.active.insert(gw_id, new_gtos);
1261-
12621263
cdt::up__to__ds__flush__start!(|| (gw_id.0));
12631264

12641265
LiveRepairState::FinalFlush { flush_id }
@@ -1310,8 +1311,7 @@ impl Downstairs {
13101311
let nio = Self::create_noop_io(noop_id, deps, gw_noop_id);
13111312

13121313
cdt::gw__noop__start!(|| (gw_noop_id.0));
1313-
let new_gtos = GtoS::new(noop_id, None, None);
1314-
gw.active.insert(gw_noop_id, new_gtos);
1314+
gw.insert(gw_noop_id, noop_id, None, None);
13151315
self.enqueue_repair(nio);
13161316
}
13171317

@@ -1356,8 +1356,7 @@ impl Downstairs {
13561356

13571357
cdt::gw__repair__start!(|| (gw_repair_id.0, eid));
13581358

1359-
let new_gtos = GtoS::new(repair_id, None, None);
1360-
gw.active.insert(gw_repair_id, new_gtos);
1359+
gw.insert(gw_repair_id, repair_id, None, None);
13611360
self.enqueue_repair(repair_io);
13621361
}
13631362

@@ -1614,8 +1613,7 @@ impl Downstairs {
16141613

16151614
cdt::gw__reopen__start!(|| (gw_reopen_id.0, eid));
16161615

1617-
let new_gtos = GtoS::new(reopen_id, None, None);
1618-
gw.active.insert(gw_reopen_id, new_gtos);
1616+
gw.insert(gw_reopen_id, reopen_id, None, None);
16191617
self.enqueue_repair(reopen_io);
16201618
}
16211619

@@ -1797,8 +1795,7 @@ impl Downstairs {
17971795
);
17981796

17991797
cdt::gw__close__start!(|| (gw_close_id.0, eid));
1800-
let new_gtos = GtoS::new(close_id, None, None);
1801-
gw.active.insert(gw_close_id, new_gtos);
1798+
gw.insert(gw_close_id, close_id, None, None);
18021799
self.enqueue_repair(close_io);
18031800
}
18041801

@@ -3548,11 +3545,12 @@ pub(crate) mod test {
35483545
use super::Downstairs;
35493546
use crate::{
35503547
downstairs::{LiveRepairData, LiveRepairState},
3548+
guest::GuestWork,
35513549
live_repair::ExtentInfo,
35523550
upstairs::UpstairsState,
3553-
ClientId, CrucibleError, DownstairsIO, DsState, ExtentFix, GuestWork,
3554-
GuestWorkId, IOState, IOop, ImpactedAddr, ImpactedBlocks, JobId,
3555-
ReadResponse, ReconcileIO, ReconciliationId, SnapshotDetails,
3551+
ClientId, CrucibleError, DownstairsIO, DsState, ExtentFix, GuestWorkId,
3552+
IOState, IOop, ImpactedAddr, ImpactedBlocks, JobId, ReadResponse,
3553+
ReconcileIO, ReconciliationId, SnapshotDetails,
35563554
};
35573555
use bytes::Bytes;
35583556

upstairs/src/dummy_downstairs_tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ pub(crate) mod protocol_test {
77
use std::sync::Arc;
88
use std::time::Duration;
99

10+
use crate::guest::Guest;
1011
use crate::up_main;
1112
use crate::BlockContext;
1213
use crate::BlockIO;
1314
use crate::Buffer;
1415
use crate::CrucibleError;
15-
use crate::Guest;
1616
use crate::IO_OUTSTANDING_MAX;
1717
use crate::MAX_ACTIVE_COUNT;
1818
use crucible_client_types::CrucibleOpts;
@@ -523,7 +523,7 @@ pub(crate) mod protocol_test {
523523
// Configure our guest without queue backpressure, to speed up tests
524524
// which require triggering a timeout
525525
let (g, mut io) = Guest::new(Some(log.clone()));
526-
io.backpressure_config.queue_max_delay = Duration::ZERO;
526+
io.disable_queue_backpressure();
527527
let guest = Arc::new(g);
528528

529529
let crucible_opts = CrucibleOpts {

0 commit comments

Comments
 (0)