Lines Matching refs:root

28 mutex PackageFSRoot::sRootListLock = MUTEX_INITIALIZER("packagefs root list");
39 rw_lock_init(&fLock, "packagefs root");
90 // Unless the volume is custom mounted, we stat the supposed root directory.
91 // Get the volume mount point relative path to the root directory depending
113 dprintf("packagefs: Failed to get root directory \"%s\": %s\n",
123 dprintf("packagefs: Failed to stat root directory \"%s\": %s\n",
128 // get/create the root
129 PackageFSRoot* root;
130 error = PackageFSRoot::_GetOrCreateRoot(st.st_dev, st.st_ino, root);
135 error = root->_AddVolume(volume);
137 _PutRoot(root);
144 // custom mount -- always create a new root
145 PackageFSRoot* root = new(std::nothrow) PackageFSRoot(-1, 0);
146 if (root == NULL)
148 ObjectDeleter<PackageFSRoot> rootDeleter(root);
150 status_t error = root->Init();
155 error = root->_AddVolume(volume);
157 _PutRoot(root);
161 // We don't add the root to the list.
395 // first check the list, if the root already exists
398 if (PackageFSRoot* root = _FindRootLocked(deviceID, nodeID)) {
399 root->AcquireReference();
400 _root = root;
406 // create a new root
407 PackageFSRoot* root = new(std::nothrow) PackageFSRoot(deviceID, nodeID);
408 if (root == NULL)
410 ObjectDeleter<PackageFSRoot> rootDeleter(root);
412 status_t error = root->Init();
416 // add the root -- first recheck whether someone else added the root in the
427 sRootList.Add(root);
438 PackageFSRoot* root = it.Next();) {
439 if (root->DeviceID() == deviceID && root->NodeID() == nodeID)
440 return root;
448 PackageFSRoot::_PutRoot(PackageFSRoot* root)
451 if (!root->IsCustom()) {
454 // When releasing the last reference, remove the root from the list.
455 if (root->CountReferences() == 1)
456 sRootList.Remove(root);
461 root->ReleaseReference();