[LU-5413] mdd_write_lock leaks Created: 24/Jul/14  Updated: 14/Jun/18  Resolved: 30/Oct/14

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.7.0
Fix Version/s: Lustre 2.7.0

Type: Bug Priority: Minor
Reporter: John Hammond Assignee: John Hammond
Resolution: Fixed Votes: 0
Labels: dt, fault, mdd

Issue Links:
Duplicate
duplicates LU-5412 mdd_unlink() may pass a NULL object t... Closed
Related
Severity: 3
Rank (Obsolete): 15054

 Description   

In mdd_open() and mdd_migrate_update_name() there are error paths that leak a write lock on an object.

static int mdd_open(const struct lu_env *env, struct md_object *obj,
                    int flags)
{
        struct mdd_object *mdd_obj = md2mdd_obj(obj);
        struct lu_attr *attr = MDD_ENV_VAR(env, cattr);
        int rc = 0;

        mdd_write_lock(env, mdd_obj, MOR_TGT_CHILD);

        rc = mdd_la_get(env, mdd_obj, attr, BYPASS_CAPA);
        if (rc)
                RETURN(rc);

        rc = mdd_open_sanity_check(env, mdd_obj, attr, flags);
        if (rc == 0)
                mdd_obj->mod_count++;

        mdd_write_unlock(env, mdd_obj);
        return rc;
}

mdd_migrate_update_name()
        mdd_write_lock(env, mdd_sobj, MOR_SRC_CHILD);
        mdo_ref_del(env, mdd_sobj, handle);
        if (is_dir)
                mdo_ref_del(env, mdd_sobj, handle);

        /* Get the attr again after ref_del */
        rc = mdd_la_get(env, mdd_sobj, so_attr,
        		mdd_object_capa(env, mdd_sobj));
        if (rc != 0)
        	GOTO(stop_trans, rc);
        ma->ma_attr = *so_attr;
        ma->ma_valid |= MA_INODE;
        rc = mdd_finish_unlink(env, mdd_sobj, ma, mdd_pobj, lname, handle);
        if (rc != 0)
                GOTO(stop_trans, rc);

        rc = mdd_attr_set_internal(env, mdd_pobj, p_la, handle, 0);
        if (rc != 0)
                GOTO(stop_trans, rc);

        mdd_write_unlock(env, mdd_sobj);

stop_trans:
        mdd_trans_stop(env, mdd, rc, handle);

        RETURN(rc);
}

This was found through DT API fault injection.



 Comments   
Comment by John Hammond [ 25/Jul/14 ]

Please see http://review.whamcloud.com/11228 which also addresses LU-5412.

Comment by Jodi Levi (Inactive) [ 30/Oct/14 ]

Patch landed to Master.

Generated at Sat Feb 10 01:51:17 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.