From: bobijam Date: Wed, 10 Sep 2008 01:44:10 +0000 (+0000) Subject: Branch HEAD X-Git-Tag: v1_9_61~10 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=b182f9a1075ad0b4c1664ebb9b468f654dc156bf Branch HEAD b=16561 o=oleg.drokin (green) i=johann i=zhenyu.xu (bobijam) Description: Hitting mdc_commit_close() ASSERTION Details : Properly handle request reference release in ll_release_openhandle(). --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index f23e01d..499c535 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -12,18 +12,24 @@ tbd Sun Microsystems, Inc. * RHEL 4 and RHEL 5/SLES 10 clients behaves differently on 'cd' to a removed cwd "./" (refer to Bugzilla 14399). +Severity : major +Bugzilla : 16561 +Description: Hitting mdc_commit_close() ASSERTION +Details : Properly handle request reference release in + ll_release_openhandle(). + Severity : normal Bugzilla : 15975 Frequency : only patchless client Description: add workaround for race between add/remove dentry from hash -Severity : enhancement -Bugzilla : 16845 +Severity : enhancement +Bugzilla : 16845 Description: Allow OST glimpses to return PW locks -Severity : minor -Bugzilla : 16717 -Description: LBUG when llog conf file is full +Severity : minor +Bugzilla : 16717 +Description: LBUG when llog conf file is full Details : When llog bitmap is full, ENOSPC should be returned for plain log. diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 04e3c41..438593b 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -388,7 +388,7 @@ static int ll_intent_file_open(struct file *file, void *lmm, it_open_error(DISP_OPEN_OPEN, itp)) GOTO(out, rc); ll_release_openhandle(file->f_dentry, itp); - GOTO(out_stale, rc); + GOTO(out, rc); } if (rc != 0 || it_open_error(DISP_OPEN_OPEN, itp)) { @@ -405,8 +405,6 @@ static int ll_intent_file_open(struct file *file, void *lmm, rc = ll_prep_inode(&file->f_dentry->d_inode, req, NULL); out: ptlrpc_req_finished(itp->d.lustre.it_data); - -out_stale: it_clear_disposition(itp, DISP_ENQ_COMPLETE); ll_intent_drop_lock(itp); @@ -2357,6 +2355,8 @@ static int join_file(struct inode *head_inode, struct file *head_filp, ldlm_lock_decref(&lockh, oit.d.lustre.it_lock_mode); oit.d.lustre.it_lock_mode = 0; } + ptlrpc_req_finished((struct ptlrpc_request *) oit.d.lustre.it_data); + it_clear_disposition(&oit, DISP_ENQ_COMPLETE); ll_release_openhandle(head_filp->f_dentry, &oit); out: ll_intent_release(&oit); @@ -2495,7 +2495,8 @@ int ll_release_openhandle(struct dentry *dentry, struct lookup_intent *it) inode, och); out: /* this one is in place of ll_file_open */ - ptlrpc_req_finished(it->d.lustre.it_data); + if (it_disposition(it, DISP_ENQ_OPEN_REF)) + ptlrpc_req_finished(it->d.lustre.it_data); it_clear_disposition(it, DISP_ENQ_OPEN_REF); RETURN(rc); }