code: func (s *storageImpl) GetReader(c context.Context, ref *api.ObjectRef) (r gs.Reader, err error) {
  	defer func() { err = grpcutil.GRPCifyAndLogErr(c, err) }()
  
  	if err = common.ValidateObjectRef(ref, common.KnownHash); err != nil {
  		return nil, errors.Annotate(err, "bad ref").Err()
  	}
  
  	cfg, err := s.settings(c)
  	if err != nil {
  		return nil, err
  	}
  
  	r, err = s.getGS(c).Reader(c, cfg.ObjectPath(ref), 0)
  	if err != nil {
  		ann := errors.Annotate(err, "can't read the object")
  		if gs.StatusCode(err) == http.StatusNotFound {
  			ann.Tag(grpcutil.NotFoundTag)
  		}
  		return nil, ann.Err()
  	}
  	return r, nil
  }
docs: // GetReader is part of StorageServer interface.