Exemplo n.º 1
0
 def generate_key(self, system_path):
   if system_path in self.keys:
     return self.keys[system_path]
   self.next_key += 1
   self.keys[system_path] = self.next_key
   log_lock.info("generated key %d for path %s" % (self.next_key,system_path))
   return self.next_key
Exemplo n.º 2
0
 def create_lock(self, cur_dir, ami_path, exclusive):
     if ami_path == '':
         if cur_dir == None:
             ami_path = "SYS:"
         else:
             ami_path = cur_dir.ami_path
     else:
         ami_path = self.path_mgr.ami_abs_path(cur_dir, ami_path)
     sys_path = self.path_mgr.ami_to_sys_path(cur_dir,
                                              ami_path,
                                              searchMulti=True)
     name = self.path_mgr.ami_name_of_path(cur_dir, ami_path)
     if sys_path == None:
         log_lock.info("lock '%s' invalid: no sys path found: '%s'", name,
                       ami_path)
         return None
     exists = os.path.exists(sys_path)
     if not exists:
         log_lock.info(
             "lock '%s' invalid: sys path does not exist: '%s' -> '%s'",
             name, ami_path, sys_path)
         return None
     lock = Lock(name, ami_path, sys_path, exclusive)
     self._register_lock(lock)
     return lock
Exemplo n.º 3
0
 def _unregister_lock(self, lock):
     if not self.locks_by_b_addr.has_key(lock.b_addr):
         raise VamosInternalError("Lock %s not registered!" % lock)
     check = self.locks_by_b_addr[lock.b_addr]
     if check != lock:
         raise VamosInternalError("Invalid Lock unregistered: %s" % lock)
     del self.locks_by_b_addr[lock.b_addr]
     log_lock.info("unregistered: %s" % lock)
     lock.b_addr = 0
     lock.addr = 0
     lock.free(self.alloc)
Exemplo n.º 4
0
 def _unregister_lock(self, lock):
   if not self.locks_by_b_addr.has_key(lock.b_addr):
     raise VamosInternalError("Lock %s not registered!" % lock)
   check = self.locks_by_b_addr[lock.b_addr]
   if check != lock:
     raise VamosInternalError("Invalid Lock unregistered: %s" % lock)
   del self.locks_by_b_addr[lock.b_addr]
   log_lock.info("unregistered: %s" % lock)
   lock.b_addr = 0
   lock.addr = 0
   lock.free(self.alloc)
Exemplo n.º 5
0
 def _register_lock(self, lock):
   # look up volume
   volume_name = self.path_mgr.ami_volume_of_path(lock.ami_path)
   log_lock.debug("fl_Volume: looking up volume '%s' of %s",volume_name,lock)
   volume = self.dos_list.get_entry_by_name(volume_name)
   if volume is None:
     vol_baddr = 0
     log_lock.warn("lock volume? volume=%s lock=%s",volume,lock)
   else:
     vol_baddr = volume.mem.addr
   # allocate lock struct
   b_addr = lock.alloc(self.alloc, vol_baddr, self.generate_key)
   self.locks_by_baddr[b_addr] = lock
   log_lock.info("registered: %s" % lock)
Exemplo n.º 6
0
 def create_lock(self, ami_path, exclusive):
   if ami_path == '':
     ami_path = self.path_mgr.ami_abs_cur_path()
   else:
     ami_path = self.path_mgr.ami_abs_path(ami_path)
   sys_path = self.path_mgr.ami_to_sys_path(ami_path)
   name = self.path_mgr.ami_name_of_path(ami_path)
   if sys_path == None:
     log_lock.info("lock '%s' invalid: no sys path found: '%s'", name, ami_path)
     return None
   exists = os.path.exists(sys_path)
   if not exists:
     log_lock.info("lock '%s' invalid: sys path does not exist: '%s' -> '%s'", name, ami_path, sys_path)
     return None
   lock = Lock(name, ami_path, sys_path, exclusive)
   self._register_lock(lock)
   return lock
Exemplo n.º 7
0
 def _unregister_lock(self, lock):
   del self.locks_by_baddr[lock.b_addr]
   log_lock.info("unregistered: %s" % lock)
   lock.free(self.alloc)
   del lock