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... so it should probably say if (ret == 0) { -- Ivan Shapovalov / intelfx / > > + /* disable grab space in current context */ > > + ctx->grab_enabled = 0; > > + } >
Attachment:
signature.asc
Description: This is a digitally signed message part.