osd: check for valid snapc _before_ doing op work

Check this early to avoid wasting effort, or causing side-effects from
do_osd_op_effects().

Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
Sage Weil 2012-02-10 16:47:33 -08:00
parent a0caa851ed
commit 4834c4c746

View File

@ -2680,6 +2680,12 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx)
bool head_existed = ctx->obs->exists;
// valid snap context?
if (!ctx->snapc.is_valid()) {
dout(10) << " invalid snapc " << ctx->snapc << dendl;
return -EINVAL;
}
// prepare the actual mutation
int result = do_osd_ops(ctx, ctx->ops);
if (result < 0)
@ -2697,13 +2703,6 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx)
// there was a modification!
// valid snap context?
if (!ctx->snapc.is_valid()) {
dout(10) << " invalid snapc " << ctx->snapc << dendl;
return -EINVAL;
}
make_writeable(ctx);
if (ctx->user_modify) {