Skip to content

Commit

Permalink
fix(driver): when len is 0, should use buffer cap
Browse files Browse the repository at this point in the history
  • Loading branch information
Sherlock-Holo committed Jul 11, 2024
1 parent bcb531f commit 5fa51af
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
14 changes: 12 additions & 2 deletions compio-driver/src/iocp/op.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,9 +190,14 @@ impl<S> ReadAtBufferPool<S> {
let buffer = buffer_pool.get_buffer().ok_or_else(|| {
io::Error::new(ErrorKind::Other, "buffer ring has no available buffer")
})?;
let len = if len == 0 {
buffer.capacity()
} else {
buffer.capacity().min(len as _)
};

Ok(Self {
read_at: ReadAt::new(fd, offset, buffer.slice(..len as usize)),
read_at: ReadAt::new(fd, offset, buffer.slice(..len)),
})
}
}
Expand Down Expand Up @@ -498,9 +503,14 @@ impl<S> RecvBufferPool<S> {
let buffer = buffer_pool.get_buffer().ok_or_else(|| {
io::Error::new(ErrorKind::Other, "buffer ring has no available buffer")
})?;
let len = if len == 0 {
buffer.capacity()
} else {
buffer.capacity().min(len as _)
};

Ok(Self {
recv: Recv::new(fd, buffer.slice(..len as usize)),
recv: Recv::new(fd, buffer.slice(..len)),
})
}
}
Expand Down
14 changes: 12 additions & 2 deletions compio-driver/src/poll/op.rs
Original file line number Diff line number Diff line change
Expand Up @@ -218,9 +218,14 @@ impl<S> ReadAtBufferPool<S> {
let buffer = buffer_pool.get_buffer().ok_or_else(|| {
io::Error::new(ErrorKind::Other, "buffer ring has no available buffer")
})?;
let len = if len == 0 {
buffer.capacity()
} else {
buffer.capacity().min(len as _)
};

Ok(Self {
read_at: ReadAt::new(fd, offset, buffer.slice(..len as usize)),
read_at: ReadAt::new(fd, offset, buffer.slice(..len)),
})
}
}
Expand Down Expand Up @@ -530,9 +535,14 @@ impl<S> RecvBufferPool<S> {
let buffer = buffer_pool.get_buffer().ok_or_else(|| {
io::Error::new(ErrorKind::Other, "buffer ring has no available buffer")
})?;
let len = if len == 0 {
buffer.capacity()
} else {
buffer.capacity().min(len as _)
};

Ok(Self {
recv: Recv::new(fd, buffer.slice(..len as usize)),
recv: Recv::new(fd, buffer.slice(..len)),
})
}
}
Expand Down

0 comments on commit 5fa51af

Please sign in to comment.