On Monday 20 October 2014 at 13:43:50, Ivan Shapovalov wrote: > On Saturday 18 October 2014 at 19:47:29, Edward Shishkin wrote: > > On 08/18/2014 04:14 PM, Ivan Shapovalov wrote: > > > - move all grab_enabled checks and modifications into reiser4_grab_space(); > > > - only disable grab if not BA_FORCE; > > > - do not re-enable grab before doing second attempt in BA_CAN_COMMIT sequence > > > (feels hackish and is unneeded after the first change). > > > > > > Signed-off-by: Ivan Shapovalov <intelfx100@xxxxxxxxx> > > > --- > > > fs/reiser4/block_alloc.c | 22 ++++++++++++---------- > > > 1 file changed, 12 insertions(+), 10 deletions(-) > > > > > > diff --git a/fs/reiser4/block_alloc.c b/fs/reiser4/block_alloc.c > > > index 7f9f910..a30f7b9 100644 > > > --- a/fs/reiser4/block_alloc.c > > > +++ b/fs/reiser4/block_alloc.c > > > @@ -270,12 +270,6 @@ reiser4_grab(reiser4_context * ctx, __u64 count, reiser4_ba_flags_t flags) > > > > > > assert("vs-1276", ctx == get_current_context()); > > > > > > - /* Do not grab anything on ro-mounted fs. */ > > > - if (rofs_super(ctx->super)) { > > > - ctx->grab_enabled = 0; > > > - return 0; > > > - } > > > - > > > sbinfo = get_super_private(ctx->super); > > > > > > spin_lock_reiser4_super(sbinfo); > > > @@ -300,9 +294,6 @@ reiser4_grab(reiser4_context * ctx, __u64 count, reiser4_ba_flags_t flags) > > > > > > assert("nikita-2986", reiser4_check_block_counters(ctx->super)); > > > > > > - /* disable grab space in current context */ > > > - ctx->grab_enabled = 0; > > > - > > > unlock_and_ret: > > > spin_unlock_reiser4_super(sbinfo); > > > > > > @@ -321,6 +312,12 @@ int reiser4_grab_space(__u64 count, reiser4_ba_flags_t flags) > > > if (!(flags & BA_FORCE) && !is_grab_enabled(ctx)) > > > return 0; > > > > > > + /* Do not grab anything on ro-mounted fs. */ > > > + if (rofs_super(ctx->super)) { > > > + ctx->grab_enabled = 0; > > > + return 0; > > > + } > > > + > > > ret = reiser4_grab(ctx, count, flags); > > > if (ret == -ENOSPC) { > > > > > > @@ -328,10 +325,15 @@ int reiser4_grab_space(__u64 count, reiser4_ba_flags_t flags) > > > present */ > > > if (flags & BA_CAN_COMMIT) { > > > txnmgr_force_commit_all(ctx->super, 0); > > > - ctx->grab_enabled = 1; > > > ret = reiser4_grab(ctx, count, flags); > > > } > > > } > > > + > > > + if (!(flags & BA_FORCE) && (ret == 0)) { > > > > > > Hmm, but we disabled it unconditionally in reiser4_grab(). > > Not sure, if this is equivalent... > > Yes, you are right. I can't recall any particular justification for this > change... I've apparently "rediscovered" the justification. See my response to PATCHv2 2/3... -- Ivan Shapovalov / intelfx / > so it should probably say > > if (ret == 0) { > > > > + /* disable grab space in current context */ > > > + ctx->grab_enabled = 0; > > > + } > >
Attachment:
signature.asc
Description: This is a digitally signed message part.