[sheepdog] [PATCH] sheep/http: remove the kv_update_object

Liu Yuan namei.unix at gmail.com
Thu Dec 19 11:45:41 CET 2013


On Thu, Dec 19, 2013 at 06:23:13PM +0800, Robin Dong wrote:
> Reviewed-by: Robin Dong <sanbai at taobao.com>
> 
> 
> 2013/12/19 Liu Yuan <namei.unix at gmail.com>
> 
> > Both swift and s3 don't have API to update the existing object, it purely
> > overwrite the whole objects. So no need to maintain this unused code.
> >
> > Signed-off-by: Liu Yuan <namei.unix at gmail.com>
> > ---
> >  sheep/http/http.h |    2 --
> >  sheep/http/kv.c   |   84
> > -----------------------------------------------------
> >  2 files changed, 86 deletions(-)
> >
> > diff --git a/sheep/http/http.h b/sheep/http/http.h
> > index e541d0e..a2f404c 100644
> > --- a/sheep/http/http.h
> > +++ b/sheep/http/http.h
> > @@ -139,8 +139,6 @@ int kv_create_object(struct http_request *req, const
> > char *account,
> >                      const char *bucket, const char *object);
> >  int kv_read_object(struct http_request *req, const char *account,
> >                    const char *bucket, const char *object);
> > -int kv_update_object(struct http_request *req, const char *bucket,
> > -                    const char *object);
> >  int kv_delete_object(struct http_request *req, const char *account,
> >                      const char *bucket, const char *object);
> >  int kv_list_objects(struct http_request *req, const char *account,
> > diff --git a/sheep/http/kv.c b/sheep/http/kv.c
> > index d94608a..7a826f7 100644
> > --- a/sheep/http/kv.c
> > +++ b/sheep/http/kv.c
> > @@ -1239,90 +1239,6 @@ out:
> >         return ret;
> >  }
> >
> > -static int do_kv_update_object(struct http_request *req, const char
> > *obj_name,
> > -                              struct kv_onode *obj, uint32_t vid,
> > -                              uint32_t idx, size_t size)
> > -{
> > -       uint64_t oid = vid_to_data_oid(vid, idx);
> > -       int ret;
> > -
> > -       ret = sd_read_object(oid, (char *)&obj->hdr, sizeof(obj->hdr), 0);
> > -       switch (ret) {
> > -       case SD_RES_SUCCESS:
> > -               break;
> > -       case SD_RES_NO_VDI:
> > -               sd_info("object %s doesn't exist", obj_name);
> > -               http_response_header(req, NOT_FOUND);
> > -               return -1;
> > -       default:
> > -               sd_err("failed to read %s, %s", req->uri,
> > sd_strerror(ret));
> > -               http_response_header(req, INTERNAL_SERVER_ERROR);
> > -               return -1;
> > -       }
> > -
> > -       if (strcmp(obj->hdr.name, obj_name) == 0) {
> > -               struct timeval tv;
> > -
> > -               gettimeofday(&tv, NULL);
> > -               obj->hdr.mtime = (uint64_t) tv.tv_sec << 32 | tv.tv_usec *
> > 1000;
> > -               obj->hdr.size = size;
> > -
> > -               ret = sd_write_object(oid, (char *)obj,
> > -                                     sizeof(obj->hdr) + obj->hdr.size,
> > -                                     0, false);
> > -               if (ret == SD_RES_SUCCESS)
> > -                       http_response_header(req, ACCEPTED);
> > -               else {
> > -                       sd_err("failed to update object, %" PRIx64, oid);
> > -                       http_response_header(req, INTERNAL_SERVER_ERROR);
> > -                       return -1;
> > -               }
> > -       }
> > -
> > -       return 0;
> > -}
> > -
> > -int kv_update_object(struct http_request *req, const char *bucket,
> > -                    const char *object)
> > -{
> > -       struct kv_onode *obj;
> > -       int ret;
> > -       uint64_t hval;
> > -       uint32_t vid;
> > -       ssize_t size;
> > -
> > -       ret = lookup_bucket(req, bucket, &vid);
> > -       if (ret < 0)
> > -               return ret;
> > -
> > -       obj = xzalloc(sizeof(*obj));
> > -
> > -       /* TODO: support multi parted object for large object */
> > -       size = http_request_read(req, obj->data, sizeof(obj->data));
> > -       if (size < 0) {
> > -               sd_err("%s: bucket %s, object %s", sd_strerror(ret),
> > -                      bucket, object);
> > -               http_response_header(req, INTERNAL_SERVER_ERROR);
> > -               return -1;
> > -       }
> > -
> > -       hval = sd_hash(object, strlen(object));
> > -       for (int i = 0; i < MAX_DATA_OBJS; i++) {
> > -               uint32_t idx = (hval + i) % MAX_DATA_OBJS;
> > -
> > -               do_kv_update_object(req, object, obj, vid, idx, size);
> > -               if (req->status != UNKNOWN) {
> > -                       free(obj);
> > -                       return 0;
> > -               }
> > -       }
> > -
> > -       free(obj);
> > -
> > -       http_response_header(req, NOT_FOUND);
> > -       return -1;
> > -}
> > -
> >  static int do_kv_delete_object(struct http_request *req, const char
> > *obj_name,
> >                                uint32_t vid, uint32_t idx)
> >  {

Applied

Yuan



More information about the sheepdog mailing list