From: Matt Benjamin Date: Sun, 7 Aug 2016 22:39:33 +0000 (-0400) Subject: rgw nfs: fix write continuations X-Git-Tag: ses5-milestone5~196^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F10611%2Fhead;p=ceph.git rgw nfs: fix write continuations Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/rgw_file.h b/src/rgw/rgw_file.h index cf2897c6eec..b9718c167f4 100644 --- a/src/rgw/rgw_file.h +++ b/src/rgw/rgw_file.h @@ -1935,8 +1935,7 @@ public: 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; @@ -1944,8 +1943,8 @@ public: 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) { @@ -2018,10 +2017,12 @@ public: } 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();