mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-09 04:19:10 -04:00
Fix #67: dwarfs I/O hangs if call to to fuse_reply_iov fails
This commit is contained in:
parent
14654b6f38
commit
075194067a
@ -329,16 +329,21 @@ void op_read(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off,
|
||||
iovec_read_buf buf;
|
||||
ssize_t rv = userdata->fs.readv(ino, buf, size, off);
|
||||
|
||||
// std::cerr << ">>> " << rv << std::endl;
|
||||
LOG_DEBUG << "readv(" << ino << ", " << size << ", " << off << ") -> "
|
||||
<< rv << " [size = " << buf.buf.size() << "]";
|
||||
|
||||
if (rv >= 0) {
|
||||
fuse_reply_iov(req, buf.buf.empty() ? nullptr : &buf.buf[0],
|
||||
buf.buf.size());
|
||||
int frv = fuse_reply_iov(req, buf.buf.empty() ? nullptr : &buf.buf[0],
|
||||
buf.buf.size());
|
||||
|
||||
return;
|
||||
if (frv == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
err = -frv;
|
||||
} else {
|
||||
err = -rv;
|
||||
}
|
||||
|
||||
err = -rv;
|
||||
} else {
|
||||
err = EIO;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user