// write a large extent
char buf[len];
memset(buf, 1, sizeof(buf));
- ::lseek(fd, off, SEEK_SET);
- int r = safe_write(fd, buf, sizeof(buf));
+ int r = ::lseek(fd, off, SEEK_SET);
+ if (r < 0) {
+ r = -errno;
+ derr << "_test_fiemap failed to lseek " << fn << ": " << cpp_strerror(r) << dendl;
+ TEMP_FAILURE_RETRY(::close(fd));
+ return r;
+ }
+ r = safe_write(fd, buf, sizeof(buf));
if (r < 0) {
derr << "_test_fiemap failed to write to " << fn << ": " << cpp_strerror(r) << dendl;
+ TEMP_FAILURE_RETRY(::close(fd));
return r;
}
}