173
177
int set_attr(void *ctx, rgw_obj& obj, const char *name, bufferlist& bl);
174
178
int put_obj_meta(void *ctx, rgw_obj& obj, uint64_t size, time_t *mtime,
175
179
map<std::string, bufferlist>& attrs, RGWObjCategory category, bool exclusive,
176
map<std::string, bufferlist>* rmattrs);
180
map<std::string, bufferlist>* rmattrs, const bufferlist *data);
178
182
int put_obj_data(void *ctx, rgw_obj& obj, const char *data,
179
off_t ofs, size_t len);
183
off_t ofs, size_t len, bool exclusive);
181
185
int get_obj(void *ctx, void **handle, rgw_obj& obj, char **data, off_t ofs, off_t end);
183
int obj_stat(void *ctx, rgw_obj& obj, uint64_t *psize, time_t *pmtime, map<string, bufferlist> *attrs);
187
int obj_stat(void *ctx, rgw_obj& obj, uint64_t *psize, time_t *pmtime, map<string, bufferlist> *attrs, bufferlist *first_chunk);
185
189
int delete_obj(void *ctx, rgw_obj& obj, bool sync);
279
283
template <class T>
280
284
int RGWCache<T>::put_obj_meta(void *ctx, rgw_obj& obj, uint64_t size, time_t *mtime,
281
285
map<std::string, bufferlist>& attrs, RGWObjCategory category, bool exclusive,
282
map<std::string, bufferlist>* rmattrs)
286
map<std::string, bufferlist>* rmattrs, const bufferlist *data)
284
288
rgw_bucket bucket;
291
295
info.xattrs = attrs;
293
297
info.flags = CACHE_FLAG_XATTRS;
300
info.flags |= CACHE_FLAG_DATA;
295
int ret = T::put_obj_meta(ctx, obj, size, mtime, attrs, category, exclusive, rmattrs);
303
int ret = T::put_obj_meta(ctx, obj, size, mtime, attrs, category, exclusive, rmattrs, data);
297
305
string name = normal_name(bucket, oid);
311
319
template <class T>
312
320
int RGWCache<T>::put_obj_data(void *ctx, rgw_obj& obj, const char *data,
313
off_t ofs, size_t len)
321
off_t ofs, size_t len, bool exclusive)
315
323
rgw_bucket bucket;
328
336
info.flags = CACHE_FLAG_DATA;
330
int ret = T::put_obj_data(ctx, obj, data, ofs, len);
338
int ret = T::put_obj_data(ctx, obj, data, ofs, len, exclusive);
332
340
string name = normal_name(bucket, oid);
346
354
template <class T>
347
int RGWCache<T>::obj_stat(void *ctx, rgw_obj& obj, uint64_t *psize, time_t *pmtime, map<string, bufferlist> *attrs)
355
int RGWCache<T>::obj_stat(void *ctx, rgw_obj& obj, uint64_t *psize, time_t *pmtime, map<string, bufferlist> *attrs, bufferlist *first_chunk)
349
357
rgw_bucket bucket;
351
359
normalize_bucket_and_obj(obj.bucket, obj.object, bucket, oid);
352
360
if (bucket.name[0] != '.')
353
return T::obj_stat(ctx, obj, psize, pmtime, attrs);
361
return T::obj_stat(ctx, obj, psize, pmtime, attrs, first_chunk);
355
363
string name = normal_name(bucket, oid);
367
375
mtime = info.meta.mtime;
370
r = T::obj_stat(ctx, obj, &size, &mtime, &info.xattrs);
378
r = T::obj_stat(ctx, obj, &size, &mtime, &info.xattrs, first_chunk);
372
380
if (r == -ENOENT) {