From 4a7468c82fdb758fb6df021bbf5da65edce3bfd2 Mon Sep 17 00:00:00 2001 From: huanghua Date: Fri, 14 Jul 2006 11:39:48 +0000 Subject: [PATCH] (1) fid is now allocated by client. (2) transaction number is updated in mdt_intent_policy if request is an intent lock; --- lustre/mdc/mdc_locks.c | 20 +++++++++++++++++--- lustre/mdt/mdt_handler.c | 3 ++- lustre/utils/loadmod_all.sh | 42 +++++++++++++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 13 deletions(-) diff --git a/lustre/mdc/mdc_locks.c b/lustre/mdc/mdc_locks.c index f1b9608..3835584 100644 --- a/lustre/mdc/mdc_locks.c +++ b/lustre/mdc/mdc_locks.c @@ -126,12 +126,24 @@ int mdc_set_lock_data(struct obd_export *exp, __u64 *lockh, void *data) if (lock->l_ast_data && lock->l_ast_data != data) { struct inode *new_inode = data; struct inode *old_inode = lock->l_ast_data; +/* FIXME: This is commented out by huanghua@clusterfs.com, + * if anything wrong, please restore that */ +/* LASSERTF(old_inode->i_state & I_FREEING, "Found existing inode %p/%lu/%u state %lu in lock: " "setting data to %p/%lu/%u\n", old_inode, old_inode->i_ino, old_inode->i_generation, old_inode->i_state, new_inode, new_inode->i_ino, new_inode->i_generation); +*/ + if (!(old_inode->i_state & I_FREEING)) { + CERROR("Found existing inode %p/%lu/%u state %lu in lock: " + "setting data to %p/%lu/%u\n", old_inode, + old_inode->i_ino, old_inode->i_generation, + old_inode->i_state, + new_inode, new_inode->i_ino, new_inode->i_generation); + iput(old_inode); + } } #endif lock->l_ast_data = data; @@ -675,9 +687,11 @@ int mdc_intent_lock(struct obd_export *exp, struct md_op_data *op_data, /* If we were revalidating a fid/name pair, mark the intent in * case we fail and get called again from lookup */ - if (fid_is_sane(&op_data->fid2) && - !it_disposition(it, DISP_OPEN_CREATE)) { - it_set_disposition(it, DISP_ENQ_COMPLETE); + if (fid_is_sane(&op_data->fid2)){ +/* FIXME: This is commented out by huanghua@clusterfs.com, + * if anything wrong, please restore that */ +// !it_disposition(it, DISP_OPEN_CREATE)) { +// it_set_disposition(it, DISP_ENQ_COMPLETE); /* Also: did we find the same inode? */ if (memcmp(&op_data->fid2, &mdt_body->fid1, sizeof(op_data->fid2))) RETURN(-ESTALE); diff --git a/lustre/mdt/mdt_handler.c b/lustre/mdt/mdt_handler.c index 17165b8..d60f427 100644 --- a/lustre/mdt/mdt_handler.c +++ b/lustre/mdt/mdt_handler.c @@ -1068,7 +1068,8 @@ static int mdt_req_handle(struct mdt_thread_info *info, /* If we're DISCONNECTing, the mdt_export_data is already freed */ if (h->mh_opc != MDS_DISCONNECT && - h->mh_opc != MDS_READPAGE) { + h->mh_opc != MDS_READPAGE && + h->mh_opc != LDLM_ENQUEUE) { /* FIXME: fake untill journal callback is OK.*/ mdt_update_last_transno(info, result); } diff --git a/lustre/utils/loadmod_all.sh b/lustre/utils/loadmod_all.sh index f7e254d..4459822 100755 --- a/lustre/utils/loadmod_all.sh +++ b/lustre/utils/loadmod_all.sh @@ -3,19 +3,42 @@ dmesg -c >/dev/null dmesg -n 8 -modprobe mgs -modprobe fid -modprobe fld -modprobe mgc + +modprobe mds modprobe osd -modprobe ost modprobe obdfilter -modprobe mdd -modprobe cmm -modprobe mdt -modprobe mds +modprobe ost +modprobe mgs +modprobe lov +modprobe ptlrpc +modprobe obdecho +modprobe llite +modprobe mgc +modprobe ldiskfs +modprobe quotafmt_test modprobe osc +modprobe mdt +modprobe lquota +modprobe quotactl_test +modprobe quotacheck_test +modprobe cmm modprobe mdc +modprobe fsfilt_ldiskfs +modprobe lvfs +modprobe llog_test +modprobe obdclass +modprobe mdd +modprobe fld +modprobe fid +modprobe lmv +modprobe libcfs +modprobe pingcli +modprobe spingsrv +modprobe pingsrv +modprobe spingcli +modprobe lnet +modprobe ksocklnd + HOST=`hostname` echo -1 >/proc/sys/lnet/debug @@ -24,3 +47,4 @@ echo "/r/tmp/$HOST.debug" >/proc/sys/lnet/daemon_file # To generate gdb debug file: rm -f /r/tmp/ogdb-`hostname` ./lctl modules > /r/tmp/ogdb-`hostname` + -- 1.8.3.1