Whamcloud - gitweb
Branch: HEAD
authorwangdi <wangdi>
Fri, 20 May 2005 15:52:00 +0000 (15:52 +0000)
committerwangdi <wangdi>
Fri, 20 May 2005 15:52:00 +0000 (15:52 +0000)
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

lustre/cmobd/cm_obd.c
lustre/lov/lov_obd.c
lustre/obdclass/genops.c
lustre/smfs/inode.c
lustre/smfs/smfs_llog.c
lustre/tests/cmobd.sh

index ab2a306..d46d919 100644 (file)
@@ -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);
index 34c3257..1843c3a 100644 (file)
@@ -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);
index 4a7d1c6..e0ffba5 100644 (file)
@@ -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) &&
index f31852d..698773f 100644 (file)
 
 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))
index 1356419..5891271 100644 (file)
@@ -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);
index 123f7ef..c36f83e 100644 (file)
@@ -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