Lines Matching refs:root

26 mutex PackageFSRoot::sRootListLock = MUTEX_INITIALIZER("packagefs root list");
37 rw_lock_init(&fLock, "packagefs root");
91 // Unless the volume is custom mounted, we stat the supposed root directory.
92 // 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.
406 // first check the list, if the root already exists
409 if (PackageFSRoot* root = _FindRootLocked(deviceID, nodeID)) {
410 root->AcquireReference();
411 _root = root;
417 // create a new root
418 PackageFSRoot* root = new(std::nothrow) PackageFSRoot(deviceID, nodeID);
419 if (root == NULL)
421 ObjectDeleter<PackageFSRoot> rootDeleter(root);
423 status_t error = root->Init();
427 // add the root -- first recheck whether someone else added the root in the
438 sRootList.Add(root);
449 PackageFSRoot* root = it.Next();) {
450 if (root->DeviceID() == deviceID && root->NodeID() == nodeID)
451 return root;
459 PackageFSRoot::_PutRoot(PackageFSRoot* root)
462 if (!root->IsCustom()) {
465 // When releasing the last reference, remove the root from the list.
466 if (root->CountReferences() == 1)
467 sRootList.Remove(root);
472 root->ReleaseReference();