2635 lines
64 KiB
C++
2635 lines
64 KiB
C++
/*
|
|
* Copyright 2001-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef USERLAND_FS_REQUESTS_H
|
|
#define USERLAND_FS_REQUESTS_H
|
|
|
|
#include <fs_attr.h>
|
|
#include <fs_index.h>
|
|
#include <fs_info.h>
|
|
#include <fs_interface.h>
|
|
|
|
#include "Compatibility.h"
|
|
#include "FSCapabilities.h"
|
|
#include "Request.h"
|
|
|
|
|
|
enum {
|
|
MAX_REQUEST_ADDRESS_COUNT = 4,
|
|
};
|
|
|
|
// request types
|
|
enum {
|
|
// kernel -> userland requests
|
|
|
|
// administrative
|
|
UFS_DISCONNECT_REQUEST = 0,
|
|
FS_CONNECT_REQUEST,
|
|
FS_CONNECT_REPLY,
|
|
|
|
// FS
|
|
MOUNT_VOLUME_REQUEST,
|
|
MOUNT_VOLUME_REPLY,
|
|
UNMOUNT_VOLUME_REQUEST,
|
|
UNMOUNT_VOLUME_REPLY,
|
|
// INITIALIZE_VOLUME_REQUEST,
|
|
// INITIALIZE_VOLUME_REPLY,
|
|
SYNC_VOLUME_REQUEST,
|
|
SYNC_VOLUME_REPLY,
|
|
READ_FS_INFO_REQUEST,
|
|
READ_FS_INFO_REPLY,
|
|
WRITE_FS_INFO_REQUEST,
|
|
WRITE_FS_INFO_REPLY,
|
|
|
|
// vnodes
|
|
LOOKUP_REQUEST,
|
|
LOOKUP_REPLY,
|
|
GET_VNODE_NAME_REQUEST,
|
|
GET_VNODE_NAME_REPLY,
|
|
READ_VNODE_REQUEST,
|
|
READ_VNODE_REPLY,
|
|
WRITE_VNODE_REQUEST,
|
|
WRITE_VNODE_REPLY,
|
|
FS_REMOVE_VNODE_REQUEST,
|
|
FS_REMOVE_VNODE_REPLY,
|
|
|
|
// asynchronous I/O
|
|
DO_IO_REQUEST,
|
|
DO_IO_REPLY,
|
|
CANCEL_IO_REQUEST,
|
|
CANCEL_IO_REPLY,
|
|
ITERATIVE_IO_GET_VECS_REQUEST,
|
|
ITERATIVE_IO_GET_VECS_REPLY,
|
|
ITERATIVE_IO_FINISHED_REQUEST,
|
|
ITERATIVE_IO_FINISHED_REPLY,
|
|
|
|
// nodes
|
|
IOCTL_REQUEST,
|
|
IOCTL_REPLY,
|
|
SET_FLAGS_REQUEST,
|
|
SET_FLAGS_REPLY,
|
|
SELECT_REQUEST,
|
|
SELECT_REPLY,
|
|
DESELECT_REQUEST,
|
|
DESELECT_REPLY,
|
|
FSYNC_REQUEST,
|
|
FSYNC_REPLY,
|
|
|
|
READ_SYMLINK_REQUEST,
|
|
READ_SYMLINK_REPLY,
|
|
CREATE_SYMLINK_REQUEST,
|
|
CREATE_SYMLINK_REPLY,
|
|
LINK_REQUEST,
|
|
LINK_REPLY,
|
|
UNLINK_REQUEST,
|
|
UNLINK_REPLY,
|
|
RENAME_REQUEST,
|
|
RENAME_REPLY,
|
|
|
|
ACCESS_REQUEST,
|
|
ACCESS_REPLY,
|
|
READ_STAT_REQUEST,
|
|
READ_STAT_REPLY,
|
|
WRITE_STAT_REQUEST,
|
|
WRITE_STAT_REPLY,
|
|
|
|
// files
|
|
CREATE_REQUEST,
|
|
CREATE_REPLY,
|
|
OPEN_REQUEST,
|
|
OPEN_REPLY,
|
|
CLOSE_REQUEST,
|
|
CLOSE_REPLY,
|
|
FREE_COOKIE_REQUEST,
|
|
FREE_COOKIE_REPLY,
|
|
READ_REQUEST,
|
|
READ_REPLY,
|
|
WRITE_REQUEST,
|
|
WRITE_REPLY,
|
|
|
|
// directories
|
|
CREATE_DIR_REQUEST,
|
|
CREATE_DIR_REPLY,
|
|
REMOVE_DIR_REQUEST,
|
|
REMOVE_DIR_REPLY,
|
|
OPEN_DIR_REQUEST,
|
|
OPEN_DIR_REPLY,
|
|
CLOSE_DIR_REQUEST,
|
|
CLOSE_DIR_REPLY,
|
|
FREE_DIR_COOKIE_REQUEST,
|
|
FREE_DIR_COOKIE_REPLY,
|
|
READ_DIR_REQUEST,
|
|
READ_DIR_REPLY,
|
|
REWIND_DIR_REQUEST,
|
|
REWIND_DIR_REPLY,
|
|
|
|
// attribute directories
|
|
OPEN_ATTR_DIR_REQUEST,
|
|
OPEN_ATTR_DIR_REPLY,
|
|
CLOSE_ATTR_DIR_REQUEST,
|
|
CLOSE_ATTR_DIR_REPLY,
|
|
FREE_ATTR_DIR_COOKIE_REQUEST,
|
|
FREE_ATTR_DIR_COOKIE_REPLY,
|
|
READ_ATTR_DIR_REQUEST,
|
|
READ_ATTR_DIR_REPLY,
|
|
REWIND_ATTR_DIR_REQUEST,
|
|
REWIND_ATTR_DIR_REPLY,
|
|
|
|
// attributes
|
|
CREATE_ATTR_REQUEST,
|
|
CREATE_ATTR_REPLY,
|
|
OPEN_ATTR_REQUEST,
|
|
OPEN_ATTR_REPLY,
|
|
CLOSE_ATTR_REQUEST,
|
|
CLOSE_ATTR_REPLY,
|
|
FREE_ATTR_COOKIE_REQUEST,
|
|
FREE_ATTR_COOKIE_REPLY,
|
|
READ_ATTR_REQUEST,
|
|
READ_ATTR_REPLY,
|
|
WRITE_ATTR_REQUEST,
|
|
WRITE_ATTR_REPLY,
|
|
READ_ATTR_STAT_REQUEST,
|
|
READ_ATTR_STAT_REPLY,
|
|
WRITE_ATTR_STAT_REQUEST,
|
|
WRITE_ATTR_STAT_REPLY,
|
|
RENAME_ATTR_REQUEST,
|
|
RENAME_ATTR_REPLY,
|
|
REMOVE_ATTR_REQUEST,
|
|
REMOVE_ATTR_REPLY,
|
|
|
|
// indices
|
|
OPEN_INDEX_DIR_REQUEST,
|
|
OPEN_INDEX_DIR_REPLY,
|
|
CLOSE_INDEX_DIR_REQUEST,
|
|
CLOSE_INDEX_DIR_REPLY,
|
|
FREE_INDEX_DIR_COOKIE_REQUEST,
|
|
FREE_INDEX_DIR_COOKIE_REPLY,
|
|
READ_INDEX_DIR_REQUEST,
|
|
READ_INDEX_DIR_REPLY,
|
|
REWIND_INDEX_DIR_REQUEST,
|
|
REWIND_INDEX_DIR_REPLY,
|
|
CREATE_INDEX_REQUEST,
|
|
CREATE_INDEX_REPLY,
|
|
REMOVE_INDEX_REQUEST,
|
|
REMOVE_INDEX_REPLY,
|
|
READ_INDEX_STAT_REQUEST,
|
|
READ_INDEX_STAT_REPLY,
|
|
|
|
// queries
|
|
OPEN_QUERY_REQUEST,
|
|
OPEN_QUERY_REPLY,
|
|
CLOSE_QUERY_REQUEST,
|
|
CLOSE_QUERY_REPLY,
|
|
FREE_QUERY_COOKIE_REQUEST,
|
|
FREE_QUERY_COOKIE_REPLY,
|
|
READ_QUERY_REQUEST,
|
|
READ_QUERY_REPLY,
|
|
REWIND_QUERY_REQUEST,
|
|
REWIND_QUERY_REPLY,
|
|
|
|
// node monitoring
|
|
NODE_MONITORING_EVENT_REQUEST,
|
|
NODE_MONITORING_EVENT_REPLY,
|
|
|
|
// userland -> kernel requests
|
|
// notifications
|
|
NOTIFY_LISTENER_REQUEST,
|
|
NOTIFY_LISTENER_REPLY,
|
|
NOTIFY_SELECT_EVENT_REQUEST,
|
|
NOTIFY_SELECT_EVENT_REPLY,
|
|
NOTIFY_QUERY_REQUEST,
|
|
NOTIFY_QUERY_REPLY,
|
|
|
|
// vnodes
|
|
GET_VNODE_REQUEST,
|
|
GET_VNODE_REPLY,
|
|
PUT_VNODE_REQUEST,
|
|
PUT_VNODE_REPLY,
|
|
ACQUIRE_VNODE_REQUEST,
|
|
ACQUIRE_VNODE_REPLY,
|
|
NEW_VNODE_REQUEST,
|
|
NEW_VNODE_REPLY,
|
|
PUBLISH_VNODE_REQUEST,
|
|
PUBLISH_VNODE_REPLY,
|
|
REMOVE_VNODE_REQUEST,
|
|
REMOVE_VNODE_REPLY,
|
|
UNREMOVE_VNODE_REQUEST,
|
|
UNREMOVE_VNODE_REPLY,
|
|
GET_VNODE_REMOVED_REQUEST,
|
|
GET_VNODE_REMOVED_REPLY,
|
|
|
|
// file cache
|
|
FILE_CACHE_CREATE_REQUEST,
|
|
FILE_CACHE_CREATE_REPLY,
|
|
FILE_CACHE_DELETE_REQUEST,
|
|
FILE_CACHE_DELETE_REPLY,
|
|
FILE_CACHE_SET_ENABLED_REQUEST,
|
|
FILE_CACHE_SET_ENABLED_REPLY,
|
|
FILE_CACHE_SET_SIZE_REQUEST,
|
|
FILE_CACHE_SET_SIZE_REPLY,
|
|
FILE_CACHE_SYNC_REQUEST,
|
|
FILE_CACHE_SYNC_REPLY,
|
|
FILE_CACHE_READ_REQUEST,
|
|
FILE_CACHE_READ_REPLY,
|
|
FILE_CACHE_WRITE_REQUEST,
|
|
FILE_CACHE_WRITE_REPLY,
|
|
|
|
// I/O
|
|
DO_ITERATIVE_FD_IO_REQUEST,
|
|
DO_ITERATIVE_FD_IO_REPLY,
|
|
READ_FROM_IO_REQUEST_REQUEST,
|
|
READ_FROM_IO_REQUEST_REPLY,
|
|
WRITE_TO_IO_REQUEST_REQUEST,
|
|
WRITE_TO_IO_REQUEST_REPLY,
|
|
NOTIFY_IO_REQUEST_REQUEST,
|
|
NOTIFY_IO_REQUEST_REPLY,
|
|
|
|
// node monitoring
|
|
ADD_NODE_LISTENER_REQUEST,
|
|
ADD_NODE_LISTENER_REPLY,
|
|
REMOVE_NODE_LISTENER_REQUEST,
|
|
REMOVE_NODE_LISTENER_REPLY,
|
|
|
|
// general reply
|
|
RECEIPT_ACK_REPLY,
|
|
|
|
// invalid request ID (e.g. for request handlers)
|
|
NO_REQUEST,
|
|
};
|
|
|
|
namespace UserlandFSUtil {
|
|
|
|
// ReplyRequest
|
|
class ReplyRequest : public Request {
|
|
public:
|
|
ReplyRequest(uint32 type) : Request(type) {}
|
|
|
|
status_t error;
|
|
};
|
|
|
|
|
|
// #pragma mark - kernel requests
|
|
|
|
|
|
// KernelRequest
|
|
class KernelRequest : public Request {
|
|
public:
|
|
KernelRequest(uint32 type) : Request(type) {}
|
|
|
|
team_id team;
|
|
thread_id thread;
|
|
uid_t user;
|
|
gid_t group;
|
|
};
|
|
|
|
// VolumeRequest
|
|
class VolumeRequest : public KernelRequest {
|
|
public:
|
|
VolumeRequest(uint32 type) : KernelRequest(type) {}
|
|
|
|
void* volume;
|
|
};
|
|
|
|
// NodeRequest
|
|
class NodeRequest : public VolumeRequest {
|
|
public:
|
|
NodeRequest(uint32 type) : VolumeRequest(type) {}
|
|
|
|
void* node;
|
|
};
|
|
|
|
// FileRequest
|
|
class FileRequest : public NodeRequest {
|
|
public:
|
|
FileRequest(uint32 type) : NodeRequest(type) {}
|
|
|
|
void* fileCookie;
|
|
};
|
|
|
|
// DirRequest
|
|
class DirRequest : public NodeRequest {
|
|
public:
|
|
DirRequest(uint32 type) : NodeRequest(type) {}
|
|
|
|
void* dirCookie;
|
|
};
|
|
|
|
// AttrDirRequest
|
|
class AttrDirRequest : public NodeRequest {
|
|
public:
|
|
AttrDirRequest(uint32 type) : NodeRequest(type) {}
|
|
|
|
void* attrDirCookie;
|
|
};
|
|
|
|
// AttributeRequest
|
|
class AttributeRequest : public NodeRequest {
|
|
public:
|
|
AttributeRequest(uint32 type) : NodeRequest(type) {}
|
|
|
|
void* attrCookie;
|
|
};
|
|
|
|
// IndexDirRequest
|
|
class IndexDirRequest : public VolumeRequest {
|
|
public:
|
|
IndexDirRequest(uint32 type) : VolumeRequest(type) {}
|
|
|
|
void* indexDirCookie;
|
|
};
|
|
|
|
// QueryRequest
|
|
class QueryRequest : public VolumeRequest {
|
|
public:
|
|
QueryRequest(uint32 type) : VolumeRequest(type) {}
|
|
|
|
void* queryCookie;
|
|
};
|
|
|
|
// FileCacheRequest
|
|
class FileCacheRequest : public Request {
|
|
public:
|
|
FileCacheRequest(uint32 type) : Request(type) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
class IORequestRequest : public Request {
|
|
public:
|
|
IORequestRequest(uint32 type) : Request(type) {}
|
|
|
|
dev_t nsid;
|
|
int32 request;
|
|
};
|
|
|
|
|
|
// #pragma mark - administrative
|
|
|
|
|
|
// UFSDisconnectRequest
|
|
class UFSDisconnectRequest : public Request {
|
|
public:
|
|
UFSDisconnectRequest() : Request(UFS_DISCONNECT_REQUEST) {}
|
|
};
|
|
|
|
// FSConnectRequest
|
|
class FSConnectRequest : public Request {
|
|
public:
|
|
FSConnectRequest() : Request(FS_CONNECT_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address fsName;
|
|
};
|
|
|
|
// FSConnectReply
|
|
class FSConnectReply : public ReplyRequest {
|
|
public:
|
|
FSConnectReply() : ReplyRequest(FS_CONNECT_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address portInfos;
|
|
int32 portInfoCount;
|
|
FSCapabilities capabilities;
|
|
client_fs_type clientFSType;
|
|
};
|
|
|
|
|
|
// #pragma mark - FS
|
|
|
|
|
|
// MountVolumeRequest
|
|
class MountVolumeRequest : public KernelRequest {
|
|
public:
|
|
MountVolumeRequest() : KernelRequest(MOUNT_VOLUME_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
dev_t nsid;
|
|
Address cwd; // current working dir of the mount() caller
|
|
Address device;
|
|
uint32 flags;
|
|
Address parameters;
|
|
};
|
|
|
|
// MountVolumeReply
|
|
class MountVolumeReply : public ReplyRequest {
|
|
public:
|
|
MountVolumeReply() : ReplyRequest(MOUNT_VOLUME_REPLY) {}
|
|
|
|
ino_t rootID;
|
|
void* volume;
|
|
FSVolumeCapabilities capabilities;
|
|
};
|
|
|
|
// UnmountVolumeRequest
|
|
class UnmountVolumeRequest : public VolumeRequest {
|
|
public:
|
|
UnmountVolumeRequest() : VolumeRequest(UNMOUNT_VOLUME_REQUEST) {}
|
|
};
|
|
|
|
// UnmountVolumeReply
|
|
class UnmountVolumeReply : public ReplyRequest {
|
|
public:
|
|
UnmountVolumeReply() : ReplyRequest(UNMOUNT_VOLUME_REPLY) {}
|
|
};
|
|
|
|
/*// InitializeVolumeRequest
|
|
class InitializeVolumeRequest : public Request {
|
|
public:
|
|
InitializeVolumeRequest() : Request(INITIALIZE_VOLUME_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address device;
|
|
Address parameters;
|
|
};
|
|
|
|
// InitializeVolumeReply
|
|
class InitializeVolumeReply : public ReplyRequest {
|
|
public:
|
|
InitializeVolumeReply() : ReplyRequest(INITIALIZE_VOLUME_REPLY) {}
|
|
};*/
|
|
|
|
// SyncVolumeRequest
|
|
class SyncVolumeRequest : public VolumeRequest {
|
|
public:
|
|
SyncVolumeRequest() : VolumeRequest(SYNC_VOLUME_REQUEST) {}
|
|
};
|
|
|
|
// SyncVolumeReply
|
|
class SyncVolumeReply : public ReplyRequest {
|
|
public:
|
|
SyncVolumeReply() : ReplyRequest(SYNC_VOLUME_REPLY) {}
|
|
};
|
|
|
|
// ReadFSInfoRequest
|
|
class ReadFSInfoRequest : public VolumeRequest {
|
|
public:
|
|
ReadFSInfoRequest() : VolumeRequest(READ_FS_INFO_REQUEST) {}
|
|
};
|
|
|
|
// ReadFSInfoReply
|
|
class ReadFSInfoReply : public ReplyRequest {
|
|
public:
|
|
ReadFSInfoReply() : ReplyRequest(READ_FS_INFO_REPLY) {}
|
|
|
|
fs_info info;
|
|
};
|
|
|
|
// WriteFSInfoRequest
|
|
class WriteFSInfoRequest : public VolumeRequest {
|
|
public:
|
|
WriteFSInfoRequest() : VolumeRequest(WRITE_FS_INFO_REQUEST) {}
|
|
|
|
fs_info info;
|
|
uint32 mask;
|
|
};
|
|
|
|
// WriteFSInfoReply
|
|
class WriteFSInfoReply : public ReplyRequest {
|
|
public:
|
|
WriteFSInfoReply() : ReplyRequest(WRITE_FS_INFO_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - vnodes
|
|
|
|
|
|
// LookupRequest
|
|
class LookupRequest : public NodeRequest {
|
|
public:
|
|
LookupRequest() : NodeRequest(LOOKUP_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address entryName;
|
|
bool traverseLink;
|
|
};
|
|
|
|
// LookupReply
|
|
class LookupReply : public ReplyRequest {
|
|
public:
|
|
LookupReply() : ReplyRequest(LOOKUP_REPLY) {}
|
|
|
|
ino_t vnid;
|
|
};
|
|
|
|
// GetVNodeNameRequest
|
|
class GetVNodeNameRequest : public NodeRequest {
|
|
public:
|
|
GetVNodeNameRequest() : NodeRequest(GET_VNODE_NAME_REQUEST) {}
|
|
|
|
size_t size;
|
|
};
|
|
|
|
// GetVNodeNameReply
|
|
class GetVNodeNameReply : public ReplyRequest {
|
|
public:
|
|
GetVNodeNameReply() : ReplyRequest(GET_VNODE_NAME_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
};
|
|
|
|
// ReadVNodeRequest
|
|
class ReadVNodeRequest : public VolumeRequest {
|
|
public:
|
|
ReadVNodeRequest() : VolumeRequest(READ_VNODE_REQUEST) {}
|
|
|
|
ino_t vnid;
|
|
bool reenter;
|
|
};
|
|
|
|
// ReadVNodeReply
|
|
class ReadVNodeReply : public ReplyRequest {
|
|
public:
|
|
ReadVNodeReply() : ReplyRequest(READ_VNODE_REPLY) {}
|
|
|
|
void* node;
|
|
int type;
|
|
uint32 flags;
|
|
FSVNodeCapabilities capabilities;
|
|
};
|
|
|
|
// WriteVNodeRequest
|
|
class WriteVNodeRequest : public NodeRequest {
|
|
public:
|
|
WriteVNodeRequest() : NodeRequest(WRITE_VNODE_REQUEST) {}
|
|
|
|
bool reenter;
|
|
};
|
|
|
|
// WriteVNodeReply
|
|
class WriteVNodeReply : public ReplyRequest {
|
|
public:
|
|
WriteVNodeReply() : ReplyRequest(WRITE_VNODE_REPLY) {}
|
|
};
|
|
|
|
// FSRemoveVNodeRequest
|
|
class FSRemoveVNodeRequest : public NodeRequest {
|
|
public:
|
|
FSRemoveVNodeRequest() : NodeRequest(FS_REMOVE_VNODE_REQUEST) {}
|
|
|
|
bool reenter;
|
|
};
|
|
|
|
// FSRemoveVNodeReply
|
|
class FSRemoveVNodeReply : public ReplyRequest {
|
|
public:
|
|
FSRemoveVNodeReply() : ReplyRequest(FS_REMOVE_VNODE_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - asynchronous I/O
|
|
|
|
|
|
// DoIORequest
|
|
class DoIORequest : public FileRequest {
|
|
public:
|
|
DoIORequest() : FileRequest(DO_IO_REQUEST) {}
|
|
|
|
off_t offset;
|
|
size_t length;
|
|
int32 request;
|
|
bool isWrite;
|
|
bool isVIP;
|
|
};
|
|
|
|
// DoIOReply
|
|
class DoIOReply : public ReplyRequest {
|
|
public:
|
|
DoIOReply() : ReplyRequest(DO_IO_REPLY) {}
|
|
};
|
|
|
|
// CancelIORequest
|
|
class CancelIORequest : public FileRequest {
|
|
public:
|
|
CancelIORequest() : FileRequest(CANCEL_IO_REQUEST) {}
|
|
|
|
int32 request;
|
|
};
|
|
|
|
// CancelIOReply
|
|
class CancelIOReply : public ReplyRequest {
|
|
public:
|
|
CancelIOReply() : ReplyRequest(CANCEL_IO_REPLY) {}
|
|
};
|
|
|
|
// IterativeIOGetVecsRequest
|
|
class IterativeIOGetVecsRequest : public VolumeRequest {
|
|
public:
|
|
IterativeIOGetVecsRequest()
|
|
: VolumeRequest(ITERATIVE_IO_GET_VECS_REQUEST) {}
|
|
|
|
void* cookie;
|
|
off_t offset;
|
|
int32 request;
|
|
size_t size;
|
|
uint32 vecCount;
|
|
};
|
|
|
|
// IterativeIOGetVecsReply
|
|
class IterativeIOGetVecsReply : public ReplyRequest {
|
|
public:
|
|
IterativeIOGetVecsReply() : ReplyRequest(ITERATIVE_IO_GET_VECS_REPLY) {}
|
|
|
|
enum { MAX_VECS = 8 };
|
|
|
|
file_io_vec vecs[MAX_VECS];
|
|
uint32 vecCount;
|
|
};
|
|
|
|
// IterativeIOFinishedRequest
|
|
class IterativeIOFinishedRequest : public VolumeRequest {
|
|
public:
|
|
IterativeIOFinishedRequest()
|
|
: VolumeRequest(ITERATIVE_IO_FINISHED_REQUEST) {}
|
|
|
|
void* cookie;
|
|
int32 request;
|
|
status_t status;
|
|
bool partialTransfer;
|
|
size_t bytesTransferred;
|
|
};
|
|
|
|
// IterativeIOFinishedReply
|
|
class IterativeIOFinishedReply : public ReplyRequest {
|
|
public:
|
|
IterativeIOFinishedReply() : ReplyRequest(ITERATIVE_IO_FINISHED_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - nodes
|
|
|
|
|
|
// IOCtlRequest
|
|
class IOCtlRequest : public FileRequest {
|
|
public:
|
|
IOCtlRequest() : FileRequest(IOCTL_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
uint32 command;
|
|
void* bufferParameter;
|
|
size_t lenParameter;
|
|
bool isBuffer; // if false, just pass bufferParameter
|
|
// otherwise use buffer
|
|
Address buffer;
|
|
int32 writeSize; // ignored unless isBuffer -- then
|
|
// it indicates the size of the buffer to allocate
|
|
};
|
|
|
|
// IOCtlReply
|
|
class IOCtlReply : public ReplyRequest {
|
|
public:
|
|
IOCtlReply() : ReplyRequest(IOCTL_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
status_t ioctlError; // we need a special handling since error
|
|
// may be a part of the client FS protocol
|
|
Address buffer;
|
|
};
|
|
|
|
// SetFlagsRequest
|
|
class SetFlagsRequest : public FileRequest {
|
|
public:
|
|
SetFlagsRequest() : FileRequest(SET_FLAGS_REQUEST) {}
|
|
|
|
int flags;
|
|
};
|
|
|
|
// SetFlagsReply
|
|
class SetFlagsReply : public ReplyRequest {
|
|
public:
|
|
SetFlagsReply() : ReplyRequest(SET_FLAGS_REPLY) {}
|
|
};
|
|
|
|
// SelectRequest
|
|
class SelectRequest : public FileRequest {
|
|
public:
|
|
SelectRequest() : FileRequest(SELECT_REQUEST) {}
|
|
|
|
uint8 event;
|
|
selectsync* sync;
|
|
};
|
|
|
|
// SelectReply
|
|
class SelectReply : public ReplyRequest {
|
|
public:
|
|
SelectReply() : ReplyRequest(SELECT_REPLY) {}
|
|
};
|
|
|
|
// DeselectRequest
|
|
class DeselectRequest : public FileRequest {
|
|
public:
|
|
DeselectRequest() : FileRequest(DESELECT_REQUEST) {}
|
|
|
|
uint8 event;
|
|
selectsync* sync;
|
|
};
|
|
|
|
// DeselectReply
|
|
class DeselectReply : public ReplyRequest {
|
|
public:
|
|
DeselectReply() : ReplyRequest(DESELECT_REPLY) {}
|
|
};
|
|
|
|
// FSyncRequest
|
|
class FSyncRequest : public NodeRequest {
|
|
public:
|
|
FSyncRequest() : NodeRequest(FSYNC_REQUEST) {}
|
|
};
|
|
|
|
// FSyncReply
|
|
class FSyncReply : public ReplyRequest {
|
|
public:
|
|
FSyncReply() : ReplyRequest(FSYNC_REPLY) {}
|
|
};
|
|
|
|
// ReadSymlinkRequest
|
|
class ReadSymlinkRequest : public NodeRequest {
|
|
public:
|
|
ReadSymlinkRequest() : NodeRequest(READ_SYMLINK_REQUEST) {}
|
|
|
|
size_t size;
|
|
};
|
|
|
|
// ReadSymlinkReply
|
|
class ReadSymlinkReply : public ReplyRequest {
|
|
public:
|
|
ReadSymlinkReply() : ReplyRequest(READ_SYMLINK_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
size_t bytesRead;
|
|
};
|
|
|
|
// CreateSymlinkRequest
|
|
class CreateSymlinkRequest : public NodeRequest {
|
|
public:
|
|
CreateSymlinkRequest() : NodeRequest(CREATE_SYMLINK_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
Address target;
|
|
int mode;
|
|
};
|
|
|
|
// CreateSymlinkReply
|
|
class CreateSymlinkReply : public ReplyRequest {
|
|
public:
|
|
CreateSymlinkReply() : ReplyRequest(CREATE_SYMLINK_REPLY) {}
|
|
};
|
|
|
|
// LinkRequest
|
|
class LinkRequest : public NodeRequest {
|
|
public:
|
|
LinkRequest() : NodeRequest(LINK_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
void* target;
|
|
};
|
|
|
|
// LinkReply
|
|
class LinkReply : public ReplyRequest {
|
|
public:
|
|
LinkReply() : ReplyRequest(LINK_REPLY) {}
|
|
};
|
|
|
|
// UnlinkRequest
|
|
class UnlinkRequest : public NodeRequest {
|
|
public:
|
|
UnlinkRequest() : NodeRequest(UNLINK_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
};
|
|
|
|
// UnlinkReply
|
|
class UnlinkReply : public ReplyRequest {
|
|
public:
|
|
UnlinkReply() : ReplyRequest(UNLINK_REPLY) {}
|
|
};
|
|
|
|
// RenameRequest
|
|
class RenameRequest : public VolumeRequest {
|
|
public:
|
|
RenameRequest() : VolumeRequest(RENAME_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
void* oldDir;
|
|
Address oldName;
|
|
void* newDir;
|
|
Address newName;
|
|
};
|
|
|
|
// RenameReply
|
|
class RenameReply : public ReplyRequest {
|
|
public:
|
|
RenameReply() : ReplyRequest(RENAME_REPLY) {}
|
|
};
|
|
|
|
// AccessRequest
|
|
class AccessRequest : public NodeRequest {
|
|
public:
|
|
AccessRequest() : NodeRequest(ACCESS_REQUEST) {}
|
|
|
|
int mode;
|
|
};
|
|
|
|
// AccessReply
|
|
class AccessReply : public ReplyRequest {
|
|
public:
|
|
AccessReply() : ReplyRequest(ACCESS_REPLY) {}
|
|
};
|
|
|
|
// ReadStatRequest
|
|
class ReadStatRequest : public NodeRequest {
|
|
public:
|
|
ReadStatRequest() : NodeRequest(READ_STAT_REQUEST) {}
|
|
};
|
|
|
|
// ReadStatReply
|
|
class ReadStatReply : public ReplyRequest {
|
|
public:
|
|
ReadStatReply() : ReplyRequest(READ_STAT_REPLY) {}
|
|
|
|
struct stat st;
|
|
};
|
|
|
|
// WriteStatRequest
|
|
class WriteStatRequest : public NodeRequest {
|
|
public:
|
|
WriteStatRequest() : NodeRequest(WRITE_STAT_REQUEST) {}
|
|
|
|
struct stat st;
|
|
uint32 mask;
|
|
};
|
|
|
|
// WriteStatReply
|
|
class WriteStatReply : public ReplyRequest {
|
|
public:
|
|
WriteStatReply() : ReplyRequest(WRITE_STAT_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - files
|
|
|
|
|
|
// CreateRequest
|
|
class CreateRequest : public NodeRequest {
|
|
public:
|
|
CreateRequest() : NodeRequest(CREATE_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
int openMode;
|
|
int mode;
|
|
};
|
|
|
|
// CreateReply
|
|
class CreateReply : public ReplyRequest {
|
|
public:
|
|
CreateReply() : ReplyRequest(CREATE_REPLY) {}
|
|
|
|
ino_t vnid;
|
|
void* fileCookie;
|
|
};
|
|
|
|
// OpenRequest
|
|
class OpenRequest : public NodeRequest {
|
|
public:
|
|
OpenRequest() : NodeRequest(OPEN_REQUEST) {}
|
|
|
|
int openMode;
|
|
};
|
|
|
|
// OpenReply
|
|
class OpenReply : public ReplyRequest {
|
|
public:
|
|
OpenReply() : ReplyRequest(OPEN_REPLY) {}
|
|
|
|
void* fileCookie;
|
|
};
|
|
|
|
// CloseRequest
|
|
class CloseRequest : public FileRequest {
|
|
public:
|
|
CloseRequest() : FileRequest(CLOSE_REQUEST) {}
|
|
};
|
|
|
|
// CloseReply
|
|
class CloseReply : public ReplyRequest {
|
|
public:
|
|
CloseReply() : ReplyRequest(CLOSE_REPLY) {}
|
|
};
|
|
|
|
// FreeCookieRequest
|
|
class FreeCookieRequest : public FileRequest {
|
|
public:
|
|
FreeCookieRequest() : FileRequest(FREE_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeCookieReply
|
|
class FreeCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeCookieReply() : ReplyRequest(FREE_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadRequest
|
|
class ReadRequest : public FileRequest {
|
|
public:
|
|
ReadRequest() : FileRequest(READ_REQUEST) {}
|
|
|
|
off_t pos;
|
|
size_t size;
|
|
};
|
|
|
|
// ReadReply
|
|
class ReadReply : public ReplyRequest {
|
|
public:
|
|
ReadReply() : ReplyRequest(READ_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
size_t bytesRead;
|
|
};
|
|
|
|
// WriteRequest
|
|
class WriteRequest : public FileRequest {
|
|
public:
|
|
WriteRequest() : FileRequest(WRITE_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
off_t pos;
|
|
};
|
|
|
|
// WriteReply
|
|
class WriteReply : public ReplyRequest {
|
|
public:
|
|
WriteReply() : ReplyRequest(WRITE_REPLY) {}
|
|
|
|
size_t bytesWritten;
|
|
};
|
|
|
|
|
|
// #pragma mark - directories
|
|
|
|
|
|
// CreateDirRequest
|
|
class CreateDirRequest : public NodeRequest {
|
|
public:
|
|
CreateDirRequest() : NodeRequest(CREATE_DIR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
int mode;
|
|
};
|
|
|
|
// CreateDirReply
|
|
class CreateDirReply : public ReplyRequest {
|
|
public:
|
|
CreateDirReply() : ReplyRequest(CREATE_DIR_REPLY) {}
|
|
};
|
|
|
|
// RemoveDirRequest
|
|
class RemoveDirRequest : public NodeRequest {
|
|
public:
|
|
RemoveDirRequest() : NodeRequest(REMOVE_DIR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
};
|
|
|
|
// RemoveDirReply
|
|
class RemoveDirReply : public ReplyRequest {
|
|
public:
|
|
RemoveDirReply() : ReplyRequest(REMOVE_DIR_REPLY) {}
|
|
};
|
|
|
|
// OpenDirRequest
|
|
class OpenDirRequest : public NodeRequest {
|
|
public:
|
|
OpenDirRequest() : NodeRequest(OPEN_DIR_REQUEST) {}
|
|
};
|
|
|
|
// OpenDirReply
|
|
class OpenDirReply : public ReplyRequest {
|
|
public:
|
|
OpenDirReply() : ReplyRequest(OPEN_DIR_REPLY) {}
|
|
|
|
void* dirCookie;
|
|
};
|
|
|
|
// CloseDirRequest
|
|
class CloseDirRequest : public DirRequest {
|
|
public:
|
|
CloseDirRequest() : DirRequest(CLOSE_DIR_REQUEST) {}
|
|
};
|
|
|
|
// CloseDirReply
|
|
class CloseDirReply : public ReplyRequest {
|
|
public:
|
|
CloseDirReply() : ReplyRequest(CLOSE_DIR_REPLY) {}
|
|
};
|
|
|
|
// FreeDirCookieRequest
|
|
class FreeDirCookieRequest : public DirRequest {
|
|
public:
|
|
FreeDirCookieRequest() : DirRequest(FREE_DIR_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeDirCookieReply
|
|
class FreeDirCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeDirCookieReply() : ReplyRequest(FREE_DIR_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadDirRequest
|
|
class ReadDirRequest : public DirRequest {
|
|
public:
|
|
ReadDirRequest() : DirRequest(READ_DIR_REQUEST) {}
|
|
|
|
size_t bufferSize;
|
|
uint32 count;
|
|
};
|
|
|
|
// ReadDirReply
|
|
class ReadDirReply : public ReplyRequest {
|
|
public:
|
|
ReadDirReply() : ReplyRequest(READ_DIR_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
uint32 count;
|
|
Address buffer;
|
|
};
|
|
|
|
// RewindDirRequest
|
|
class RewindDirRequest : public DirRequest {
|
|
public:
|
|
RewindDirRequest() : DirRequest(REWIND_DIR_REQUEST) {}
|
|
};
|
|
|
|
// RewindDirReply
|
|
class RewindDirReply : public ReplyRequest {
|
|
public:
|
|
RewindDirReply() : ReplyRequest(REWIND_DIR_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - attribute directories
|
|
|
|
|
|
// OpenAttrDirRequest
|
|
class OpenAttrDirRequest : public NodeRequest {
|
|
public:
|
|
OpenAttrDirRequest() : NodeRequest(OPEN_ATTR_DIR_REQUEST) {}
|
|
};
|
|
|
|
// OpenAttrDirReply
|
|
class OpenAttrDirReply : public ReplyRequest {
|
|
public:
|
|
OpenAttrDirReply() : ReplyRequest(OPEN_ATTR_DIR_REPLY) {}
|
|
|
|
void* attrDirCookie;
|
|
};
|
|
|
|
// CloseAttrDirRequest
|
|
class CloseAttrDirRequest : public AttrDirRequest {
|
|
public:
|
|
CloseAttrDirRequest() : AttrDirRequest(CLOSE_ATTR_DIR_REQUEST) {}
|
|
};
|
|
|
|
// CloseAttrDirReply
|
|
class CloseAttrDirReply : public ReplyRequest {
|
|
public:
|
|
CloseAttrDirReply() : ReplyRequest(CLOSE_ATTR_DIR_REPLY) {}
|
|
};
|
|
|
|
// FreeAttrDirCookieRequest
|
|
class FreeAttrDirCookieRequest : public AttrDirRequest {
|
|
public:
|
|
FreeAttrDirCookieRequest() : AttrDirRequest(FREE_ATTR_DIR_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeAttrDirCookieReply
|
|
class FreeAttrDirCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeAttrDirCookieReply() : ReplyRequest(FREE_ATTR_DIR_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadAttrDirRequest
|
|
class ReadAttrDirRequest : public AttrDirRequest {
|
|
public:
|
|
ReadAttrDirRequest() : AttrDirRequest(READ_ATTR_DIR_REQUEST) {}
|
|
|
|
size_t bufferSize;
|
|
uint32 count;
|
|
};
|
|
|
|
// ReadAttrDirReply
|
|
class ReadAttrDirReply : public ReplyRequest {
|
|
public:
|
|
ReadAttrDirReply() : ReplyRequest(READ_ATTR_DIR_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
uint32 count;
|
|
Address buffer;
|
|
};
|
|
|
|
// RewindAttrDirRequest
|
|
class RewindAttrDirRequest : public AttrDirRequest {
|
|
public:
|
|
RewindAttrDirRequest() : AttrDirRequest(REWIND_ATTR_DIR_REQUEST) {}
|
|
};
|
|
|
|
// RewindAttrDirReply
|
|
class RewindAttrDirReply : public ReplyRequest {
|
|
public:
|
|
RewindAttrDirReply() : ReplyRequest(REWIND_ATTR_DIR_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - attributes
|
|
|
|
|
|
// CreateAttrRequest
|
|
class CreateAttrRequest : public NodeRequest {
|
|
public:
|
|
CreateAttrRequest() : NodeRequest(CREATE_ATTR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
uint32 type;
|
|
int openMode;
|
|
};
|
|
|
|
// CreateAttrReply
|
|
class CreateAttrReply : public ReplyRequest {
|
|
public:
|
|
CreateAttrReply() : ReplyRequest(CREATE_ATTR_REPLY) {}
|
|
|
|
void* attrCookie;
|
|
};
|
|
|
|
// OpenAttrRequest
|
|
class OpenAttrRequest : public NodeRequest {
|
|
public:
|
|
OpenAttrRequest() : NodeRequest(OPEN_ATTR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
int openMode;
|
|
};
|
|
|
|
// OpenAttrReply
|
|
class OpenAttrReply : public ReplyRequest {
|
|
public:
|
|
OpenAttrReply() : ReplyRequest(OPEN_ATTR_REPLY) {}
|
|
|
|
void* attrCookie;
|
|
};
|
|
|
|
// CloseAttrRequest
|
|
class CloseAttrRequest : public AttributeRequest {
|
|
public:
|
|
CloseAttrRequest() : AttributeRequest(CLOSE_ATTR_REQUEST) {}
|
|
};
|
|
|
|
// CloseAttrReply
|
|
class CloseAttrReply : public ReplyRequest {
|
|
public:
|
|
CloseAttrReply() : ReplyRequest(CLOSE_ATTR_REPLY) {}
|
|
};
|
|
|
|
// FreeAttrCookieRequest
|
|
class FreeAttrCookieRequest : public AttributeRequest {
|
|
public:
|
|
FreeAttrCookieRequest() : AttributeRequest(FREE_ATTR_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeAttrCookieReply
|
|
class FreeAttrCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeAttrCookieReply() : ReplyRequest(FREE_ATTR_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadAttrRequest
|
|
class ReadAttrRequest : public AttributeRequest {
|
|
public:
|
|
ReadAttrRequest() : AttributeRequest(READ_ATTR_REQUEST) {}
|
|
|
|
off_t pos;
|
|
size_t size;
|
|
};
|
|
|
|
// ReadAttrReply
|
|
class ReadAttrReply : public ReplyRequest {
|
|
public:
|
|
ReadAttrReply() : ReplyRequest(READ_ATTR_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
size_t bytesRead;
|
|
};
|
|
|
|
// WriteAttrRequest
|
|
class WriteAttrRequest : public AttributeRequest {
|
|
public:
|
|
WriteAttrRequest() : AttributeRequest(WRITE_ATTR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
off_t pos;
|
|
size_t size;
|
|
};
|
|
|
|
// WriteAttrReply
|
|
class WriteAttrReply : public ReplyRequest {
|
|
public:
|
|
WriteAttrReply() : ReplyRequest(WRITE_ATTR_REPLY) {}
|
|
|
|
size_t bytesWritten;
|
|
};
|
|
|
|
// ReadAttrStatRequest
|
|
class ReadAttrStatRequest : public AttributeRequest {
|
|
public:
|
|
ReadAttrStatRequest() : AttributeRequest(READ_ATTR_STAT_REQUEST) {}
|
|
};
|
|
|
|
// ReadAttrStatReply
|
|
class ReadAttrStatReply : public ReplyRequest {
|
|
public:
|
|
ReadAttrStatReply() : ReplyRequest(READ_ATTR_STAT_REPLY) {}
|
|
|
|
struct stat st;
|
|
};
|
|
|
|
// WriteAttrStatRequest
|
|
class WriteAttrStatRequest : public AttributeRequest {
|
|
public:
|
|
WriteAttrStatRequest() : AttributeRequest(WRITE_ATTR_STAT_REQUEST) {}
|
|
|
|
struct stat st;
|
|
uint32 mask;
|
|
};
|
|
|
|
// WriteAttrStatReply
|
|
class WriteAttrStatReply : public ReplyRequest {
|
|
public:
|
|
WriteAttrStatReply() : ReplyRequest(WRITE_ATTR_STAT_REPLY) {}
|
|
};
|
|
|
|
// RenameAttrRequest
|
|
class RenameAttrRequest : public VolumeRequest {
|
|
public:
|
|
RenameAttrRequest() : VolumeRequest(RENAME_ATTR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
void* oldNode;
|
|
void* newNode;
|
|
Address oldName;
|
|
Address newName;
|
|
};
|
|
|
|
// RenameAttrReply
|
|
class RenameAttrReply : public ReplyRequest {
|
|
public:
|
|
RenameAttrReply() : ReplyRequest(RENAME_ATTR_REPLY) {}
|
|
};
|
|
|
|
// RemoveAttrRequest
|
|
class RemoveAttrRequest : public NodeRequest {
|
|
public:
|
|
RemoveAttrRequest() : NodeRequest(REMOVE_ATTR_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
};
|
|
|
|
// RemoveAttrReply
|
|
class RemoveAttrReply : public ReplyRequest {
|
|
public:
|
|
RemoveAttrReply() : ReplyRequest(REMOVE_ATTR_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - indices
|
|
|
|
|
|
// OpenIndexDirRequest
|
|
class OpenIndexDirRequest : public VolumeRequest {
|
|
public:
|
|
OpenIndexDirRequest() : VolumeRequest(OPEN_INDEX_DIR_REQUEST) {}
|
|
};
|
|
|
|
// OpenIndexDirReply
|
|
class OpenIndexDirReply : public ReplyRequest {
|
|
public:
|
|
OpenIndexDirReply() : ReplyRequest(OPEN_INDEX_DIR_REPLY) {}
|
|
|
|
void* indexDirCookie;
|
|
};
|
|
|
|
// CloseIndexDirRequest
|
|
class CloseIndexDirRequest : public IndexDirRequest {
|
|
public:
|
|
CloseIndexDirRequest() : IndexDirRequest(CLOSE_INDEX_DIR_REQUEST) {}
|
|
};
|
|
|
|
// CloseIndexDirReply
|
|
class CloseIndexDirReply : public ReplyRequest {
|
|
public:
|
|
CloseIndexDirReply() : ReplyRequest(CLOSE_INDEX_DIR_REPLY) {}
|
|
};
|
|
|
|
// FreeIndexDirCookieRequest
|
|
class FreeIndexDirCookieRequest : public IndexDirRequest {
|
|
public:
|
|
FreeIndexDirCookieRequest()
|
|
: IndexDirRequest(FREE_INDEX_DIR_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeIndexDirCookieReply
|
|
class FreeIndexDirCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeIndexDirCookieReply() : ReplyRequest(FREE_INDEX_DIR_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadIndexDirRequest
|
|
class ReadIndexDirRequest : public IndexDirRequest {
|
|
public:
|
|
ReadIndexDirRequest() : IndexDirRequest(READ_INDEX_DIR_REQUEST) {}
|
|
|
|
size_t bufferSize;
|
|
uint32 count;
|
|
};
|
|
|
|
// ReadIndexDirReply
|
|
class ReadIndexDirReply : public ReplyRequest {
|
|
public:
|
|
ReadIndexDirReply() : ReplyRequest(READ_INDEX_DIR_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
uint32 count;
|
|
Address buffer;
|
|
};
|
|
|
|
// RewindIndexDirRequest
|
|
class RewindIndexDirRequest : public IndexDirRequest {
|
|
public:
|
|
RewindIndexDirRequest() : IndexDirRequest(REWIND_INDEX_DIR_REQUEST) {}
|
|
};
|
|
|
|
// RewindIndexDirReply
|
|
class RewindIndexDirReply : public ReplyRequest {
|
|
public:
|
|
RewindIndexDirReply() : ReplyRequest(REWIND_INDEX_DIR_REPLY) {}
|
|
};
|
|
|
|
// CreateIndexRequest
|
|
class CreateIndexRequest : public VolumeRequest {
|
|
public:
|
|
CreateIndexRequest() : VolumeRequest(CREATE_INDEX_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
uint32 type;
|
|
uint32 flags;
|
|
};
|
|
|
|
// CreateIndexReply
|
|
class CreateIndexReply : public ReplyRequest {
|
|
public:
|
|
CreateIndexReply() : ReplyRequest(CREATE_INDEX_REPLY) {}
|
|
};
|
|
|
|
// RemoveIndexRequest
|
|
class RemoveIndexRequest : public VolumeRequest {
|
|
public:
|
|
RemoveIndexRequest() : VolumeRequest(REMOVE_INDEX_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
};
|
|
|
|
// RemoveIndexReply
|
|
class RemoveIndexReply : public ReplyRequest {
|
|
public:
|
|
RemoveIndexReply() : ReplyRequest(REMOVE_INDEX_REPLY) {}
|
|
};
|
|
|
|
// ReadIndexStatRequest
|
|
class ReadIndexStatRequest : public VolumeRequest {
|
|
public:
|
|
ReadIndexStatRequest() : VolumeRequest(READ_INDEX_STAT_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address name;
|
|
};
|
|
|
|
// ReadIndexStatReply
|
|
class ReadIndexStatReply : public ReplyRequest {
|
|
public:
|
|
ReadIndexStatReply() : ReplyRequest(READ_INDEX_STAT_REPLY) {}
|
|
|
|
struct stat st;
|
|
};
|
|
|
|
|
|
// #pragma mark - queries
|
|
|
|
|
|
// OpenQueryRequest
|
|
class OpenQueryRequest : public VolumeRequest {
|
|
public:
|
|
OpenQueryRequest() : VolumeRequest(OPEN_QUERY_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address queryString;
|
|
uint32 flags;
|
|
port_id port;
|
|
uint32 token;
|
|
};
|
|
|
|
// OpenQueryReply
|
|
class OpenQueryReply : public ReplyRequest {
|
|
public:
|
|
OpenQueryReply() : ReplyRequest(OPEN_QUERY_REPLY) {}
|
|
|
|
void* queryCookie;
|
|
};
|
|
|
|
// CloseQueryRequest
|
|
class CloseQueryRequest : public QueryRequest {
|
|
public:
|
|
CloseQueryRequest() : QueryRequest(CLOSE_QUERY_REQUEST) {}
|
|
};
|
|
|
|
// CloseQueryReply
|
|
class CloseQueryReply : public ReplyRequest {
|
|
public:
|
|
CloseQueryReply() : ReplyRequest(CLOSE_QUERY_REPLY) {}
|
|
};
|
|
|
|
// FreeQueryCookieRequest
|
|
class FreeQueryCookieRequest : public QueryRequest {
|
|
public:
|
|
FreeQueryCookieRequest() : QueryRequest(FREE_QUERY_COOKIE_REQUEST) {}
|
|
};
|
|
|
|
// FreeQueryCookieReply
|
|
class FreeQueryCookieReply : public ReplyRequest {
|
|
public:
|
|
FreeQueryCookieReply() : ReplyRequest(FREE_QUERY_COOKIE_REPLY) {}
|
|
};
|
|
|
|
// ReadQueryRequest
|
|
class ReadQueryRequest : public QueryRequest {
|
|
public:
|
|
ReadQueryRequest() : QueryRequest(READ_QUERY_REQUEST) {}
|
|
|
|
size_t bufferSize;
|
|
uint32 count;
|
|
};
|
|
|
|
// ReadQueryReply
|
|
class ReadQueryReply : public ReplyRequest {
|
|
public:
|
|
ReadQueryReply() : ReplyRequest(READ_QUERY_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
uint32 count;
|
|
Address buffer;
|
|
};
|
|
|
|
// RewindQueryRequest
|
|
class RewindQueryRequest : public QueryRequest {
|
|
public:
|
|
RewindQueryRequest() : QueryRequest(REWIND_QUERY_REQUEST) {}
|
|
};
|
|
|
|
// RewindQueryReply
|
|
class RewindQueryReply : public ReplyRequest {
|
|
public:
|
|
RewindQueryReply() : ReplyRequest(REWIND_QUERY_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark ----- node monitoring -----
|
|
|
|
|
|
// NodeMonitoringEventRequest
|
|
class NodeMonitoringEventRequest : public KernelRequest {
|
|
public:
|
|
NodeMonitoringEventRequest()
|
|
: KernelRequest(NODE_MONITORING_EVENT_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
void* listener;
|
|
Address event;
|
|
};
|
|
|
|
// NodeMonitoringEventReply
|
|
class NodeMonitoringEventReply : public ReplyRequest {
|
|
public:
|
|
NodeMonitoringEventReply() : ReplyRequest(NODE_MONITORING_EVENT_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark -
|
|
// #pragma mark ----- userland requests -----
|
|
|
|
// #pragma mark -
|
|
// #pragma mark ----- notifications -----
|
|
|
|
// NotifyListenerRequest
|
|
class NotifyListenerRequest : public Request {
|
|
public:
|
|
NotifyListenerRequest() : Request(NOTIFY_LISTENER_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
int32 operation;
|
|
uint32 details; // for B_STAT_CHANGED:statFields
|
|
// and B_ATTRIBUTE_CHANGED:cause
|
|
dev_t device;
|
|
ino_t oldDirectory;
|
|
ino_t directory;
|
|
ino_t node;
|
|
Address oldName;
|
|
Address name;
|
|
};
|
|
|
|
// NotifyListenerReply
|
|
class NotifyListenerReply : public ReplyRequest {
|
|
public:
|
|
NotifyListenerReply() : ReplyRequest(NOTIFY_LISTENER_REPLY) {}
|
|
};
|
|
|
|
// NotifySelectRequest
|
|
class NotifySelectEventRequest : public Request {
|
|
public:
|
|
NotifySelectEventRequest() : Request(NOTIFY_SELECT_EVENT_REQUEST) {}
|
|
|
|
selectsync* sync;
|
|
uint8 event;
|
|
bool unspecifiedEvent;
|
|
};
|
|
|
|
// NotifySelectEventReply
|
|
class NotifySelectEventReply : public ReplyRequest {
|
|
public:
|
|
NotifySelectEventReply() : ReplyRequest(NOTIFY_SELECT_EVENT_REPLY) {}
|
|
};
|
|
|
|
// NotifyQueryRequest
|
|
class NotifyQueryRequest : public Request {
|
|
public:
|
|
NotifyQueryRequest() : Request(NOTIFY_QUERY_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
port_id port;
|
|
int32 token;
|
|
int32 operation; // B_ENTRY_{CREATED,REMOVED}
|
|
dev_t device;
|
|
ino_t directory;
|
|
ino_t node;
|
|
Address name;
|
|
};
|
|
|
|
// NotifyQueryReply
|
|
class NotifyQueryReply : public ReplyRequest {
|
|
public:
|
|
NotifyQueryReply() : ReplyRequest(NOTIFY_QUERY_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark -
|
|
// #pragma mark ----- vnodes -----
|
|
|
|
// GetVNodeRequest
|
|
class GetVNodeRequest : public Request {
|
|
public:
|
|
GetVNodeRequest() : Request(GET_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// GetVNodeReply
|
|
class GetVNodeReply : public ReplyRequest {
|
|
public:
|
|
GetVNodeReply() : ReplyRequest(GET_VNODE_REPLY) {}
|
|
|
|
void* node;
|
|
};
|
|
|
|
// PutVNodeRequest
|
|
class PutVNodeRequest : public Request {
|
|
public:
|
|
PutVNodeRequest() : Request(PUT_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// PutVNodeReply
|
|
class PutVNodeReply : public ReplyRequest {
|
|
public:
|
|
PutVNodeReply() : ReplyRequest(PUT_VNODE_REPLY) {}
|
|
};
|
|
|
|
// AcquireVNodeRequest
|
|
class AcquireVNodeRequest : public Request {
|
|
public:
|
|
AcquireVNodeRequest() : Request(ACQUIRE_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// AcquireVNodeReply
|
|
class AcquireVNodeReply : public ReplyRequest {
|
|
public:
|
|
AcquireVNodeReply() : ReplyRequest(ACQUIRE_VNODE_REPLY) {}
|
|
};
|
|
|
|
// NewVNodeRequest
|
|
class NewVNodeRequest : public Request {
|
|
public:
|
|
NewVNodeRequest() : Request(NEW_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
void* node;
|
|
FSVNodeCapabilities capabilities;
|
|
};
|
|
|
|
// NewVNodeReply
|
|
class NewVNodeReply : public ReplyRequest {
|
|
public:
|
|
NewVNodeReply() : ReplyRequest(NEW_VNODE_REPLY) {}
|
|
};
|
|
|
|
// PublishVNodeRequest
|
|
class PublishVNodeRequest : public Request {
|
|
public:
|
|
PublishVNodeRequest() : Request(PUBLISH_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
void* node;
|
|
int type;
|
|
uint32 flags;
|
|
FSVNodeCapabilities capabilities;
|
|
};
|
|
|
|
// PublishVNodeReply
|
|
class PublishVNodeReply : public ReplyRequest {
|
|
public:
|
|
PublishVNodeReply() : ReplyRequest(PUBLISH_VNODE_REPLY) {}
|
|
};
|
|
|
|
// RemoveVNodeRequest
|
|
class RemoveVNodeRequest : public Request {
|
|
public:
|
|
RemoveVNodeRequest() : Request(REMOVE_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// RemoveVNodeReply
|
|
class RemoveVNodeReply : public ReplyRequest {
|
|
public:
|
|
RemoveVNodeReply() : ReplyRequest(REMOVE_VNODE_REPLY) {}
|
|
};
|
|
|
|
// UnremoveVNodeRequest
|
|
class UnremoveVNodeRequest : public Request {
|
|
public:
|
|
UnremoveVNodeRequest() : Request(UNREMOVE_VNODE_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// UnremoveVNodeReply
|
|
class UnremoveVNodeReply : public ReplyRequest {
|
|
public:
|
|
UnremoveVNodeReply() : ReplyRequest(UNREMOVE_VNODE_REPLY) {}
|
|
};
|
|
|
|
// GetVNodeRemovedRequest
|
|
class GetVNodeRemovedRequest : public Request {
|
|
public:
|
|
GetVNodeRemovedRequest() : Request(GET_VNODE_REMOVED_REQUEST) {}
|
|
|
|
dev_t nsid;
|
|
ino_t vnid;
|
|
};
|
|
|
|
// GetVNodeRemovedReply
|
|
class GetVNodeRemovedReply : public ReplyRequest {
|
|
public:
|
|
GetVNodeRemovedReply() : ReplyRequest(GET_VNODE_REMOVED_REPLY) {}
|
|
|
|
bool removed;
|
|
};
|
|
|
|
|
|
// #pragma mark - file cache
|
|
|
|
|
|
// FileCacheCreateRequest
|
|
class FileCacheCreateRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheCreateRequest() : FileCacheRequest(FILE_CACHE_CREATE_REQUEST) {}
|
|
|
|
off_t size;
|
|
};
|
|
|
|
// FileCacheCreateReply
|
|
class FileCacheCreateReply : public ReplyRequest {
|
|
public:
|
|
FileCacheCreateReply() : ReplyRequest(FILE_CACHE_CREATE_REPLY) {}
|
|
};
|
|
|
|
// FileCacheDeleteRequest
|
|
class FileCacheDeleteRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheDeleteRequest() : FileCacheRequest(FILE_CACHE_DELETE_REQUEST) {}
|
|
};
|
|
|
|
// FileCacheDeleteReply
|
|
class FileCacheDeleteReply : public ReplyRequest {
|
|
public:
|
|
FileCacheDeleteReply() : ReplyRequest(FILE_CACHE_DELETE_REPLY) {}
|
|
};
|
|
|
|
// FileCacheSetEnabledRequest
|
|
class FileCacheSetEnabledRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheSetEnabledRequest()
|
|
: FileCacheRequest(FILE_CACHE_SET_ENABLED_REQUEST) {}
|
|
|
|
bool enabled;
|
|
};
|
|
|
|
// FileCacheSetEnabledReply
|
|
class FileCacheSetEnabledReply : public ReplyRequest {
|
|
public:
|
|
FileCacheSetEnabledReply() : ReplyRequest(FILE_CACHE_SET_ENABLED_REPLY) {}
|
|
};
|
|
|
|
// FileCacheSetSizeRequest
|
|
class FileCacheSetSizeRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheSetSizeRequest() : FileCacheRequest(FILE_CACHE_SET_SIZE_REQUEST) {}
|
|
|
|
size_t size;
|
|
};
|
|
|
|
// FileCacheSetSizeReply
|
|
class FileCacheSetSizeReply : public ReplyRequest {
|
|
public:
|
|
FileCacheSetSizeReply() : ReplyRequest(FILE_CACHE_SET_SIZE_REPLY) {}
|
|
};
|
|
|
|
|
|
// FileCacheSyncRequest
|
|
class FileCacheSyncRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheSyncRequest() : FileCacheRequest(FILE_CACHE_SYNC_REQUEST) {}
|
|
};
|
|
|
|
// FileCacheSyncReply
|
|
class FileCacheSyncReply : public ReplyRequest {
|
|
public:
|
|
FileCacheSyncReply() : ReplyRequest(FILE_CACHE_SYNC_REPLY) {}
|
|
};
|
|
|
|
|
|
// FileCacheReadRequest
|
|
class FileCacheReadRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheReadRequest() : FileCacheRequest(FILE_CACHE_READ_REQUEST) {}
|
|
|
|
void* cookie;
|
|
off_t pos;
|
|
size_t size;
|
|
};
|
|
|
|
// FileCacheReadReply
|
|
class FileCacheReadReply : public ReplyRequest {
|
|
public:
|
|
FileCacheReadReply() : ReplyRequest(FILE_CACHE_READ_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
size_t bytesRead;
|
|
};
|
|
|
|
// FileCacheWriteRequest
|
|
class FileCacheWriteRequest : public FileCacheRequest {
|
|
public:
|
|
FileCacheWriteRequest() : FileCacheRequest(FILE_CACHE_WRITE_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
void* cookie;
|
|
Address buffer;
|
|
size_t size;
|
|
off_t pos;
|
|
};
|
|
|
|
// FileCacheWriteReply
|
|
class FileCacheWriteReply : public ReplyRequest {
|
|
public:
|
|
FileCacheWriteReply() : ReplyRequest(FILE_CACHE_WRITE_REPLY) {}
|
|
|
|
size_t bytesWritten;
|
|
};
|
|
|
|
|
|
// #pragma mark - I/O
|
|
|
|
|
|
// DoIterativeFDIORequest
|
|
class DoIterativeFDIORequest : public Request {
|
|
public:
|
|
DoIterativeFDIORequest() : Request(DO_ITERATIVE_FD_IO_REQUEST) {}
|
|
|
|
enum { MAX_VECS = 8 };
|
|
|
|
dev_t nsid;
|
|
int fd;
|
|
int32 request;
|
|
void* cookie;
|
|
file_io_vec vecs[MAX_VECS];
|
|
uint32 vecCount;
|
|
};
|
|
|
|
// DoIterativeFDIOReply
|
|
class DoIterativeFDIOReply : public ReplyRequest {
|
|
public:
|
|
DoIterativeFDIOReply() : ReplyRequest(DO_ITERATIVE_FD_IO_REPLY) {}
|
|
};
|
|
|
|
// ReadFromIORequestRequest
|
|
class ReadFromIORequestRequest : public IORequestRequest {
|
|
public:
|
|
ReadFromIORequestRequest()
|
|
: IORequestRequest(READ_FROM_IO_REQUEST_REQUEST) {}
|
|
|
|
size_t size;
|
|
};
|
|
|
|
// ReadFromIORequestReply
|
|
class ReadFromIORequestReply : public ReplyRequest {
|
|
public:
|
|
ReadFromIORequestReply() : ReplyRequest(READ_FROM_IO_REQUEST_REPLY) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
};
|
|
|
|
// WriteToIORequestRequest
|
|
class WriteToIORequestRequest : public IORequestRequest {
|
|
public:
|
|
WriteToIORequestRequest() : IORequestRequest(WRITE_TO_IO_REQUEST_REQUEST) {}
|
|
status_t GetAddressInfos(AddressInfo* infos, int32* count);
|
|
|
|
Address buffer;
|
|
};
|
|
|
|
// WriteToIORequestReply
|
|
class WriteToIORequestReply : public ReplyRequest {
|
|
public:
|
|
WriteToIORequestReply() : ReplyRequest(WRITE_TO_IO_REQUEST_REPLY) {}
|
|
};
|
|
|
|
// NotifyIORequestRequest
|
|
class NotifyIORequestRequest : public IORequestRequest {
|
|
public:
|
|
NotifyIORequestRequest() : IORequestRequest(NOTIFY_IO_REQUEST_REQUEST) {}
|
|
|
|
enum { MAX_VECS = 8 };
|
|
|
|
status_t status;
|
|
};
|
|
|
|
// NotifyIORequestReply
|
|
class NotifyIORequestReply : public ReplyRequest {
|
|
public:
|
|
NotifyIORequestReply() : ReplyRequest(NOTIFY_IO_REQUEST_REPLY) {}
|
|
};
|
|
|
|
|
|
// #pragma mark - node monitoring
|
|
|
|
|
|
// AddNodeListenerRequest
|
|
class AddNodeListenerRequest : public Request {
|
|
public:
|
|
AddNodeListenerRequest() : Request(ADD_NODE_LISTENER_REQUEST) {}
|
|
|
|
dev_t device;
|
|
ino_t node;
|
|
uint32 flags;
|
|
void* listener;
|
|
};
|
|
|
|
// AddNodeListenerReply
|
|
class AddNodeListenerReply : public ReplyRequest {
|
|
public:
|
|
AddNodeListenerReply() : ReplyRequest(ADD_NODE_LISTENER_REPLY) {}
|
|
};
|
|
|
|
// RemoveNodeListenerRequest
|
|
class RemoveNodeListenerRequest : public Request {
|
|
public:
|
|
RemoveNodeListenerRequest() : Request(REMOVE_NODE_LISTENER_REQUEST) {}
|
|
|
|
dev_t device;
|
|
ino_t node;
|
|
void* listener;
|
|
};
|
|
|
|
// RemoveNodeListenerReply
|
|
class RemoveNodeListenerReply : public ReplyRequest {
|
|
public:
|
|
RemoveNodeListenerReply() : ReplyRequest(REMOVE_NODE_LISTENER_REPLY) {}
|
|
};
|
|
|
|
|
|
//////////////////
|
|
// General Reply
|
|
|
|
// ReceiptAckReply
|
|
class ReceiptAckReply : public ReplyRequest {
|
|
public:
|
|
ReceiptAckReply() : ReplyRequest(RECEIPT_ACK_REPLY) {}
|
|
};
|
|
|
|
|
|
///////////////////
|
|
// Request Checks
|
|
|
|
// do_for_request
|
|
template<class Task>
|
|
static
|
|
status_t
|
|
do_for_request(Request* request, Task& task)
|
|
{
|
|
if (!request)
|
|
return B_BAD_VALUE;
|
|
switch (request->GetType()) {
|
|
// kernel -> userland requests
|
|
// administrative
|
|
case UFS_DISCONNECT_REQUEST:
|
|
return task((UFSDisconnectRequest*)request);
|
|
case FS_CONNECT_REQUEST:
|
|
return task((FSConnectRequest*)request);
|
|
case FS_CONNECT_REPLY:
|
|
return task((FSConnectReply*)request);
|
|
// FS
|
|
case MOUNT_VOLUME_REQUEST:
|
|
return task((MountVolumeRequest*)request);
|
|
case MOUNT_VOLUME_REPLY:
|
|
return task((MountVolumeReply*)request);
|
|
case UNMOUNT_VOLUME_REQUEST:
|
|
return task((UnmountVolumeRequest*)request);
|
|
case UNMOUNT_VOLUME_REPLY:
|
|
return task((UnmountVolumeReply*)request);
|
|
// case INITIALIZE_VOLUME_REQUEST:
|
|
// return task((InitializeVolumeRequest*)request);
|
|
// case INITIALIZE_VOLUME_REPLY:
|
|
// return task((InitializeVolumeReply*)request);
|
|
case SYNC_VOLUME_REQUEST:
|
|
return task((SyncVolumeRequest*)request);
|
|
case SYNC_VOLUME_REPLY:
|
|
return task((SyncVolumeReply*)request);
|
|
case READ_FS_INFO_REQUEST:
|
|
return task((ReadFSInfoRequest*)request);
|
|
case READ_FS_INFO_REPLY:
|
|
return task((ReadFSInfoReply*)request);
|
|
case WRITE_FS_INFO_REQUEST:
|
|
return task((WriteFSInfoRequest*)request);
|
|
case WRITE_FS_INFO_REPLY:
|
|
return task((WriteFSInfoReply*)request);
|
|
// vnodes
|
|
case LOOKUP_REQUEST:
|
|
return task((LookupRequest*)request);
|
|
case LOOKUP_REPLY:
|
|
return task((LookupReply*)request);
|
|
case GET_VNODE_NAME_REQUEST:
|
|
return task((GetVNodeNameRequest*)request);
|
|
case GET_VNODE_NAME_REPLY:
|
|
return task((GetVNodeNameReply*)request);
|
|
case READ_VNODE_REQUEST:
|
|
return task((ReadVNodeRequest*)request);
|
|
case READ_VNODE_REPLY:
|
|
return task((ReadVNodeReply*)request);
|
|
case WRITE_VNODE_REQUEST:
|
|
return task((WriteVNodeRequest*)request);
|
|
case WRITE_VNODE_REPLY:
|
|
return task((WriteVNodeReply*)request);
|
|
case FS_REMOVE_VNODE_REQUEST:
|
|
return task((FSRemoveVNodeRequest*)request);
|
|
case FS_REMOVE_VNODE_REPLY:
|
|
return task((FSRemoveVNodeReply*)request);
|
|
// asynchronous I/O
|
|
case DO_IO_REQUEST:
|
|
return task((DoIORequest*)request);
|
|
case DO_IO_REPLY:
|
|
return task((DoIOReply*)request);
|
|
case CANCEL_IO_REQUEST:
|
|
return task((CancelIORequest*)request);
|
|
case CANCEL_IO_REPLY:
|
|
return task((CancelIOReply*)request);
|
|
case ITERATIVE_IO_GET_VECS_REQUEST:
|
|
return task((IterativeIOGetVecsRequest*)request);
|
|
case ITERATIVE_IO_GET_VECS_REPLY:
|
|
return task((IterativeIOGetVecsReply*)request);
|
|
case ITERATIVE_IO_FINISHED_REQUEST:
|
|
return task((IterativeIOFinishedRequest*)request);
|
|
case ITERATIVE_IO_FINISHED_REPLY:
|
|
return task((IterativeIOFinishedReply*)request);
|
|
// nodes
|
|
case IOCTL_REQUEST:
|
|
return task((IOCtlRequest*)request);
|
|
case IOCTL_REPLY:
|
|
return task((IOCtlReply*)request);
|
|
case SET_FLAGS_REQUEST:
|
|
return task((SetFlagsRequest*)request);
|
|
case SET_FLAGS_REPLY:
|
|
return task((SetFlagsReply*)request);
|
|
case SELECT_REQUEST:
|
|
return task((SelectRequest*)request);
|
|
case SELECT_REPLY:
|
|
return task((SelectReply*)request);
|
|
case DESELECT_REQUEST:
|
|
return task((DeselectRequest*)request);
|
|
case DESELECT_REPLY:
|
|
return task((DeselectReply*)request);
|
|
case FSYNC_REQUEST:
|
|
return task((FSyncRequest*)request);
|
|
case FSYNC_REPLY:
|
|
return task((FSyncReply*)request);
|
|
case READ_SYMLINK_REQUEST:
|
|
return task((ReadSymlinkRequest*)request);
|
|
case READ_SYMLINK_REPLY:
|
|
return task((ReadSymlinkReply*)request);
|
|
case CREATE_SYMLINK_REQUEST:
|
|
return task((CreateSymlinkRequest*)request);
|
|
case CREATE_SYMLINK_REPLY:
|
|
return task((CreateSymlinkReply*)request);
|
|
case LINK_REQUEST:
|
|
return task((LinkRequest*)request);
|
|
case LINK_REPLY:
|
|
return task((LinkReply*)request);
|
|
case UNLINK_REQUEST:
|
|
return task((UnlinkRequest*)request);
|
|
case UNLINK_REPLY:
|
|
return task((UnlinkReply*)request);
|
|
case RENAME_REQUEST:
|
|
return task((RenameRequest*)request);
|
|
case RENAME_REPLY:
|
|
return task((RenameReply*)request);
|
|
case ACCESS_REQUEST:
|
|
return task((AccessRequest*)request);
|
|
case ACCESS_REPLY:
|
|
return task((AccessReply*)request);
|
|
case READ_STAT_REQUEST:
|
|
return task((ReadStatRequest*)request);
|
|
case READ_STAT_REPLY:
|
|
return task((ReadStatReply*)request);
|
|
case WRITE_STAT_REQUEST:
|
|
return task((WriteStatRequest*)request);
|
|
case WRITE_STAT_REPLY:
|
|
return task((WriteStatReply*)request);
|
|
// files
|
|
case CREATE_REQUEST:
|
|
return task((CreateRequest*)request);
|
|
case CREATE_REPLY:
|
|
return task((CreateReply*)request);
|
|
case OPEN_REQUEST:
|
|
return task((OpenRequest*)request);
|
|
case OPEN_REPLY:
|
|
return task((OpenReply*)request);
|
|
case CLOSE_REQUEST:
|
|
return task((CloseRequest*)request);
|
|
case CLOSE_REPLY:
|
|
return task((CloseReply*)request);
|
|
case FREE_COOKIE_REQUEST:
|
|
return task((FreeCookieRequest*)request);
|
|
case FREE_COOKIE_REPLY:
|
|
return task((FreeCookieReply*)request);
|
|
case READ_REQUEST:
|
|
return task((ReadRequest*)request);
|
|
case READ_REPLY:
|
|
return task((ReadReply*)request);
|
|
case WRITE_REQUEST:
|
|
return task((WriteRequest*)request);
|
|
case WRITE_REPLY:
|
|
return task((WriteReply*)request);
|
|
// directories
|
|
case CREATE_DIR_REQUEST:
|
|
return task((CreateDirRequest*)request);
|
|
case CREATE_DIR_REPLY:
|
|
return task((CreateDirReply*)request);
|
|
case REMOVE_DIR_REQUEST:
|
|
return task((RemoveDirRequest*)request);
|
|
case REMOVE_DIR_REPLY:
|
|
return task((RemoveDirReply*)request);
|
|
case OPEN_DIR_REQUEST:
|
|
return task((OpenDirRequest*)request);
|
|
case OPEN_DIR_REPLY:
|
|
return task((OpenDirReply*)request);
|
|
case CLOSE_DIR_REQUEST:
|
|
return task((CloseDirRequest*)request);
|
|
case CLOSE_DIR_REPLY:
|
|
return task((CloseDirReply*)request);
|
|
case FREE_DIR_COOKIE_REQUEST:
|
|
return task((FreeDirCookieRequest*)request);
|
|
case FREE_DIR_COOKIE_REPLY:
|
|
return task((FreeDirCookieReply*)request);
|
|
case READ_DIR_REQUEST:
|
|
return task((ReadDirRequest*)request);
|
|
case READ_DIR_REPLY:
|
|
return task((ReadDirReply*)request);
|
|
case REWIND_DIR_REQUEST:
|
|
return task((RewindDirRequest*)request);
|
|
case REWIND_DIR_REPLY:
|
|
return task((RewindDirReply*)request);
|
|
// attribute directories
|
|
case OPEN_ATTR_DIR_REQUEST:
|
|
return task((OpenAttrDirRequest*)request);
|
|
case OPEN_ATTR_DIR_REPLY:
|
|
return task((OpenAttrDirReply*)request);
|
|
case CLOSE_ATTR_DIR_REQUEST:
|
|
return task((CloseAttrDirRequest*)request);
|
|
case CLOSE_ATTR_DIR_REPLY:
|
|
return task((CloseAttrDirReply*)request);
|
|
case FREE_ATTR_DIR_COOKIE_REQUEST:
|
|
return task((FreeAttrDirCookieRequest*)request);
|
|
case FREE_ATTR_DIR_COOKIE_REPLY:
|
|
return task((FreeAttrDirCookieReply*)request);
|
|
case READ_ATTR_DIR_REQUEST:
|
|
return task((ReadAttrDirRequest*)request);
|
|
case READ_ATTR_DIR_REPLY:
|
|
return task((ReadAttrDirReply*)request);
|
|
case REWIND_ATTR_DIR_REQUEST:
|
|
return task((RewindAttrDirRequest*)request);
|
|
case REWIND_ATTR_DIR_REPLY:
|
|
return task((RewindAttrDirReply*)request);
|
|
// attributes
|
|
case CREATE_ATTR_REQUEST:
|
|
return task((CreateAttrRequest*)request);
|
|
case CREATE_ATTR_REPLY:
|
|
return task((CreateAttrReply*)request);
|
|
case OPEN_ATTR_REQUEST:
|
|
return task((OpenAttrRequest*)request);
|
|
case OPEN_ATTR_REPLY:
|
|
return task((OpenAttrReply*)request);
|
|
case CLOSE_ATTR_REQUEST:
|
|
return task((CloseAttrRequest*)request);
|
|
case CLOSE_ATTR_REPLY:
|
|
return task((CloseAttrReply*)request);
|
|
case FREE_ATTR_COOKIE_REQUEST:
|
|
return task((FreeAttrCookieRequest*)request);
|
|
case FREE_ATTR_COOKIE_REPLY:
|
|
return task((FreeAttrCookieReply*)request);
|
|
case READ_ATTR_REQUEST:
|
|
return task((ReadAttrRequest*)request);
|
|
case READ_ATTR_REPLY:
|
|
return task((ReadAttrReply*)request);
|
|
case WRITE_ATTR_REQUEST:
|
|
return task((WriteAttrRequest*)request);
|
|
case WRITE_ATTR_REPLY:
|
|
return task((WriteAttrReply*)request);
|
|
case READ_ATTR_STAT_REQUEST:
|
|
return task((ReadAttrStatRequest*)request);
|
|
case READ_ATTR_STAT_REPLY:
|
|
return task((ReadAttrStatReply*)request);
|
|
case WRITE_ATTR_STAT_REQUEST:
|
|
return task((WriteAttrStatRequest*)request);
|
|
case WRITE_ATTR_STAT_REPLY:
|
|
return task((WriteAttrStatReply*)request);
|
|
case RENAME_ATTR_REQUEST:
|
|
return task((RenameAttrRequest*)request);
|
|
case RENAME_ATTR_REPLY:
|
|
return task((RenameAttrReply*)request);
|
|
case REMOVE_ATTR_REQUEST:
|
|
return task((RemoveAttrRequest*)request);
|
|
case REMOVE_ATTR_REPLY:
|
|
return task((RemoveAttrReply*)request);
|
|
// indices
|
|
case OPEN_INDEX_DIR_REQUEST:
|
|
return task((OpenIndexDirRequest*)request);
|
|
case OPEN_INDEX_DIR_REPLY:
|
|
return task((OpenIndexDirReply*)request);
|
|
case CLOSE_INDEX_DIR_REQUEST:
|
|
return task((CloseIndexDirRequest*)request);
|
|
case CLOSE_INDEX_DIR_REPLY:
|
|
return task((CloseIndexDirReply*)request);
|
|
case FREE_INDEX_DIR_COOKIE_REQUEST:
|
|
return task((FreeIndexDirCookieRequest*)request);
|
|
case FREE_INDEX_DIR_COOKIE_REPLY:
|
|
return task((FreeIndexDirCookieReply*)request);
|
|
case READ_INDEX_DIR_REQUEST:
|
|
return task((ReadIndexDirRequest*)request);
|
|
case READ_INDEX_DIR_REPLY:
|
|
return task((ReadIndexDirReply*)request);
|
|
case REWIND_INDEX_DIR_REQUEST:
|
|
return task((RewindIndexDirRequest*)request);
|
|
case REWIND_INDEX_DIR_REPLY:
|
|
return task((RewindIndexDirReply*)request);
|
|
case CREATE_INDEX_REQUEST:
|
|
return task((CreateIndexRequest*)request);
|
|
case CREATE_INDEX_REPLY:
|
|
return task((CreateIndexReply*)request);
|
|
case REMOVE_INDEX_REQUEST:
|
|
return task((RemoveIndexRequest*)request);
|
|
case REMOVE_INDEX_REPLY:
|
|
return task((RemoveIndexReply*)request);
|
|
case READ_INDEX_STAT_REQUEST:
|
|
return task((ReadIndexStatRequest*)request);
|
|
case READ_INDEX_STAT_REPLY:
|
|
return task((ReadIndexStatReply*)request);
|
|
// queries
|
|
case OPEN_QUERY_REQUEST:
|
|
return task((OpenQueryRequest*)request);
|
|
case OPEN_QUERY_REPLY:
|
|
return task((OpenQueryReply*)request);
|
|
case CLOSE_QUERY_REQUEST:
|
|
return task((CloseQueryRequest*)request);
|
|
case CLOSE_QUERY_REPLY:
|
|
return task((CloseQueryReply*)request);
|
|
case FREE_QUERY_COOKIE_REQUEST:
|
|
return task((FreeQueryCookieRequest*)request);
|
|
case FREE_QUERY_COOKIE_REPLY:
|
|
return task((FreeQueryCookieReply*)request);
|
|
case READ_QUERY_REQUEST:
|
|
return task((ReadQueryRequest*)request);
|
|
case READ_QUERY_REPLY:
|
|
return task((ReadQueryReply*)request);
|
|
case REWIND_QUERY_REQUEST:
|
|
return task((RewindQueryRequest*)request);
|
|
case REWIND_QUERY_REPLY:
|
|
return task((RewindQueryReply*)request);
|
|
// node monitoring
|
|
case NODE_MONITORING_EVENT_REQUEST:
|
|
return task((NodeMonitoringEventRequest*)request);
|
|
case NODE_MONITORING_EVENT_REPLY:
|
|
return task((NodeMonitoringEventReply*)request);
|
|
|
|
// userland -> kernel requests
|
|
// notifications
|
|
case NOTIFY_LISTENER_REQUEST:
|
|
return task((NotifyListenerRequest*)request);
|
|
case NOTIFY_LISTENER_REPLY:
|
|
return task((NotifyListenerReply*)request);
|
|
case NOTIFY_SELECT_EVENT_REQUEST:
|
|
return task((NotifySelectEventRequest*)request);
|
|
case NOTIFY_SELECT_EVENT_REPLY:
|
|
return task((NotifySelectEventReply*)request);
|
|
case NOTIFY_QUERY_REQUEST:
|
|
return task((NotifyQueryRequest*)request);
|
|
case NOTIFY_QUERY_REPLY:
|
|
return task((NotifyQueryReply*)request);
|
|
// vnodes
|
|
case GET_VNODE_REQUEST:
|
|
return task((GetVNodeRequest*)request);
|
|
case GET_VNODE_REPLY:
|
|
return task((GetVNodeReply*)request);
|
|
case PUT_VNODE_REQUEST:
|
|
return task((PutVNodeRequest*)request);
|
|
case PUT_VNODE_REPLY:
|
|
return task((PutVNodeReply*)request);
|
|
case ACQUIRE_VNODE_REQUEST:
|
|
return task((PutVNodeRequest*)request);
|
|
case ACQUIRE_VNODE_REPLY:
|
|
return task((AcquireVNodeReply*)request);
|
|
case NEW_VNODE_REQUEST:
|
|
return task((NewVNodeRequest*)request);
|
|
case NEW_VNODE_REPLY:
|
|
return task((NewVNodeReply*)request);
|
|
case PUBLISH_VNODE_REQUEST:
|
|
return task((PublishVNodeRequest*)request);
|
|
case PUBLISH_VNODE_REPLY:
|
|
return task((PublishVNodeReply*)request);
|
|
case REMOVE_VNODE_REQUEST:
|
|
return task((RemoveVNodeRequest*)request);
|
|
case REMOVE_VNODE_REPLY:
|
|
return task((RemoveVNodeReply*)request);
|
|
case UNREMOVE_VNODE_REQUEST:
|
|
return task((UnremoveVNodeRequest*)request);
|
|
case UNREMOVE_VNODE_REPLY:
|
|
return task((UnremoveVNodeReply*)request);
|
|
case GET_VNODE_REMOVED_REQUEST:
|
|
return task((GetVNodeRemovedRequest*)request);
|
|
case GET_VNODE_REMOVED_REPLY:
|
|
return task((GetVNodeRemovedReply*)request);
|
|
// file cache
|
|
case FILE_CACHE_CREATE_REQUEST:
|
|
return task((FileCacheCreateRequest*)request);
|
|
case FILE_CACHE_CREATE_REPLY:
|
|
return task((FileCacheCreateReply*)request);
|
|
case FILE_CACHE_DELETE_REQUEST:
|
|
return task((FileCacheDeleteRequest*)request);
|
|
case FILE_CACHE_DELETE_REPLY:
|
|
return task((FileCacheDeleteReply*)request);
|
|
case FILE_CACHE_SET_ENABLED_REQUEST:
|
|
return task((FileCacheSetEnabledRequest*)request);
|
|
case FILE_CACHE_SET_ENABLED_REPLY:
|
|
return task((FileCacheSetEnabledReply*)request);
|
|
case FILE_CACHE_SET_SIZE_REQUEST:
|
|
return task((FileCacheSetSizeRequest*)request);
|
|
case FILE_CACHE_SET_SIZE_REPLY:
|
|
return task((FileCacheSetSizeReply*)request);
|
|
case FILE_CACHE_SYNC_REQUEST:
|
|
return task((FileCacheSyncRequest*)request);
|
|
case FILE_CACHE_SYNC_REPLY:
|
|
return task((FileCacheSyncReply*)request);
|
|
case FILE_CACHE_READ_REQUEST:
|
|
return task((FileCacheReadRequest*)request);
|
|
case FILE_CACHE_READ_REPLY:
|
|
return task((FileCacheReadReply*)request);
|
|
case FILE_CACHE_WRITE_REQUEST:
|
|
return task((FileCacheWriteRequest*)request);
|
|
case FILE_CACHE_WRITE_REPLY:
|
|
return task((FileCacheWriteReply*)request);
|
|
// I/O
|
|
case DO_ITERATIVE_FD_IO_REQUEST:
|
|
return task((DoIterativeFDIORequest*)request);
|
|
case DO_ITERATIVE_FD_IO_REPLY:
|
|
return task((DoIterativeFDIOReply*)request);
|
|
case READ_FROM_IO_REQUEST_REQUEST:
|
|
return task((ReadFromIORequestRequest*)request);
|
|
case READ_FROM_IO_REQUEST_REPLY:
|
|
return task((ReadFromIORequestReply*)request);
|
|
case WRITE_TO_IO_REQUEST_REQUEST:
|
|
return task((WriteToIORequestRequest*)request);
|
|
case WRITE_TO_IO_REQUEST_REPLY:
|
|
return task((WriteToIORequestReply*)request);
|
|
case NOTIFY_IO_REQUEST_REQUEST:
|
|
return task((NotifyIORequestRequest*)request);
|
|
case NOTIFY_IO_REQUEST_REPLY:
|
|
return task((NotifyIORequestReply*)request);
|
|
// node monitoring
|
|
case ADD_NODE_LISTENER_REQUEST:
|
|
return task((AddNodeListenerRequest*)request);
|
|
case ADD_NODE_LISTENER_REPLY:
|
|
return task((AddNodeListenerReply*)request);
|
|
case REMOVE_NODE_LISTENER_REQUEST:
|
|
return task((RemoveNodeListenerRequest*)request);
|
|
case REMOVE_NODE_LISTENER_REPLY:
|
|
return task((RemoveNodeListenerReply*)request);
|
|
// general reply
|
|
case RECEIPT_ACK_REPLY:
|
|
return task((ReceiptAckReply*)request);
|
|
default:
|
|
return B_BAD_DATA;
|
|
}
|
|
}
|
|
|
|
status_t get_request_address_infos(Request* request, AddressInfo* infos,
|
|
int32* count);
|
|
status_t check_request(Request* request);
|
|
status_t relocate_request(Request* request, int32 requestBufferSize,
|
|
area_id* areas, int32* count);
|
|
|
|
} // namespace UserlandFSUtil
|
|
|
|
using UserlandFSUtil::ReplyRequest;
|
|
using UserlandFSUtil::KernelRequest;
|
|
using UserlandFSUtil::VolumeRequest;
|
|
using UserlandFSUtil::NodeRequest;
|
|
using UserlandFSUtil::FileRequest;
|
|
using UserlandFSUtil::DirRequest;
|
|
using UserlandFSUtil::AttrDirRequest;
|
|
using UserlandFSUtil::IndexDirRequest;
|
|
|
|
// kernel -> userland requests
|
|
// administrative
|
|
using UserlandFSUtil::UFSDisconnectRequest;
|
|
using UserlandFSUtil::FSConnectRequest;
|
|
using UserlandFSUtil::FSConnectReply;
|
|
// FS
|
|
using UserlandFSUtil::MountVolumeRequest;
|
|
using UserlandFSUtil::MountVolumeReply;
|
|
using UserlandFSUtil::UnmountVolumeRequest;
|
|
using UserlandFSUtil::UnmountVolumeReply;
|
|
//using UserlandFSUtil::InitializeVolumeRequest;
|
|
//using UserlandFSUtil::InitializeVolumeReply;
|
|
using UserlandFSUtil::SyncVolumeRequest;
|
|
using UserlandFSUtil::SyncVolumeReply;
|
|
using UserlandFSUtil::ReadFSInfoRequest;
|
|
using UserlandFSUtil::ReadFSInfoReply;
|
|
using UserlandFSUtil::WriteFSInfoRequest;
|
|
using UserlandFSUtil::WriteFSInfoReply;
|
|
// vnodes
|
|
using UserlandFSUtil::LookupRequest;
|
|
using UserlandFSUtil::LookupReply;
|
|
using UserlandFSUtil::GetVNodeNameRequest;
|
|
using UserlandFSUtil::GetVNodeNameReply;
|
|
using UserlandFSUtil::ReadVNodeRequest;
|
|
using UserlandFSUtil::ReadVNodeReply;
|
|
using UserlandFSUtil::WriteVNodeRequest;
|
|
using UserlandFSUtil::WriteVNodeReply;
|
|
using UserlandFSUtil::FSRemoveVNodeRequest;
|
|
using UserlandFSUtil::FSRemoveVNodeReply;
|
|
// asynchronous I/O
|
|
using UserlandFSUtil::DoIORequest;
|
|
using UserlandFSUtil::DoIOReply;
|
|
using UserlandFSUtil::CancelIORequest;
|
|
using UserlandFSUtil::CancelIOReply;
|
|
using UserlandFSUtil::IterativeIOGetVecsRequest;
|
|
using UserlandFSUtil::IterativeIOGetVecsReply;
|
|
using UserlandFSUtil::IterativeIOFinishedRequest;
|
|
using UserlandFSUtil::IterativeIOFinishedReply;
|
|
// nodes
|
|
using UserlandFSUtil::IOCtlRequest;
|
|
using UserlandFSUtil::IOCtlReply;
|
|
using UserlandFSUtil::SetFlagsRequest;
|
|
using UserlandFSUtil::SetFlagsReply;
|
|
using UserlandFSUtil::SelectRequest;
|
|
using UserlandFSUtil::SelectReply;
|
|
using UserlandFSUtil::DeselectRequest;
|
|
using UserlandFSUtil::DeselectReply;
|
|
using UserlandFSUtil::FSyncRequest;
|
|
using UserlandFSUtil::FSyncReply;
|
|
using UserlandFSUtil::ReadSymlinkRequest;
|
|
using UserlandFSUtil::ReadSymlinkReply;
|
|
using UserlandFSUtil::CreateSymlinkRequest;
|
|
using UserlandFSUtil::CreateSymlinkReply;
|
|
using UserlandFSUtil::LinkRequest;
|
|
using UserlandFSUtil::LinkReply;
|
|
using UserlandFSUtil::UnlinkRequest;
|
|
using UserlandFSUtil::UnlinkReply;
|
|
using UserlandFSUtil::RenameRequest;
|
|
using UserlandFSUtil::RenameReply;
|
|
using UserlandFSUtil::AccessRequest;
|
|
using UserlandFSUtil::AccessReply;
|
|
using UserlandFSUtil::ReadStatRequest;
|
|
using UserlandFSUtil::ReadStatReply;
|
|
using UserlandFSUtil::WriteStatRequest;
|
|
using UserlandFSUtil::WriteStatReply;
|
|
// files
|
|
using UserlandFSUtil::CreateRequest;
|
|
using UserlandFSUtil::CreateReply;
|
|
using UserlandFSUtil::OpenRequest;
|
|
using UserlandFSUtil::OpenReply;
|
|
using UserlandFSUtil::CloseRequest;
|
|
using UserlandFSUtil::CloseReply;
|
|
using UserlandFSUtil::FreeCookieRequest;
|
|
using UserlandFSUtil::FreeCookieReply;
|
|
using UserlandFSUtil::ReadRequest;
|
|
using UserlandFSUtil::ReadReply;
|
|
using UserlandFSUtil::WriteRequest;
|
|
using UserlandFSUtil::WriteReply;
|
|
// directories
|
|
using UserlandFSUtil::CreateDirRequest;
|
|
using UserlandFSUtil::CreateDirReply;
|
|
using UserlandFSUtil::RemoveDirRequest;
|
|
using UserlandFSUtil::RemoveDirReply;
|
|
using UserlandFSUtil::OpenDirRequest;
|
|
using UserlandFSUtil::OpenDirReply;
|
|
using UserlandFSUtil::CloseDirRequest;
|
|
using UserlandFSUtil::CloseDirReply;
|
|
using UserlandFSUtil::FreeDirCookieRequest;
|
|
using UserlandFSUtil::FreeDirCookieReply;
|
|
using UserlandFSUtil::ReadDirRequest;
|
|
using UserlandFSUtil::ReadDirReply;
|
|
using UserlandFSUtil::RewindDirRequest;
|
|
using UserlandFSUtil::RewindDirReply;
|
|
// attribute directories
|
|
using UserlandFSUtil::OpenAttrDirRequest;
|
|
using UserlandFSUtil::OpenAttrDirReply;
|
|
using UserlandFSUtil::CloseAttrDirRequest;
|
|
using UserlandFSUtil::CloseAttrDirReply;
|
|
using UserlandFSUtil::FreeAttrDirCookieRequest;
|
|
using UserlandFSUtil::FreeAttrDirCookieReply;
|
|
using UserlandFSUtil::ReadAttrDirRequest;
|
|
using UserlandFSUtil::ReadAttrDirReply;
|
|
using UserlandFSUtil::RewindAttrDirRequest;
|
|
using UserlandFSUtil::RewindAttrDirReply;
|
|
// attributes
|
|
using UserlandFSUtil::CreateAttrRequest;
|
|
using UserlandFSUtil::CreateAttrReply;
|
|
using UserlandFSUtil::OpenAttrRequest;
|
|
using UserlandFSUtil::OpenAttrReply;
|
|
using UserlandFSUtil::CloseAttrRequest;
|
|
using UserlandFSUtil::CloseAttrReply;
|
|
using UserlandFSUtil::FreeAttrCookieRequest;
|
|
using UserlandFSUtil::FreeAttrCookieReply;
|
|
using UserlandFSUtil::ReadAttrRequest;
|
|
using UserlandFSUtil::ReadAttrReply;
|
|
using UserlandFSUtil::WriteAttrRequest;
|
|
using UserlandFSUtil::WriteAttrReply;
|
|
using UserlandFSUtil::ReadAttrStatRequest;
|
|
using UserlandFSUtil::ReadAttrStatReply;
|
|
using UserlandFSUtil::WriteAttrStatRequest;
|
|
using UserlandFSUtil::WriteAttrStatReply;
|
|
using UserlandFSUtil::RenameAttrRequest;
|
|
using UserlandFSUtil::RenameAttrReply;
|
|
using UserlandFSUtil::RemoveAttrRequest;
|
|
using UserlandFSUtil::RemoveAttrReply;
|
|
// indices
|
|
using UserlandFSUtil::OpenIndexDirRequest;
|
|
using UserlandFSUtil::OpenIndexDirReply;
|
|
using UserlandFSUtil::CloseIndexDirRequest;
|
|
using UserlandFSUtil::CloseIndexDirReply;
|
|
using UserlandFSUtil::FreeIndexDirCookieRequest;
|
|
using UserlandFSUtil::FreeIndexDirCookieReply;
|
|
using UserlandFSUtil::ReadIndexDirRequest;
|
|
using UserlandFSUtil::ReadIndexDirReply;
|
|
using UserlandFSUtil::RewindIndexDirRequest;
|
|
using UserlandFSUtil::RewindIndexDirReply;
|
|
using UserlandFSUtil::CreateIndexRequest;
|
|
using UserlandFSUtil::CreateIndexReply;
|
|
using UserlandFSUtil::RemoveIndexRequest;
|
|
using UserlandFSUtil::RemoveIndexReply;
|
|
using UserlandFSUtil::ReadIndexStatRequest;
|
|
using UserlandFSUtil::ReadIndexStatReply;
|
|
// queries
|
|
using UserlandFSUtil::OpenQueryRequest;
|
|
using UserlandFSUtil::OpenQueryReply;
|
|
using UserlandFSUtil::CloseQueryRequest;
|
|
using UserlandFSUtil::CloseQueryReply;
|
|
using UserlandFSUtil::FreeQueryCookieRequest;
|
|
using UserlandFSUtil::FreeQueryCookieReply;
|
|
using UserlandFSUtil::ReadQueryRequest;
|
|
using UserlandFSUtil::ReadQueryReply;
|
|
using UserlandFSUtil::RewindQueryRequest;
|
|
using UserlandFSUtil::RewindQueryReply;
|
|
// node monitoring
|
|
using UserlandFSUtil::NodeMonitoringEventRequest;
|
|
using UserlandFSUtil::NodeMonitoringEventReply;
|
|
|
|
// userland -> kernel requests
|
|
// notifications
|
|
using UserlandFSUtil::NotifyListenerRequest;
|
|
using UserlandFSUtil::NotifyListenerReply;
|
|
using UserlandFSUtil::NotifySelectEventRequest;
|
|
using UserlandFSUtil::NotifySelectEventReply;
|
|
using UserlandFSUtil::NotifyQueryRequest;
|
|
using UserlandFSUtil::NotifyQueryReply;
|
|
// vnodes
|
|
using UserlandFSUtil::GetVNodeRequest;
|
|
using UserlandFSUtil::GetVNodeReply;
|
|
using UserlandFSUtil::PutVNodeRequest;
|
|
using UserlandFSUtil::PutVNodeReply;
|
|
using UserlandFSUtil::AcquireVNodeRequest;
|
|
using UserlandFSUtil::AcquireVNodeReply;
|
|
using UserlandFSUtil::NewVNodeRequest;
|
|
using UserlandFSUtil::NewVNodeReply;
|
|
using UserlandFSUtil::PublishVNodeRequest;
|
|
using UserlandFSUtil::PublishVNodeReply;
|
|
using UserlandFSUtil::RemoveVNodeRequest;
|
|
using UserlandFSUtil::RemoveVNodeReply;
|
|
using UserlandFSUtil::UnremoveVNodeRequest;
|
|
using UserlandFSUtil::UnremoveVNodeReply;
|
|
using UserlandFSUtil::GetVNodeRemovedRequest;
|
|
using UserlandFSUtil::GetVNodeRemovedReply;
|
|
// file cache
|
|
using UserlandFSUtil::FileCacheCreateRequest;
|
|
using UserlandFSUtil::FileCacheCreateReply;
|
|
using UserlandFSUtil::FileCacheDeleteRequest;
|
|
using UserlandFSUtil::FileCacheDeleteReply;
|
|
using UserlandFSUtil::FileCacheSetEnabledRequest;
|
|
using UserlandFSUtil::FileCacheSetEnabledReply;
|
|
using UserlandFSUtil::FileCacheSetSizeRequest;
|
|
using UserlandFSUtil::FileCacheSetSizeReply;
|
|
using UserlandFSUtil::FileCacheSyncRequest;
|
|
using UserlandFSUtil::FileCacheSyncReply;
|
|
using UserlandFSUtil::FileCacheReadRequest;
|
|
using UserlandFSUtil::FileCacheReadReply;
|
|
using UserlandFSUtil::FileCacheWriteRequest;
|
|
using UserlandFSUtil::FileCacheWriteReply;
|
|
// I/O
|
|
using UserlandFSUtil::DoIterativeFDIORequest;
|
|
using UserlandFSUtil::DoIterativeFDIOReply;
|
|
using UserlandFSUtil::ReadFromIORequestRequest;
|
|
using UserlandFSUtil::ReadFromIORequestReply;
|
|
using UserlandFSUtil::WriteToIORequestRequest;
|
|
using UserlandFSUtil::WriteToIORequestReply;
|
|
using UserlandFSUtil::NotifyIORequestRequest;
|
|
using UserlandFSUtil::NotifyIORequestReply;
|
|
// node monitoring
|
|
using UserlandFSUtil::AddNodeListenerRequest;
|
|
using UserlandFSUtil::AddNodeListenerReply;
|
|
using UserlandFSUtil::RemoveNodeListenerRequest;
|
|
using UserlandFSUtil::RemoveNodeListenerReply;
|
|
// general reply
|
|
using UserlandFSUtil::ReceiptAckReply;
|
|
|
|
using UserlandFSUtil::do_for_request;
|
|
using UserlandFSUtil::get_request_address_infos;
|
|
using UserlandFSUtil::check_request;
|
|
using UserlandFSUtil::relocate_request;
|
|
|
|
#endif // USERLAND_FS_REQUESTS_H
|