From: wangdi Date: Fri, 20 May 2005 15:52:00 +0000 (+0000) Subject: Branch: HEAD X-Git-Tag: 1.4.10~1124 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=be17968c3cdc552988bf3492239673cf301d398d;p=fs%2Flustre-release.git Branch: HEAD some fixes about write back cache. 1)cleanup smfs_init_inode_info 2)miss spin_unlock in class_find_client_obd 3)remove PLG_ALL flags of OBJECTS and LOGS dir on MDS 4)some minor fix in cmobd.sh for WB cache --- diff --git a/lustre/cmobd/cm_obd.c b/lustre/cmobd/cm_obd.c index ab2a306..d46d919 100644 --- a/lustre/cmobd/cm_obd.c +++ b/lustre/cmobd/cm_obd.c @@ -132,8 +132,8 @@ static int cmobd_setup(struct obd_device *obd, obd_count len, void *buf) RETURN(-EINVAL); } - obd_str2uuid(&master_uuid, lustre_cfg_buf(lcfg, 1)); - obd_str2uuid(&cache_uuid, lustre_cfg_buf(lcfg, 2)); + obd_str2uuid(&master_uuid, lustre_cfg_string(lcfg, 1)); + obd_str2uuid(&cache_uuid, lustre_cfg_string(lcfg, 2)); /* getting master obd */ cmobd->master_obd = find_master_obd(obd, &master_uuid); diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index 34c3257..1843c3a 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -2083,7 +2083,7 @@ static int lov_set_info(struct obd_export *exp, obd_count keylen, RETURN(-EINVAL); for (i = 0; i < lov->desc.ld_tgt_count; i++) { /* initialize all OSCs, even inactive ones */ - + err = obd_set_info(lov->tgts[i].ltd_exp, keylen, key, sizeof(obd_id), ((obd_id*)val) + i); diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c index 4a7d1c6..e0ffba5 100644 --- a/lustre/obdclass/genops.c +++ b/lustre/obdclass/genops.c @@ -289,8 +289,10 @@ struct obd_device *class_find_client_obd(struct obd_uuid *tgt_uuid, struct obd_import *imp = cli->cl_import; if (tgt_uuid == NULL) { LASSERT(grp_uuid); - if (obd_uuid_equals(grp_uuid, &obd->obd_uuid)) + if (obd_uuid_equals(grp_uuid, &obd->obd_uuid)) { + spin_unlock(&obd_dev_lock); return obd; + } continue; } if (obd_uuid_equals(tgt_uuid, &imp->imp_target_uuid) && diff --git a/lustre/smfs/inode.c b/lustre/smfs/inode.c index f31852d..698773f 100644 --- a/lustre/smfs/inode.c +++ b/lustre/smfs/inode.c @@ -41,61 +41,63 @@ static void smfs_init_inode_info(struct inode *inode, void *opaque) { - if (!I2SMI(inode)) { - struct inode *cache_inode = NULL; - struct smfs_iget_args *sargs = opaque; - unsigned long ino; - - /* getting backing fs inode. */ - LASSERT(sargs); - ino = inode->i_ino; - cache_inode = iget(S2CSB(inode->i_sb), ino); - - OBD_ALLOC(inode->u.generic_ip, - sizeof(struct smfs_inode_info)); - - LASSERT(inode->u.generic_ip); - - I2CI(inode) = cache_inode; - CDEBUG(D_INODE, "cache_inode %lu i_count %d\n", - cache_inode->i_ino, atomic_read(&cache_inode->i_count)); + struct inode *cache_inode = NULL; + struct smfs_iget_args *sargs = opaque; + unsigned long ino; + + LASSERTF((!I2SMI(inode)), "Inode %lu already has smfs_inode_info %p \n", + inode->i_ino, I2SMI(inode)); + /* getting backing fs inode. */ + LASSERT(sargs); + ino = inode->i_ino; + cache_inode = iget(S2CSB(inode->i_sb), ino); - post_smfs_inode(inode, cache_inode); - sm_set_inode_ops(cache_inode, inode); - //iopen stuff - if (ino == SMFS_IOPEN_INO) { - inode->i_op = &smfs_iopen_iops; - inode->i_fop = &smfs_iopen_fops; - } - //inherit parent inode flags - if (sargs->s_inode) - I2SMI(inode)->smi_flags = I2SMI(sargs->s_inode)->smi_flags; - - } else - LBUG(); + OBD_ALLOC(inode->u.generic_ip, + sizeof(struct smfs_inode_info)); + + LASSERT(inode->u.generic_ip); + + I2CI(inode) = cache_inode; + + CDEBUG(D_INODE, "cache_inode %lu i_count %d\n", + cache_inode->i_ino, atomic_read(&cache_inode->i_count)); + + post_smfs_inode(inode, cache_inode); + sm_set_inode_ops(cache_inode, inode); + //iopen stuff + if (ino == SMFS_IOPEN_INO) { + inode->i_op = &smfs_iopen_iops; + inode->i_fop = &smfs_iopen_fops; + } + //inherit parent inode flags + if (sargs->s_inode) { + I2SMI(inode)->smi_flags = I2SMI(sargs->s_inode)->smi_flags; + CDEBUG(D_INODE, "set inode %lu flags %d\n", inode->i_ino, + I2SMI(inode)->smi_flags); + } } static void smfs_clear_inode_info(struct inode *inode) { - if (I2SMI(inode)) { - struct inode *cache_inode = I2CI(inode); + + struct inode *cache_inode = I2CI(inode); + + LASSERTF(I2SMI(inode), "Inode %lu smfs_inode_info\n", + inode->i_ino); - CDEBUG(D_INODE, "Clear_info: inode %p\n", - cache_inode); + CDEBUG(D_INODE, "Clear_info: inode %p\n", cache_inode); - LASSERTF(((atomic_read(&cache_inode->i_count) == 1) || - cache_inode == cache_inode->i_sb->s_root->d_inode), - "inode %p cache inode %p #%lu i_count %d != 1 \n", - inode, cache_inode, cache_inode->i_ino, - atomic_read(&cache_inode->i_count)); + LASSERTF(((atomic_read(&cache_inode->i_count) == 1) || + cache_inode == cache_inode->i_sb->s_root->d_inode), + "inode %p cache inode %p #%lu i_count %d != 1 \n", + inode, cache_inode, cache_inode->i_ino, + atomic_read(&cache_inode->i_count)); - iput(cache_inode); + iput(cache_inode); - OBD_FREE(inode->u.generic_ip, sizeof(struct smfs_inode_info)); - inode->u.generic_ip = NULL; - } else - LBUG(); + OBD_FREE(inode->u.generic_ip, sizeof(struct smfs_inode_info)); + inode->u.generic_ip = NULL; } #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) diff --git a/lustre/smfs/smfs_llog.c b/lustre/smfs/smfs_llog.c index 1356419..5891271 100644 --- a/lustre/smfs/smfs_llog.c +++ b/lustre/smfs/smfs_llog.c @@ -50,7 +50,7 @@ int smfs_llog_setup(struct super_block *sb, struct vfsmount *mnt) } S2SMI(sb)->smsi_logs_dir = dentry; - SMFS_SET(I2SMI(dentry->d_inode)->smi_flags, SMFS_PLG_ALL); + //SMFS_SET(I2SMI(dentry->d_inode)->smi_flags, SMFS_PLG_ALL); dentry = simple_mkdir(current->fs->pwd, "OBJECTS", 0777, 1); if (IS_ERR(dentry)) { @@ -61,7 +61,7 @@ int smfs_llog_setup(struct super_block *sb, struct vfsmount *mnt) } S2SMI(sb)->smsi_objects_dir = dentry; - SMFS_SET(I2SMI(dentry->d_inode)->smi_flags, SMFS_PLG_ALL); + //SMFS_SET(I2SMI(dentry->d_inode)->smi_flags, SMFS_PLG_ALL); /* write log will not write to KML, cleanup kml flags */ //SMFS_CLEAN_INODE_REC(S2SMI(sb)->smsi_objects_dir->d_inode); diff --git a/lustre/tests/cmobd.sh b/lustre/tests/cmobd.sh index 123f7ef..c36f83e 100644 --- a/lustre/tests/cmobd.sh +++ b/lustre/tests/cmobd.sh @@ -37,7 +37,7 @@ OSDTYPE=${OSDTYPE:-obdfilter} OSTFAILOVER=${OSTFAILOVER:-} FSTYPE=${FSTYPE:-smfs} -BACK_FSTYPE=${BACK_FSTYPE:-ext3} +BACK_FSTYPE=${BACK_FSTYPE:-ldiskfs} NETTYPE=${NETTYPE:-tcp} NIDTYPE=${NIDTYPE:-$NETTYPE} @@ -60,13 +60,13 @@ ${LMC} -m $config --add net --node $NODE --nid `h2$NIDTYPE $NODE` \ --nettype $NETTYPE || exit 1 ${LMC} -m $config --add mds --node $NODE --mds $CACHE_MDS1 --fstype $FSTYPE \ ---backfstype $BACK_FSTYPE --backdev $MDS1_CACHE_DEV --dev $FSTYPE \ +--backfstype $BACK_FSTYPE --dev $MDS1_CACHE_DEV \ --mountfsoptions $MDS_MOUNT_OPTS --size $MDSSIZE --format || exit 10 if test "x$CLIENTS" = "x2"; then ${LMC} -m $config --add mds --node $NODE --mds $CACHE_MDS2 \ - --fstype $FSTYPE --backfstype $BACK_FSTYPE --backdev $MDS2_CACHE_DEV \ - --dev $FSTYPE --mountfsoptions $MDS_MOUNT_OPTS --size $MDSSIZE --format || exit 10 + --fstype $FSTYPE --backfstype $BACK_FSTYPE --dev $MDS2_CACHE_DEV \ + --mountfsoptions $MDS_MOUNT_OPTS --size $MDSSIZE --format || exit 10 fi if test "x$MODE" = "xmds"; then