rgw nfs: fix write continuations

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
This commit is contained in:
Matt Benjamin 2016-08-07 18:39:33 -04:00
parent d74d46170d
commit b4d079f2b5

View File

@ -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();