Whamcloud - gitweb
- add mballoc to ldiskfs series
[fs/lustre-release.git] / lustre / utils / lconf
index 05690f1..08cd122 100755 (executable)
@@ -628,7 +628,8 @@ class LCTLInterface:
 
     # create a new device with lctl
     def newdev(self, type, name, uuid, setup = ""):
-        self.attach(type, name, uuid);
+        if type != 'mds':
+            self.attach(type, name, uuid);
         try:
             self.setup(name, setup)
         except CommandError, e:
@@ -1005,7 +1006,7 @@ def clean_loop(dev, fstype, backfstype, backdev):
            print "detach " + dev + " <-> " + realfile
            ret, out = run('losetup -d', dev)
            if ret:
-               log('unable to clean loop device:', dev, 'for file:', realfile)
+               log('unable to clean loop device', dev, 'for file', realfile)
                logall(out)
 
 # finilizes passed device
@@ -1052,6 +1053,8 @@ def def_mount_options(fstype, target):
         mountfsoptions = "errors=remount-ro"
         if target == 'ost' and sys_get_branch() == '2.4':
             mountfsoptions = "%s,asyncdel" % (mountfsoptions)
+        if target == 'ost' and sys_get_branch() == '2.6':
+            mountfsoptions = "%s,extents,mballoc" % (mountfsoptions)
         return mountfsoptions
     return ""
         
@@ -1727,7 +1730,7 @@ class CONFDEV(Module):
     def __init__(self, db, name, target_uuid, uuid):
         Module.__init__(self, 'CONFDEV', db)
         self.devpath = self.db.get_val('devpath','')
-        self.backdevpath = self.db.get_val('backdevpath','')
+        self.backdevpath = self.db.get_val('devpath','')
         self.size = self.db.get_val_int('devsize', 0)
         self.journal_size = self.db.get_val_int('journalsize', 0)
         self.fstype = self.db.get_val('fstype', '')
@@ -1739,6 +1742,20 @@ class CONFDEV(Module):
         self.client_uuids = self.target.get_refs('client')
         self.obdtype = self.db.get_val('obdtype', '')
        
+        self.mds_sec = self.db.get_val('mds_sec', '')
+        self.oss_sec = self.db.get_val('oss_sec', '')
+        self.deny_sec = self.db.get_val('deny_sec', '')
+
+        if config.mds_mds_sec:
+            self.mds_sec = config.mds_mds_sec
+        if config.mds_oss_sec:
+            self.oss_sec = config.mds_oss_sec
+        if config.mds_deny_sec:
+            if self.deny_sec:
+                self.deny_sec = "%s,%s" %(self.deny_sec, config.mds_deny_sec)
+            else:
+                self.deny_sec = config.mds_deny_sec
+
         if self.obdtype == None:
             self.obdtype = 'dumb'
        
@@ -1855,7 +1872,7 @@ class CONFDEV(Module):
         
        if self.target.get_class() == 'mds':
            if options:
-               options = "%s,iopen_nopriv" %(options)
+               options = "%s,acl,user_xattr,iopen_nopriv" %(options)
            else:
                options = "iopen_nopriv"
            
@@ -1871,7 +1888,7 @@ class CONFDEV(Module):
                            self.backdevpath)
 
         if self.fstype == 'smfs':
-            realdev = self.fstype
+            realdev = blkdev
         else:
             realdev = blkdev
                
@@ -1916,10 +1933,18 @@ class CONFDEV(Module):
            config.record = 1
             lctl.clear_log(self.name, self.target.getName() + '-conf')
             lctl.record(self.name, self.target.getName() + '-conf')
+            lctl.attach("mds", self.conf_name, self.conf_uuid)
+            if self.mds_sec:
+                lctl.set_security(self.conf_name, "mds_sec", self.mds_sec)
+            if self.oss_sec:
+                lctl.set_security(self.conf_name, "oss_sec", self.oss_sec)
+            if self.deny_sec:
+                for flavor in string.split(self.deny_sec, ','):
+                    lctl.set_security(self.conf_name, "deny_sec", flavor)
             lctl.newdev("mds", self.conf_name, self.conf_uuid,
                         setup ="%s %s %s %s %s %s" %(self.realdev, self.fstype,
-                                                    self.conf_name, self.mountfsoptions,
-                                                    master_name, self.obdtype))
+                                                    self.conf_name, self.mountfsoptions,
+                                                    master_name, self.obdtype))
             lctl.end_record()
             config.record = 0
 
@@ -2016,7 +2041,7 @@ class MDSDEV(Module):
     def __init__(self,db):
         Module.__init__(self, 'MDSDEV', db)
         self.devpath = self.db.get_val('devpath','')
-        self.backdevpath = self.db.get_val('backdevpath','')
+        self.backdevpath = self.db.get_val('devpath','')
         self.size = self.db.get_val_int('devsize', 0)
         self.journal_size = self.db.get_val_int('journalsize', 0)
         self.fstype = self.db.get_val('fstype', '')
@@ -2122,13 +2147,6 @@ class MDSDEV(Module):
        if self.master != None:
              self.master.prepare()
 
-        lctl.attach("mds", self.name, self.uuid)
-        if config.mds_mds_sec:
-           lctl.set_security(self.name, "mds_mds_sec", config.mds_mds_sec)
-        if config.mds_ost_sec:
-            lctl.set_security(self.name, "mds_ost_sec", config.mds_ost_sec)
-        lctl.detach(self.name)
-
        if not config.record:
             self.confobd.start()
        
@@ -2205,7 +2223,7 @@ class OSD(Module):
         Module.__init__(self, 'OSD', db)
         self.osdtype = self.db.get_val('osdtype')
         self.devpath = self.db.get_val('devpath', '')
-        self.backdevpath = self.db.get_val('backdevpath', '')
+        self.backdevpath = self.db.get_val('devpath', '')
         self.size = self.db.get_val_int('devsize', 0)
         self.journal_size = self.db.get_val_int('journalsize', 0)
         self.inode_size = self.db.get_val_int('inodesize', 0)
@@ -2223,6 +2241,14 @@ class OSD(Module):
         else:
             self.failover_ost = 'n'
 
+        self.deny_sec = self.db.get_val('deny_sec', '')
+
+        if config.ost_deny_sec:
+            if self.deny_sec:
+                self.deny_sec = "%s,%s" %(self.deny_sec, config.ost_deny_sec)
+            else:
+                self.deny_sec = config.ost_deny_sec
+
         active_uuid = get_active_target(ost)
         if not active_uuid:
             panic("No target device found:", target_uuid)
@@ -2237,7 +2263,7 @@ class OSD(Module):
         self.uuid = target_uuid
         self.confobd = CONFDEV(self.db, self.name, 
                               target_uuid, self.uuid)
-    
+
     def add_module(self, manager):
         if not self.active:
            return
@@ -2274,6 +2300,7 @@ class OSD(Module):
             return
 
         run_acceptors()
+
         if self.osdtype == 'obdecho':
             self.info(self.osdtype)
             lctl.newdev("obdecho", self.name, self.uuid)
@@ -2286,6 +2313,10 @@ class OSD(Module):
            if not config.record:
                self.confobd.start()        
 
+        if self.deny_sec:
+            for flavor in string.split(self.deny_sec, ','):
+                lctl.set_security(self.name, "deny_sec", flavor)
+
     def write_conf(self):
         if is_prepared(self.name):
             return
@@ -2525,7 +2556,8 @@ class CMOBD(Module):
         elif master_class == 'mds':
            self.master = get_mdc(db, self.name, self.master_uuid) 
         elif master_class == 'lmv':
-           client_uuid = "%s_lmv_master_UUID" % (self.name)
+           #tmp fix: cobd and cmobd will use same uuid, so use const name here
+           client_uuid = "%s_lmv_master_UUID" % "master" 
             self.master = LMV(master_obd, client_uuid, self.name);
        else:
            panic("unknown master obd class '%s'" %(master_class))
@@ -2536,7 +2568,7 @@ class CMOBD(Module):
         elif cache_class == 'mds':
            self.cache = get_mdc(db, self.name, self.cache_uuid)
         elif cache_class == 'lmv':
-           client_uuid = "%s_lmv_cache_UUID" % (self.name)
+           client_uuid = "%s_lmv_cache_UUID" % (self.name) 
             self.cache = LMV(cache_obd, client_uuid, self.name);
        else:
            panic("unknown cache obd class '%s'" %(cache_class))
@@ -2569,6 +2601,7 @@ class CMOBD(Module):
            self.master.cleanup()
 
     def add_module(self, manager):
+       manager.add_lustre_module('smfs', 'smfs')
        manager.add_lustre_module('cmobd', 'cmobd')
         self.master.add_module(manager)
 
@@ -2603,7 +2636,8 @@ class COBD(Module):
         elif master_class == 'mds':
             self.master = get_mdc(db, name, self.master_uuid) 
         elif master_class == 'lmv':
-           client_uuid = "%s_lmv_master_UUID" % (self.name)
+           #tmp fix: cobd and cmobd will use same uuid, so use const name here
+           client_uuid = "%s_lmv_master_UUID" % "master" 
             self.master = LMV(master_obd, client_uuid, self.name);
        else:
            panic("unknown master obd class '%s'" %(master_class))
@@ -2614,7 +2648,7 @@ class COBD(Module):
         elif cache_class == 'mds':
             self.cache = get_mdc(db, name, self.cache_uuid)
         elif cache_class == 'lmv':
-           client_uuid = "%s_lmv_cache_UUID" % (self.name)
+           client_uuid = "%s_lmv_cache_UUID" % "cache" 
             self.cache = LMV(cache_obd, client_uuid, self.name);
        else:
            panic("unknown cache obd class '%s'" %(cache_class))
@@ -2632,10 +2666,10 @@ class COBD(Module):
         return self.cache.name
 
     def prepare(self):
-        self.master.prepare()
-        self.cache.prepare()
         if not config.record and is_prepared(self.name):
             return
+       self.master.prepare()
+        self.cache.prepare()
         self.info(self.master_uuid, self.cache_uuid)
         lctl.newdev("cobd", self.name, self.uuid,
                     setup ="%s %s" %(self.master.name,
@@ -2762,6 +2796,13 @@ class Mountpoint(Module):
         self.obd_uuid = fs.get_first_ref('obd')
         client_uuid = generate_client_uuid(self.name)
 
+        self.oss_sec = self.db.get_val('oss_sec','null')
+        self.mds_sec = self.db.get_val('mds_sec','null')
+        if config.mds_sec:
+            self.mds_sec = config.mds_sec
+        if config.oss_sec:
+            self.oss_sec = config.oss_sec
+
         ost = self.db.lookup(self.obd_uuid)
         if not ost:
             panic("no ost: ", self.obd_uuid)
@@ -2799,11 +2840,9 @@ class Mountpoint(Module):
             # so replace it with Lustre async
             self.clientoptions = string.replace(self.clientoptions, "async", "lasync")
 
-        if not config.sec:
-            config.sec = "null"
-        cmd = "mount -t lustre_lite -o osc=%s,mdc=%s,sec=%s%s %s %s" % \
-              (self.vosc.get_name(), self.vmdc.get_name(), config.sec, 
-              self.clientoptions, config.config, self.path)
+        cmd = "mount -t lustre_lite -o osc=%s,mdc=%s,mds_sec=%s,oss_sec=%s%s %s %s" % \
+              (self.vosc.get_name(), self.vmdc.get_name(), self.mds_sec,
+              self.oss_sec, self.clientoptions, config.config, self.path)
         run("mkdir", self.path)
         ret, val = run(cmd)
         if ret:
@@ -2873,10 +2912,10 @@ def getServiceLevel(self):
         ret = 40
     elif type in ('lmv',):
         ret = 45
-    elif type in ('cmobd',):
-        ret = 50
     elif type in ('mountpoint', 'echoclient'):
-        ret = 70
+        ret = 60
+    elif type in ('cmobd',):
+        ret = 70 
     else:
         panic("Unknown type: ", type)
 
@@ -3497,7 +3536,7 @@ def sys_set_ptldebug(ptldebug):
     if ptldebug:
         try:
             val = eval(ptldebug, ptldebug_names)
-            val = "0x%x" % (val)
+            val = "0x%x" % (val & 0xffffffffL)
             sysctl('portals/debug', val)
         except NameError, e:
             panic(str(e))
@@ -3508,7 +3547,7 @@ def sys_set_subsystem(subsystem):
     if subsystem:
         try:
             val = eval(subsystem, subsystem_names)
-            val = "0x%x" % (val)
+            val = "0x%x" % (val & 0xffffffffL)
             sysctl('portals/subsystem_debug', val)
         except NameError, e:
             panic(str(e))
@@ -3586,9 +3625,13 @@ lconf_options = [
     ('config', "Cluster config name used for LDAP query", PARAM),
     ('select', "service=nodeA,service2=nodeB ", PARAMLIST),
     ('node',   "Load config for <nodename>", PARAM),
-    ('sec',    "security flavor <null|krb5i|krb5p> of client", PARAM),
-    ('mds_mds_sec', "security flavor <null|krb5i|krb5p> of inter mds's", PARAM),
-    ('mds_ost_sec', "security flavor <null|krb5i|krb5p> of mds's-ost's", PARAM),
+    ('sec',"security flavor <null|krb5i|krb5p> between this client with mds", PARAM),
+    ('mds_sec',"security flavor <null|krb5i|krb5p> between this client with mds", PARAM),
+    ('oss_sec',"security flavor <null|krb5i|krb5p> between this client with ost", PARAM),
+    ('mds_mds_sec',"security flavor <null|krb5i|krb5p> between this mds with other mds", PARAM),
+    ('mds_oss_sec',"security flavor <null|krb5i|krb5p> between this mds with ost", PARAM),
+    ('mds_deny_sec', "security flavor <null|krb5i|krb5p> denied by this mds", PARAM),
+    ('ost_deny_sec', "security flavor <null|krb5i|krb5p> denied by this ost", PARAM),
     ('cleanup,d', "Cleans up config. (Shutdown)"),
     ('force,f', "Forced unmounting and/or obd detach during cleanup",
                FLAG, 0),