223 if (aiop_->Result<0 || nio_->sfsAio.aio_nbytes==0)
234 ssize_t nread = nio_->Result;
241 char *p = (
char*)nio_->sfsAio.aio_buf;
244 const ssize_t rret = fp_->successor_->Read(&p[nread], nio_->sfsAio.aio_offset+nread, toread);
245 if (rret == 0)
break;
248 aiop_->Result = rret;
256 aiop_->Result = nread;
261 puret = fp_->Pages()->FetchRange(fp_->successor_,
262 (
void *)nio_->sfsAio.aio_buf,
263 (off_t)nio_->sfsAio.aio_offset,
264 (
size_t)nio_->Result,
265 (uint32_t*)nio_->cksVec,
271 puret = fp_->Pages()->VerifyRange(fp_->successor_,
272 (
void *)nio_->sfsAio.aio_buf,
273 (off_t)nio_->sfsAio.aio_offset,
274 (
size_t)nio_->Result,
279 aiop_->Result = puret;
308 fp_->Pages()->LockTrackinglen(nio_->rg_, (off_t)aiop_->sfsAio.aio_offset,
309 (off_t)(aiop_->sfsAio.aio_offset+aiop_->sfsAio.aio_nbytes),
false);
312 puret = fp_->Pages()->StoreRange(fp_->successor_,
313 (
const void *)aiop_->sfsAio.aio_buf, (off_t)aiop_->sfsAio.aio_offset,
314 (
size_t)aiop_->sfsAio.aio_nbytes, (uint32_t*)aiop_->cksVec, nio_->pgOpts_, nio_->rg_);
319 puret = fp_->Pages()->UpdateRange(fp_->successor_,
320 (
const void *)aiop_->sfsAio.aio_buf, (off_t)aiop_->sfsAio.aio_offset,
321 (
size_t)aiop_->sfsAio.aio_nbytes, nio_->rg_);
325 nio_->rg_.ReleaseAll();
327 aiop_->Result = puret;
333 const int ret = fp_->successor_->Write(nio_);
336 nio_->rg_.ReleaseAll();
351 nio_->rg_.ReleaseAll();
360 ssize_t towrite = nio_->sfsAio.aio_nbytes - nio_->Result;
361 ssize_t nwritten = nio_->Result;
362 const char *p = (
const char*)nio_->sfsAio.aio_buf;
365 const ssize_t wret = fp_->successor_->Write(&p[nwritten], nio_->sfsAio.aio_offset+nwritten, towrite);
368 aiop_->Result = wret;
369 nio_->rg_.ReleaseAll();
378 aiop_->Result = nwritten;