Whamcloud - gitweb
- set only LOV_EA in mds_reint_setattr() in the case of CMOBD reint as setting sid...
authoryury <yury>
Thu, 11 Aug 2005 07:32:52 +0000 (07:32 +0000)
committeryury <yury>
Thu, 11 Aug 2005 07:32:52 +0000 (07:32 +0000)
- set mds_security to "null" in lustre_connect_mds() if not specified or panic is possible.

lustre/llite/llite_lib.c
lustre/mds/mds_reint.c

index f033377..279eb27 100644 (file)
@@ -153,6 +153,9 @@ static int lustre_connect_mds(struct super_block *sb, char *lmv,
         obd_set_info(md_obd->obd_self_export, strlen("async"), "async",
                      sizeof(async), &async);
 
+        if (mds_security == NULL)
+                mds_security = "null";
+        
         err = obd_set_info(md_obd->obd_self_export, strlen("sec"), "sec",
                            strlen(mds_security), mds_security);
         
@@ -230,6 +233,7 @@ out_disconnect:
 out:
         RETURN(err);
 }
+
 static int lustre_connect_ost(struct super_block *sb, char *lov, 
                               struct obd_connect_data *data, 
                               char *oss_security, int async, int pag)
index eb2c1dc..8b68109 100644 (file)
@@ -599,24 +599,27 @@ static int mds_reint_setattr(struct mds_update_record *rec, int offset,
                         char *name;
                         int type;
                         
-                        /* tmp fix for cmobd set md reint */
                         LASSERT(rec->ur_eadata != NULL);
                         LASSERT(rec->ur_ea2data != NULL);
                         name = rec->ur_eadata;
-                        
-                        CDEBUG(D_INFO, "set %s EA for cmobd \n", name);
 
+                        /* XXX: tmp fix for setting LOV EA from CMOBD */
                         type = mds_get_md_type(name);
-                        if (type != 0) {
+
+                        if (type == EA_LOV) {
+                                CDEBUG(D_INFO, "set %s EA for cmobd \n", name);
+
                                 rc = fsfilt_set_md(obd, inode, handle, 
                                                    rec->ur_ea2data,
-                                                   rec->ur_ea2datalen, type);
+                                                   rec->ur_ea2datalen,
+                                                   type);
+                                if (rc)
+                                        GOTO(cleanup, rc);
                         }
-                        if (rc)
-                                GOTO(cleanup, rc);               
                 } else if ((S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)) &&
                            !((rec->ur_iattr.ia_valid & ATTR_KEY) || 
                              (rec->ur_iattr.ia_valid & ATTR_MAC))) {
+                        
                         struct lov_stripe_md *lsm = NULL;
                         struct lov_user_md *lum = NULL;
 
@@ -648,11 +651,12 @@ static int mds_reint_setattr(struct mds_update_record *rec, int offset,
                                                 GOTO(cleanup, rc);
                                 }
                         }
-                }   
-                if ((rec->ur_iattr.ia_valid & ATTR_KEY) || 
-                    (rec->ur_iattr.ia_valid & ATTR_MAC)) {
+                }
+                
+                if ((rec->ur_iattr.ia_valid & ATTR_KEY) || (rec->ur_iattr.ia_valid & ATTR_MAC)) {
                         void *key;
                         int keylen;
+                        
                         LASSERT(rec->ur_eadatalen || rec->ur_ea3datalen); 
                         LASSERT(rec->ur_eadata || rec->ur_ea3data); 
                         key = rec->ur_ea3data ? rec->ur_ea3data : rec->ur_eadata;