From: Sage Weil Date: Sat, 29 Jun 2013 01:15:23 +0000 (-0700) Subject: osd: set maximum object attr size X-Git-Tag: v0.67-rc1~165^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=09e374f1629cf1cb89a3812d17a9ca3048c07922;p=ceph.git osd: set maximum object attr size Make a well-defined maximum size of an object attribute. Since Linus has a 64KB limit, and that is what we normally use to back this, use that as the limit. This means that even when leveldb is backing large xattrs (as ext4 users must do) we will return EFBIG on >64KB setxattr attempts. Signed-off-by: Sage Weil --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 9eee57af9ebb..775d54cac487 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -489,6 +489,7 @@ OPTION(osd_recovery_op_priority, OPT_INT, 10) OPTION(osd_mon_shutdown_timeout, OPT_DOUBLE, 5) OPTION(osd_max_object_size, OPT_U64, 100*1024L*1024L*1024L) // OSD's maximum object size +OPTION(osd_max_attr_size, OPT_U64, 65536) OPTION(filestore, OPT_BOOL, false) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 4ce0404740c8..ada720ed36b3 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -2758,6 +2758,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_SETXATTR: { + if (op.xattr.value_len > g_conf->osd_max_attr_size) { + result = -EFBIG; + break; + } if (!obs.exists) { t.touch(coll, soid); ctx->delta_stats.num_objects++;