Skip to content

Commit a0c2a11

Browse files
committed
Avoid cloning read data
1 parent ace10f4 commit a0c2a11

File tree

1 file changed

+31
-32
lines changed

1 file changed

+31
-32
lines changed

upstairs/src/downstairs.rs

+31-32
Original file line numberDiff line numberDiff line change
@@ -2823,8 +2823,7 @@ impl Downstairs {
28232823
read_response_hashes: Vec<Option<u64>>,
28242824
up_state: &UpstairsState,
28252825
) -> Result<(), CrucibleError> {
2826-
let (upstairs_id, session_id, ds_id, read_data, extent_info) = match &m
2827-
{
2826+
let (upstairs_id, session_id, ds_id, read_data, extent_info) = match m {
28282827
Message::WriteAck {
28292828
upstairs_id,
28302829
session_id,
@@ -2833,10 +2832,10 @@ impl Downstairs {
28332832
} => {
28342833
cdt::ds__write__io__done!(|| (job_id.0, client_id.get()));
28352834
(
2836-
*upstairs_id,
2837-
*session_id,
2838-
*job_id,
2839-
result.clone().map(|_| Vec::new()),
2835+
upstairs_id,
2836+
session_id,
2837+
job_id,
2838+
result.map(|_| Vec::new()),
28402839
None,
28412840
)
28422841
}
@@ -2851,10 +2850,10 @@ impl Downstairs {
28512850
client_id.get()
28522851
));
28532852
(
2854-
*upstairs_id,
2855-
*session_id,
2856-
*job_id,
2857-
result.clone().map(|_| Vec::new()),
2853+
upstairs_id,
2854+
session_id,
2855+
job_id,
2856+
result.map(|_| Vec::new()),
28582857
None,
28592858
)
28602859
}
@@ -2866,10 +2865,10 @@ impl Downstairs {
28662865
} => {
28672866
cdt::ds__flush__io__done!(|| (job_id.0, client_id.get()));
28682867
(
2869-
*upstairs_id,
2870-
*session_id,
2871-
*job_id,
2872-
result.clone().map(|_| Vec::new()),
2868+
upstairs_id,
2869+
session_id,
2870+
job_id,
2871+
result.map(|_| Vec::new()),
28732872
None,
28742873
)
28752874
}
@@ -2880,7 +2879,7 @@ impl Downstairs {
28802879
responses,
28812880
} => {
28822881
cdt::ds__read__io__done!(|| (job_id.0, client_id.get()));
2883-
(*upstairs_id, *session_id, *job_id, responses.clone(), None)
2882+
(upstairs_id, session_id, job_id, responses, None)
28842883
}
28852884

28862885
Message::ExtentLiveCloseAck {
@@ -2890,7 +2889,7 @@ impl Downstairs {
28902889
result,
28912890
} => {
28922891
// Take the result from the live close and store it away.
2893-
let extent_info = match result {
2892+
let extent_info = match &result {
28942893
Ok((g, f, d)) => {
28952894
debug!(
28962895
self.log,
@@ -2913,10 +2912,10 @@ impl Downstairs {
29132912
};
29142913
cdt::ds__close__done!(|| (job_id.0, client_id.get()));
29152914
(
2916-
*upstairs_id,
2917-
*session_id,
2918-
*job_id,
2919-
result.clone().map(|_| Vec::new()),
2915+
upstairs_id,
2916+
session_id,
2917+
job_id,
2918+
result.map(|_| Vec::new()),
29202919
extent_info,
29212920
)
29222921
}
@@ -2929,10 +2928,10 @@ impl Downstairs {
29292928
cdt::ds__noop__done!(|| (job_id.0, client_id.get()));
29302929
cdt::ds__reopen__done!(|| (job_id.0, client_id.get()));
29312930
(
2932-
*upstairs_id,
2933-
*session_id,
2934-
*job_id,
2935-
result.clone().map(|_| Vec::new()),
2931+
upstairs_id,
2932+
session_id,
2933+
job_id,
2934+
result.map(|_| Vec::new()),
29362935
None,
29372936
)
29382937
}
@@ -2944,10 +2943,10 @@ impl Downstairs {
29442943
} => {
29452944
cdt::ds__repair__done!(|| (job_id.0, client_id.get()));
29462945
(
2947-
*upstairs_id,
2948-
*session_id,
2949-
*job_id,
2950-
result.clone().map(|_| Vec::new()),
2946+
upstairs_id,
2947+
session_id,
2948+
job_id,
2949+
result.map(|_| Vec::new()),
29512950
None,
29522951
)
29532952
}
@@ -2971,15 +2970,15 @@ impl Downstairs {
29712970
// downstairs/src/lib.rs) where the Upstairs **does** need to
29722971
// act: when a repair job in the Downstairs fails, that
29732972
// Downstairs aborts itself and reconnects.
2974-
if let Some(job) = self.ds_active.get(job_id) {
2973+
if let Some(job) = self.ds_active.get(&job_id) {
29752974
if job.work.is_repair() {
29762975
// Return the error and let the previously written error
29772976
// processing code work.
29782977
cdt::ds__repair__done!(|| (job_id.0, client_id.get()));
29792978
(
2980-
*upstairs_id,
2981-
*session_id,
2982-
*job_id,
2979+
upstairs_id,
2980+
session_id,
2981+
job_id,
29832982
Err(error.clone()),
29842983
None,
29852984
)

0 commit comments

Comments
 (0)