Lines Matching refs:volume

98 	ClientVolumePutter(ClientConnection* connection, ClientVolume* volume)
100 fVolume(volume)
177 ClientVolume* volume) = 0;
184 ClientVolume* volume)
186 return volume->GetSharePermissions().ImpliesQuerySharePermission();
239 // create a client volume map
340 "allocate memory for volume array.\n"));
346 if (ClientVolume* volume = _GetVolume(it.Next().value->GetID()))
347 volumes[volumeCount++] = volume;
353 ClientVolume* volume = volumes[i];
356 bool unmount = (volume->GetSecurityContext()->GetUser() == user);
360 _UnmountVolume(volume);
380 "allocate memory for volume array.\n"));
386 if (ClientVolume* volume = _GetVolume(it.Next().value->GetID()))
387 volumes[volumeCount++] = volume;
393 ClientVolume* volume = volumes[i];
396 bool unmount = (volume->GetShare() == share);
400 _UnmountVolume(volume);
423 "allocate memory for volume array.\n"));
429 if (ClientVolume* volume = _GetVolume(it.Next().value->GetID()))
430 volumes[volumeCount++] = volume;
436 ClientVolume* volume = volumes[i];
439 bool concerned = (volume->GetShare() == share
440 && volume->GetSecurityContext()->GetUser() == user);
444 // create a new user security context for the volume
448 _UnmountVolume(volume);
464 _UnmountVolume(volume);
468 // set the volume's new user security context
470 volume->SetSecurityContext(userSecurityContext);
535 // create a volume
536 ClientVolume* volume = NULL;
538 result = _CreateVolume(&volume);
539 ClientVolumePutter volumePutter(this, volume);
593 // mount the volume
596 SET_ERROR(result, volume->Mount(securityContext, share));
600 _GetNodeInfo(volume->GetRootDirectory(), &reply.nodeInfo);
602 reply.volumeID = volume->GetID();
605 // make sure, the volume is removed on error
606 if (result != B_OK && volume) {
608 volume->MarkRemoved();
628 if (ClientVolume* volume = _GetVolume(request->volumeID)) {
629 _UnmountVolume(volume);
630 _PutVolume(volume);
644 // get the volume
646 ClientVolume* volume = _GetVolume(request->volumeID);
647 if (!volume)
649 ClientVolumePutter volumePutter(this, volume);
656 node = volume->GetNode(request->nodeID);
681 // get the volume
683 ClientVolume* volume = _GetVolume(request->volumeID);
684 if (!volume)
686 ClientVolumePutter volumePutter(this, volume);
693 node = volume->GetNode(request->nodeID);
700 if (!volume->GetNodePermissions(node).ImpliesWritePermission())
761 // get the volume
763 ClientVolume* volume = _GetVolume(request->volumeID);
764 if (!volume)
766 ClientVolumePutter volumePutter(this, volume);
773 Node* node = volume->GetNode(request->directoryID);
785 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
820 result = volume->LoadEntry(directory, request->name.GetString(),
828 result = volume->Open(entry->GetNode(), openMode, &handle);
830 NodeHandleUnlocker handleUnlocker(volume, handle);
847 volume->Close(handle);
860 // get the volume
862 ClientVolume* volume = _GetVolume(request->volumeID);
863 if (!volume)
865 ClientVolumePutter volumePutter(this, volume);
872 node = volume->GetNode(request->nodeID);
880 Permissions permissions = volume->GetNodePermissions(node);
901 result = volume->Open(node, openMode, &handle);
902 NodeHandleUnlocker handleUnlocker(volume, handle);
919 volume->Close(handle);
935 // get the volume
936 ClientVolume* volume = _GetVolume(request->volumeID);
937 if (!volume)
939 ClientVolumePutter volumePutter(this, volume);
944 SET_ERROR(result, volume->LockNodeHandle(request->cookie, &handle));
945 NodeHandleUnlocker handleUnlocker(volume, handle);
951 SET_ERROR(result, volume->Close(handle));
955 // no volume ID given, so this is a query handle
980 // get the volume
982 ClientVolume* volume = _GetVolume(request->volumeID);
983 if (!volume)
985 ClientVolumePutter volumePutter(this, volume);
990 result = volume->LockNodeHandle(request->cookie, &handle);
991 NodeHandleUnlocker handleUnlocker(volume, handle);
1005 Node* node = volume->GetNode(fileHandle->GetNodeRef());
1006 if (!node || !volume->GetNodePermissions(node).ImpliesReadPermission())
1062 // get the volume
1064 ClientVolume* volume = _GetVolume(request->volumeID);
1065 if (!volume)
1067 ClientVolumePutter volumePutter(this, volume);
1072 result = volume->LockNodeHandle(request->cookie, &handle);
1073 NodeHandleUnlocker handleUnlocker(volume, handle);
1087 Node* node = volume->GetNode(fileHandle->GetNodeRef());
1088 if (!node || !volume->GetNodePermissions(node).ImpliesWritePermission())
1123 // get the volume
1125 ClientVolume* volume = _GetVolume(request->volumeID);
1126 if (!volume)
1128 ClientVolumePutter volumePutter(this, volume);
1135 node = volume->GetNode(request->nodeID);
1148 Node* node = volume->GetNode(request->directoryID);
1159 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
1194 // get the volume
1196 ClientVolume* volume = _GetVolume(request->volumeID);
1197 if (!volume)
1199 ClientVolumePutter volumePutter(this, volume);
1206 Node* node = volume->GetNode(request->directoryID);
1217 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
1252 // get the volume
1254 ClientVolume* volume = _GetVolume(request->volumeID);
1255 if (!volume)
1257 ClientVolumePutter volumePutter(this, volume);
1264 Node* node = volume->GetNode(request->directoryID);
1275 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
1310 // get the volume
1312 ClientVolume* volume = _GetVolume(request->volumeID);
1313 if (!volume)
1315 ClientVolumePutter volumePutter(this, volume);
1322 node = volume->GetNode(request->nodeID);
1331 if (!volume->GetNodePermissions(node).ImpliesReadPermission())
1373 // get the volume
1375 ClientVolume* volume = _GetVolume(request->volumeID);
1376 if (!volume)
1378 ClientVolumePutter volumePutter(this, volume);
1385 Node* node = volume->GetNode(request->newDirectoryID);
1396 if (!volume->GetNodePermissions(newDirectory).ImpliesWritePermission())
1411 Node* node = volume->GetNode(request->oldDirectoryID);
1422 if (!volume->GetNodePermissions(oldDirectory).ImpliesWritePermission())
1457 // get the volume
1459 ClientVolume* volume = _GetVolume(request->volumeID);
1460 if (!volume)
1462 ClientVolumePutter volumePutter(this, volume);
1469 Node* node = volume->GetNode(request->directoryID);
1480 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
1515 // get the volume
1517 ClientVolume* volume = _GetVolume(request->volumeID);
1518 if (!volume)
1520 ClientVolumePutter volumePutter(this, volume);
1527 Node* node = volume->GetNode(request->directoryID);
1538 if (!volume->GetNodePermissions(directory).ImpliesWritePermission())
1573 // get the volume
1575 ClientVolume* volume = _GetVolume(request->volumeID);
1576 if (!volume)
1578 ClientVolumePutter volumePutter(this, volume);
1585 Node* node = volume->GetNode(request->nodeID);
1596 if (!volume->GetNodePermissions(directory).ImpliesReadDirPermission())
1603 result = volume->OpenDir(directory, &handle);
1604 NodeHandleUnlocker handleUnlocker(volume, handle);
1613 PRINT("OpenDir() failed: client volume: %" B_PRId32 ", "
1615 volume->GetID(), directory->GetVolumeID(), directory->GetID());
1627 volume->Close(handle);
1640 // get the volume
1642 ClientVolume* volume = _GetVolume(request->volumeID);
1643 if (!volume)
1645 ClientVolumePutter volumePutter(this, volume);
1650 result = volume->LockNodeHandle(request->cookie, &handle);
1651 NodeHandleUnlocker handleUnlocker(volume, handle);
1666 Node* node = volume->GetNode(iterator->GetNodeRef());
1677 if (!volume->GetNodePermissions(directory).ImpliesReadDirPermission())
1717 PRINT("ReadDir done: volume: %" B_PRId32 ", "
1720 volume->GetID(), directory->GetVolumeID(), directory->GetID(),
1740 // get the volume
1742 ClientVolume* volume = _GetVolume(request->volumeID);
1743 if (!volume)
1745 ClientVolumePutter volumePutter(this, volume);
1752 Node* node = volume->GetNode(request->nodeID);
1763 if (!volume->GetNodePermissions(directory)
1774 result = volume->LoadEntry(directory, request->name.GetString(),
1812 // get the volume
1814 ClientVolume* volume = _GetVolume(request->volumeID);
1815 if (!volume)
1817 ClientVolumePutter volumePutter(this, volume);
1824 Node* node = volume->GetNode(request->nodeID);
1835 if (!volume->GetNodePermissions(directory)
1847 if (volume->LoadEntry(directory, names[i].GetString(), &entry)
1877 // get the volume
1879 ClientVolume* volume = _GetVolume(request->volumeID);
1880 if (!volume)
1882 ClientVolumePutter volumePutter(this, volume);
1889 node = volume->GetNode(request->nodeID);
1896 if (!volume->GetNodePermissions(node).ImpliesReadPermission())
1906 result = volume->OpenAttrDir(node, &handle);
1907 NodeHandleUnlocker handleUnlocker(volume, handle);
1929 volume->Close(handle);
1942 // get the volume
1944 ClientVolume* volume = _GetVolume(request->volumeID);
1945 if (!volume)
1947 ClientVolumePutter volumePutter(this, volume);
1952 result = volume->LockNodeHandle(request->cookie, &handle);
1953 NodeHandleUnlocker handleUnlocker(volume, handle);
1968 node = volume->GetNode(iterator->GetNodeRef());
1975 if (!volume->GetNodePermissions(node).ImpliesReadPermission())
2013 // get the volume
2015 ClientVolume* volume = _GetVolume(request->volumeID);
2016 if (!volume)
2018 ClientVolumePutter volumePutter(this, volume);
2025 node = volume->GetNode(request->nodeID);
2032 if (!volume->GetNodePermissions(node).ImpliesReadPermission())
2039 result = volume->Open(node, O_RDONLY, &handle);
2040 NodeHandleUnlocker handleUnlocker(volume, handle);
2147 volume->Close(handle);
2169 // get the volume
2171 ClientVolume* volume = _GetVolume(request->volumeID);
2172 if (!volume)
2174 ClientVolumePutter volumePutter(this, volume);
2181 node = volume->GetNode(request->nodeID);
2188 if (!volume->GetNodePermissions(node).ImpliesWritePermission())
2195 result = volume->Open(node, O_RDWR, &handle);
2196 NodeHandleUnlocker handleUnlocker(volume, handle);
2233 volume->Close(handle);
2251 // get the volume
2253 ClientVolume* volume = _GetVolume(request->volumeID);
2254 if (!volume)
2256 ClientVolumePutter volumePutter(this, volume);
2263 node = volume->GetNode(request->nodeID);
2270 if (!volume->GetNodePermissions(node).ImpliesWritePermission())
2277 result = volume->Open(node, O_RDWR, &handle);
2278 NodeHandleUnlocker handleUnlocker(volume, handle);
2285 volume->Close(handle);
2313 // get the volume
2315 ClientVolume* volume = _GetVolume(request->volumeID);
2316 if (!volume)
2318 ClientVolumePutter volumePutter(this, volume);
2325 node = volume->GetNode(request->nodeID);
2332 if (!volume->GetNodePermissions(node).ImpliesReadPermission())
2339 result = volume->Open(node, O_RDONLY, &handle);
2340 NodeHandleUnlocker handleUnlocker(volume, handle);
2349 volume->Close(handle);
2453 // if at least one client volume contains the entry, get an entry info
2459 // store all the client volume IDs in the reply
2474 // entry is not in the volume: next round...
2529 ClientConnection::QueryDomainIntersectsWith(Volume* volume)
2532 // the supplied volume or its root dir is on the volume. We don't check
2534 // volume, if the client volume is located on a volume mounted somewhere
2535 // under the supplied volume (e.g. the root FS contains everything, but does
2541 Directory* volumeRoot = volume->GetRootDirectory();
2578 // "entry moved" is split by the volume manager into those.
2617 // now push the event for each concerned client volume
2620 // TODO: More than one volume will usually only be concerned in case of
2622 // volume IDs in the respective requests sent over the net (just as in the
2757 // create and init the volume
2758 ClientVolume* volume = new(std::nothrow) ClientVolume(fSecurityContextLock,
2760 if (!volume)
2762 status_t error = volume->Init();
2764 delete volume;
2768 // add it to the volume map
2770 error = fVolumes->Put(volume->GetID(), volume);
2774 *_volume = volume;
2776 delete volume;
2786 ClientVolume* volume = fVolumes->Get(id);
2787 if (!volume || volume->IsRemoved())
2789 volume->AcquireReference();
2790 return volume;
2797 ClientConnection::_PutVolume(ClientVolume* volume)
2799 if (!volume)
2802 // decrement reference counter and remove the volume, if 0
2804 bool removed = (volume->ReleaseReference() == 1 && volume->IsRemoved());
2806 fVolumes->Remove(volume->GetID());
2811 delete volume;
2817 // The caller must have a reference to the volume.
2819 ClientConnection::_UnmountVolume(ClientVolume* volume)
2821 if (!volume)
2824 volume->MarkRemoved();
2832 _PushNodeMonitoringEvent(volume->GetID(), event);
2850 if (ClientVolume* volume = _GetVolume(it.Next().value->GetID())) {
2851 volumes[volumeCount++] = volume;
2860 ClientVolume* volume = volumes[i];
2861 _UnmountVolume(volume);
2862 _PutVolume(volume);
2919 // get the volume
2920 ClientVolume* volume = _GetVolume(volumeID);
2921 if (!volume && event->opcode != B_DEVICE_UNMOUNTED)
2923 ClientVolumePutter volumePutter(this, volume);
2930 error = _EntryCreated(volume,
2934 error = _EntryRemoved(volume,
2938 error = _EntryMoved(volume,
2942 error = _NodeStatChanged(volume,
2946 error = _NodeAttributeChanged(volume,
2976 ClientConnection::_EntryCreated(ClientVolume* volume, EntryCreatedEvent* event,
3017 ClientConnection::_EntryRemoved(ClientVolume* volume, EntryRemovedEvent* event,
3020 // special handling, if it is the root node of the client volume that has
3024 == volume->GetRootNodeRef()) {
3028 _UnmountVolume(volume);
3061 ClientConnection::_EntryMoved(ClientVolume* volume, EntryMovedEvent* event,
3102 ClientConnection::_NodeStatChanged(ClientVolume* volume,
3106 Node* node = volume->GetNode(event->volumeID, event->nodeID);
3128 ClientConnection::_NodeAttributeChanged(ClientVolume* volume,
3132 Node* node = volume->GetNode(event->volumeID, event->nodeID);