ds_inhibit: Make sure to flush writes before dropping the files

This commit is contained in:
Vicki Pfau 2024-04-16 18:41:55 -07:00
parent f004035f7f
commit e3fc9ce021

View file

@ -10,7 +10,7 @@ use tokio::fs;
use tokio_stream::StreamExt; use tokio_stream::StreamExt;
use tracing::{debug, error, info, warn}; use tracing::{debug, error, info, warn};
use crate::{path, Service}; use crate::{path, write_synced, Service};
struct HidNode { struct HidNode {
id: u32, id: u32,
@ -142,9 +142,9 @@ impl HidNode {
async fn inhibit(&self) -> Result<()> { async fn inhibit(&self) -> Result<()> {
let mut res = Ok(()); let mut res = Ok(());
for node in self.get_nodes().await?.into_iter() { for node in self.get_nodes().await?.into_iter() {
if let Err(err) = fs::write(node, "1\n").await { if let Err(err) = write_synced(node, b"1\n").await {
error!("Encountered error inhibiting: {err}"); error!("Encountered error inhibiting: {err}");
res = Err(err.into()); res = Err(err);
} }
} }
res res
@ -153,9 +153,9 @@ impl HidNode {
async fn uninhibit(&self) -> Result<()> { async fn uninhibit(&self) -> Result<()> {
let mut res = Ok(()); let mut res = Ok(());
for node in self.get_nodes().await?.into_iter() { for node in self.get_nodes().await?.into_iter() {
if let Err(err) = fs::write(node, "0\n").await { if let Err(err) = write_synced(node, b"0\n").await {
error!("Encountered error inhibiting: {err}"); error!("Encountered error inhibiting: {err}");
res = Err(err.into()); res = Err(err);
} }
} }
res res