RGWPutObjProcessor *processor;
buffer::list data;
MD5 hash;
- off_t last_off;
- off_t next_off;
+ off_t real_ofs;
size_t bytes_written;
bool multipart;
bool eio;
RGWWriteRequest(CephContext* _cct, RGWUserInfo *_user, RGWFileHandle* _fh,
const std::string& _bname, const std::string& _oname)
: RGWLibContinuedReq(_cct, _user), bucket_name(_bname), obj_name(_oname),
- rgw_fh(_fh), processor(nullptr), last_off(0), next_off(0),
- bytes_written(0), multipart(false), eio(false) {
+ rgw_fh(_fh), processor(nullptr), real_ofs(0), bytes_written(0),
+ multipart(false), eio(false) {
int ret = header_init();
if (ret == 0) {
}
void put_data(off_t off, buffer::list& _bl) {
- if (off && (off != (ofs+1)))
+ if (off != real_ofs) {
eio = true;
- ofs = off;
+ }
data.claim(_bl);
+ real_ofs += data.length();
+ ofs = off; /* consumed in exec_continue() */
}
virtual int exec_start();