1168457Skato/* 264123Skato * Copyright 2001-2009, Ingo Weinhold, ingo_weinhold@gmx.de. 364123Skato * Distributed under the terms of the MIT License. 464123Skato */ 564123Skato#ifndef USERLAND_FS_REQUESTS_H 664123Skato#define USERLAND_FS_REQUESTS_H 764123Skato 864123Skato#include <fs_attr.h> 964123Skato#include <fs_index.h> 1064123Skato#include <fs_info.h> 1164123Skato#include <fs_interface.h> 1264123Skato 1364123Skato#include "Compatibility.h" 1464123Skato#include "FSCapabilities.h" 1564123Skato#include "Request.h" 1664123Skato 1764123Skato 1864123Skatoenum { 1964123Skato MAX_REQUEST_ADDRESS_COUNT = 4, 2064123Skato}; 2164123Skato 2264123Skato// request types 2364123Skatoenum { 2464123Skato // kernel -> userland requests 2564123Skato 2664123Skato // administrative 2764123Skato UFS_DISCONNECT_REQUEST = 0, 2864123Skato FS_CONNECT_REQUEST, 2964123Skato FS_CONNECT_REPLY, 3064123Skato 3164123Skato // FS 3264123Skato MOUNT_VOLUME_REQUEST, 3364123Skato MOUNT_VOLUME_REPLY, 3464123Skato UNMOUNT_VOLUME_REQUEST, 3564123Skato UNMOUNT_VOLUME_REPLY, 3664123Skato// INITIALIZE_VOLUME_REQUEST, 3764123Skato// INITIALIZE_VOLUME_REPLY, 3864123Skato SYNC_VOLUME_REQUEST, 3964123Skato SYNC_VOLUME_REPLY, 4064123Skato READ_FS_INFO_REQUEST, 4164123Skato READ_FS_INFO_REPLY, // 10 4264123Skato WRITE_FS_INFO_REQUEST, 4364123Skato WRITE_FS_INFO_REPLY, 4464123Skato 4564123Skato // vnodes 4664123Skato LOOKUP_REQUEST, 4764123Skato LOOKUP_REPLY, 4864123Skato GET_VNODE_NAME_REQUEST, 4964123Skato GET_VNODE_NAME_REPLY, 5064123Skato READ_VNODE_REQUEST, 5164123Skato READ_VNODE_REPLY, 5264123Skato WRITE_VNODE_REQUEST, 5364123Skato WRITE_VNODE_REPLY, // 20 5464123Skato FS_REMOVE_VNODE_REQUEST, 5564123Skato FS_REMOVE_VNODE_REPLY, 5664123Skato 5764123Skato // asynchronous I/O 5864123Skato DO_IO_REQUEST, 5964123Skato DO_IO_REPLY, 6064123Skato CANCEL_IO_REQUEST, 6164123Skato CANCEL_IO_REPLY, 6264123Skato ITERATIVE_IO_GET_VECS_REQUEST, 63167657Skato ITERATIVE_IO_GET_VECS_REPLY, 6464123Skato ITERATIVE_IO_FINISHED_REQUEST, 6564123Skato ITERATIVE_IO_FINISHED_REPLY, // 30 6664123Skato 6764123Skato // nodes 6864123Skato IOCTL_REQUEST, 6964123Skato IOCTL_REPLY, 7064123Skato SET_FLAGS_REQUEST, 7164123Skato SET_FLAGS_REPLY, 7264123Skato SELECT_REQUEST, 7364123Skato SELECT_REPLY, 7464123Skato DESELECT_REQUEST, 7564123Skato DESELECT_REPLY, 7664123Skato FSYNC_REQUEST, 7764123Skato FSYNC_REPLY, // 40 7864123Skato 7964123Skato READ_SYMLINK_REQUEST, 8064123Skato READ_SYMLINK_REPLY, 8164123Skato CREATE_SYMLINK_REQUEST, 8264123Skato CREATE_SYMLINK_REPLY, 8364123Skato LINK_REQUEST, 8464123Skato LINK_REPLY, 8564123Skato UNLINK_REQUEST, 8664123Skato UNLINK_REPLY, 8764123Skato RENAME_REQUEST, 8864123Skato RENAME_REPLY, // 50 8964123Skato 9064123Skato ACCESS_REQUEST, 9164123Skato ACCESS_REPLY, 9264123Skato READ_STAT_REQUEST, 9364123Skato READ_STAT_REPLY, 9464123Skato WRITE_STAT_REQUEST, 9564123Skato WRITE_STAT_REPLY, 9664123Skato 9764123Skato // files 9864123Skato CREATE_REQUEST, 9964123Skato CREATE_REPLY, 10064123Skato OPEN_REQUEST, 10164123Skato OPEN_REPLY, // 60 10264123Skato CLOSE_REQUEST, 10364123Skato CLOSE_REPLY, 10464123Skato FREE_COOKIE_REQUEST, 10564123Skato FREE_COOKIE_REPLY, 10664123Skato READ_REQUEST, 10764123Skato READ_REPLY, 10864123Skato WRITE_REQUEST, 10964123Skato WRITE_REPLY, 11064123Skato 11164123Skato // directories 11264123Skato CREATE_DIR_REQUEST, 11364123Skato CREATE_DIR_REPLY, // 70 11464123Skato REMOVE_DIR_REQUEST, 11564123Skato REMOVE_DIR_REPLY, 11664123Skato OPEN_DIR_REQUEST, 11764123Skato OPEN_DIR_REPLY, 11864123Skato CLOSE_DIR_REQUEST, 11964123Skato CLOSE_DIR_REPLY, 12064123Skato FREE_DIR_COOKIE_REQUEST, 12164123Skato FREE_DIR_COOKIE_REPLY, 12264123Skato READ_DIR_REQUEST, 12364123Skato READ_DIR_REPLY, // 80 12464123Skato REWIND_DIR_REQUEST, 12564123Skato REWIND_DIR_REPLY, 12664123Skato 12764123Skato // attribute directories 12864295Skato OPEN_ATTR_DIR_REQUEST, 12964123Skato OPEN_ATTR_DIR_REPLY, 13064123Skato CLOSE_ATTR_DIR_REQUEST, 13164123Skato CLOSE_ATTR_DIR_REPLY, 13264123Skato FREE_ATTR_DIR_COOKIE_REQUEST, 13364123Skato FREE_ATTR_DIR_COOKIE_REPLY, 13464123Skato READ_ATTR_DIR_REQUEST, 13564123Skato READ_ATTR_DIR_REPLY, // 90 13664123Skato REWIND_ATTR_DIR_REQUEST, 13764123Skato REWIND_ATTR_DIR_REPLY, 13864123Skato 13964123Skato // attributes 14064123Skato CREATE_ATTR_REQUEST, 14164123Skato CREATE_ATTR_REPLY, 14264123Skato OPEN_ATTR_REQUEST, 14364123Skato OPEN_ATTR_REPLY, 14464123Skato CLOSE_ATTR_REQUEST, 14564123Skato CLOSE_ATTR_REPLY, 14664123Skato FREE_ATTR_COOKIE_REQUEST, 14764123Skato FREE_ATTR_COOKIE_REPLY, // 100 14864123Skato READ_ATTR_REQUEST, 14964123Skato READ_ATTR_REPLY, 15064123Skato WRITE_ATTR_REQUEST, 15164123Skato WRITE_ATTR_REPLY, 15264123Skato READ_ATTR_STAT_REQUEST, 15364123Skato READ_ATTR_STAT_REPLY, 15464123Skato WRITE_ATTR_STAT_REQUEST, 15564123Skato WRITE_ATTR_STAT_REPLY, 15664123Skato RENAME_ATTR_REQUEST, 15764123Skato RENAME_ATTR_REPLY, // 110 15864123Skato REMOVE_ATTR_REQUEST, 15964123Skato REMOVE_ATTR_REPLY, 16064123Skato 16164123Skato // indices 16264123Skato OPEN_INDEX_DIR_REQUEST, 16364123Skato OPEN_INDEX_DIR_REPLY, 16464123Skato CLOSE_INDEX_DIR_REQUEST, 16564123Skato CLOSE_INDEX_DIR_REPLY, 16664123Skato FREE_INDEX_DIR_COOKIE_REQUEST, 16764123Skato FREE_INDEX_DIR_COOKIE_REPLY, 16864123Skato READ_INDEX_DIR_REQUEST, 16964123Skato READ_INDEX_DIR_REPLY, // 120 17064123Skato REWIND_INDEX_DIR_REQUEST, 17164123Skato REWIND_INDEX_DIR_REPLY, 17264123Skato CREATE_INDEX_REQUEST, 17364123Skato CREATE_INDEX_REPLY, 17464123Skato REMOVE_INDEX_REQUEST, 17564123Skato REMOVE_INDEX_REPLY, 17664123Skato READ_INDEX_STAT_REQUEST, 17764123Skato READ_INDEX_STAT_REPLY, 17864123Skato 17964123Skato // queries 18064123Skato OPEN_QUERY_REQUEST, 18164123Skato OPEN_QUERY_REPLY, // 130 18264123Skato CLOSE_QUERY_REQUEST, 18364123Skato CLOSE_QUERY_REPLY, 18464123Skato FREE_QUERY_COOKIE_REQUEST, 18564123Skato FREE_QUERY_COOKIE_REPLY, 18664123Skato READ_QUERY_REQUEST, 18764123Skato READ_QUERY_REPLY, 18864123Skato REWIND_QUERY_REQUEST, 18964123Skato REWIND_QUERY_REPLY, 19064123Skato 19164123Skato // node monitoring 19264123Skato NODE_MONITORING_EVENT_REQUEST, 19364123Skato NODE_MONITORING_EVENT_REPLY, // 140 19464123Skato 19564123Skato // userland -> kernel requests 19664123Skato // notifications 19764123Skato NOTIFY_LISTENER_REQUEST, 19864123Skato NOTIFY_LISTENER_REPLY, 19964123Skato NOTIFY_SELECT_EVENT_REQUEST, 20064123Skato NOTIFY_SELECT_EVENT_REPLY, 20164123Skato NOTIFY_QUERY_REQUEST, 20264123Skato NOTIFY_QUERY_REPLY, 20364123Skato 20464123Skato // vnodes 20564123Skato GET_VNODE_REQUEST, 20664123Skato GET_VNODE_REPLY, 20764123Skato PUT_VNODE_REQUEST, 20864123Skato PUT_VNODE_REPLY, // 150 20964123Skato ACQUIRE_VNODE_REQUEST, 21064123Skato ACQUIRE_VNODE_REPLY, 21164123Skato NEW_VNODE_REQUEST, 21264123Skato NEW_VNODE_REPLY, 21364123Skato PUBLISH_VNODE_REQUEST, 21464123Skato PUBLISH_VNODE_REPLY, 21564123Skato REMOVE_VNODE_REQUEST, 21664123Skato REMOVE_VNODE_REPLY, 21764123Skato UNREMOVE_VNODE_REQUEST, 21864123Skato UNREMOVE_VNODE_REPLY, // 160 21964123Skato GET_VNODE_REMOVED_REQUEST, 22064123Skato GET_VNODE_REMOVED_REPLY, 22164123Skato 22264123Skato // file cache 22364123Skato FILE_CACHE_CREATE_REQUEST, 22464123Skato FILE_CACHE_CREATE_REPLY, 22564123Skato FILE_CACHE_DELETE_REQUEST, 22664123Skato FILE_CACHE_DELETE_REPLY, 22764123Skato FILE_CACHE_SET_ENABLED_REQUEST, 22864123Skato FILE_CACHE_SET_ENABLED_REPLY, 22964123Skato FILE_CACHE_SET_SIZE_REQUEST, 23064123Skato FILE_CACHE_SET_SIZE_REPLY, // 170 23164123Skato FILE_CACHE_SYNC_REQUEST, 23264123Skato FILE_CACHE_SYNC_REPLY, 23364123Skato FILE_CACHE_READ_REQUEST, 23464123Skato FILE_CACHE_READ_REPLY, 23564123Skato FILE_CACHE_WRITE_REQUEST, 23664123Skato FILE_CACHE_WRITE_REPLY, 23764123Skato 23864123Skato // I/O 23964123Skato DO_ITERATIVE_FD_IO_REQUEST, 24064123Skato DO_ITERATIVE_FD_IO_REPLY, 24164123Skato READ_FROM_IO_REQUEST_REQUEST, 24264123Skato READ_FROM_IO_REQUEST_REPLY, // 180 24364123Skato WRITE_TO_IO_REQUEST_REQUEST, 24464123Skato WRITE_TO_IO_REQUEST_REPLY, 24564123Skato NOTIFY_IO_REQUEST_REQUEST, 24664123Skato NOTIFY_IO_REQUEST_REPLY, 24764123Skato 24864123Skato // node monitoring 24964123Skato ADD_NODE_LISTENER_REQUEST, 25064123Skato ADD_NODE_LISTENER_REPLY, 25164123Skato REMOVE_NODE_LISTENER_REQUEST, 25264123Skato REMOVE_NODE_LISTENER_REPLY, 25364123Skato 25464123Skato // general reply 25564123Skato RECEIPT_ACK_REPLY, 25664123Skato 257167657Skato // invalid request ID (e.g. for request handlers) 25864123Skato NO_REQUEST, // 190 25964123Skato}; 26064123Skato 26164123Skatonamespace UserlandFSUtil { 26264123Skato 26364123Skato// ReplyRequest 264168457Skatoclass ReplyRequest : public Request { 265168457Skatopublic: 26664123Skato ReplyRequest(uint32 type) : Request(type) {} 26764123Skato 26864123Skato status_t error; 26964123Skato}; 27064123Skato 27164123Skato 27264123Skato// #pragma mark - kernel requests 27364123Skato 27464123Skato 27564123Skato// KernelRequest 27664123Skatoclass KernelRequest : public Request { 27764123Skatopublic: 27864123Skato KernelRequest(uint32 type) : Request(type) {} 27964123Skato 28064123Skato team_id team; 28164123Skato thread_id thread; 28264123Skato uid_t user; 28364123Skato gid_t group; 284167657Skato}; 285167657Skato 286167657Skato// VolumeRequest 287167657Skatoclass VolumeRequest : public KernelRequest { 288167657Skatopublic: 289167657Skato VolumeRequest(uint32 type) : KernelRequest(type) {} 290167657Skato 291167657Skato void* volume; 292167657Skato}; 293167657Skato 294// NodeRequest 295class NodeRequest : public VolumeRequest { 296public: 297 NodeRequest(uint32 type) : VolumeRequest(type) {} 298 299 void* node; 300}; 301 302// FileRequest 303class FileRequest : public NodeRequest { 304public: 305 FileRequest(uint32 type) : NodeRequest(type) {} 306 307 void* fileCookie; 308}; 309 310// DirRequest 311class DirRequest : public NodeRequest { 312public: 313 DirRequest(uint32 type) : NodeRequest(type) {} 314 315 void* dirCookie; 316}; 317 318// AttrDirRequest 319class AttrDirRequest : public NodeRequest { 320public: 321 AttrDirRequest(uint32 type) : NodeRequest(type) {} 322 323 void* attrDirCookie; 324}; 325 326// AttributeRequest 327class AttributeRequest : public NodeRequest { 328public: 329 AttributeRequest(uint32 type) : NodeRequest(type) {} 330 331 void* attrCookie; 332}; 333 334// IndexDirRequest 335class IndexDirRequest : public VolumeRequest { 336public: 337 IndexDirRequest(uint32 type) : VolumeRequest(type) {} 338 339 void* indexDirCookie; 340}; 341 342// QueryRequest 343class QueryRequest : public VolumeRequest { 344public: 345 QueryRequest(uint32 type) : VolumeRequest(type) {} 346 347 void* queryCookie; 348}; 349 350// FileCacheRequest 351class FileCacheRequest : public Request { 352public: 353 FileCacheRequest(uint32 type) : Request(type) {} 354 355 dev_t nsid; 356 ino_t vnid; 357}; 358 359class IORequestRequest : public Request { 360public: 361 IORequestRequest(uint32 type) : Request(type) {} 362 363 dev_t nsid; 364 int32 request; 365}; 366 367 368// #pragma mark - administrative 369 370 371// UFSDisconnectRequest 372class UFSDisconnectRequest : public Request { 373public: 374 UFSDisconnectRequest() : Request(UFS_DISCONNECT_REQUEST) {} 375}; 376 377// FSConnectRequest 378class FSConnectRequest : public Request { 379public: 380 FSConnectRequest() : Request(FS_CONNECT_REQUEST) {} 381 status_t GetAddressInfos(AddressInfo* infos, int32* count); 382 383 Address fsName; 384}; 385 386// FSConnectReply 387class FSConnectReply : public ReplyRequest { 388public: 389 FSConnectReply() : ReplyRequest(FS_CONNECT_REPLY) {} 390 status_t GetAddressInfos(AddressInfo* infos, int32* count); 391 392 Address portInfos; 393 int32 portInfoCount; 394 FSCapabilities capabilities; 395 client_fs_type clientFSType; 396}; 397 398 399// #pragma mark - FS 400 401 402// MountVolumeRequest 403class MountVolumeRequest : public KernelRequest { 404public: 405 MountVolumeRequest() : KernelRequest(MOUNT_VOLUME_REQUEST) {} 406 status_t GetAddressInfos(AddressInfo* infos, int32* count); 407 408 dev_t nsid; 409 Address cwd; // current working dir of the mount() caller 410 Address device; 411 uint32 flags; 412 Address parameters; 413}; 414 415// MountVolumeReply 416class MountVolumeReply : public ReplyRequest { 417public: 418 MountVolumeReply() : ReplyRequest(MOUNT_VOLUME_REPLY) {} 419 420 ino_t rootID; 421 void* volume; 422 FSVolumeCapabilities capabilities; 423}; 424 425// UnmountVolumeRequest 426class UnmountVolumeRequest : public VolumeRequest { 427public: 428 UnmountVolumeRequest() : VolumeRequest(UNMOUNT_VOLUME_REQUEST) {} 429}; 430 431// UnmountVolumeReply 432class UnmountVolumeReply : public ReplyRequest { 433public: 434 UnmountVolumeReply() : ReplyRequest(UNMOUNT_VOLUME_REPLY) {} 435}; 436 437/*// InitializeVolumeRequest 438class InitializeVolumeRequest : public Request { 439public: 440 InitializeVolumeRequest() : Request(INITIALIZE_VOLUME_REQUEST) {} 441 status_t GetAddressInfos(AddressInfo* infos, int32* count); 442 443 Address device; 444 Address parameters; 445}; 446 447// InitializeVolumeReply 448class InitializeVolumeReply : public ReplyRequest { 449public: 450 InitializeVolumeReply() : ReplyRequest(INITIALIZE_VOLUME_REPLY) {} 451};*/ 452 453// SyncVolumeRequest 454class SyncVolumeRequest : public VolumeRequest { 455public: 456 SyncVolumeRequest() : VolumeRequest(SYNC_VOLUME_REQUEST) {} 457}; 458 459// SyncVolumeReply 460class SyncVolumeReply : public ReplyRequest { 461public: 462 SyncVolumeReply() : ReplyRequest(SYNC_VOLUME_REPLY) {} 463}; 464 465// ReadFSInfoRequest 466class ReadFSInfoRequest : public VolumeRequest { 467public: 468 ReadFSInfoRequest() : VolumeRequest(READ_FS_INFO_REQUEST) {} 469}; 470 471// ReadFSInfoReply 472class ReadFSInfoReply : public ReplyRequest { 473public: 474 ReadFSInfoReply() : ReplyRequest(READ_FS_INFO_REPLY) {} 475 476 fs_info info; 477}; 478 479// WriteFSInfoRequest 480class WriteFSInfoRequest : public VolumeRequest { 481public: 482 WriteFSInfoRequest() : VolumeRequest(WRITE_FS_INFO_REQUEST) {} 483 484 fs_info info; 485 uint32 mask; 486}; 487 488// WriteFSInfoReply 489class WriteFSInfoReply : public ReplyRequest { 490public: 491 WriteFSInfoReply() : ReplyRequest(WRITE_FS_INFO_REPLY) {} 492}; 493 494 495// #pragma mark - vnodes 496 497 498// LookupRequest 499class LookupRequest : public NodeRequest { 500public: 501 LookupRequest() : NodeRequest(LOOKUP_REQUEST) {} 502 status_t GetAddressInfos(AddressInfo* infos, int32* count); 503 504 Address entryName; 505 bool traverseLink; 506}; 507 508// LookupReply 509class LookupReply : public ReplyRequest { 510public: 511 LookupReply() : ReplyRequest(LOOKUP_REPLY) {} 512 513 ino_t vnid; 514}; 515 516// GetVNodeNameRequest 517class GetVNodeNameRequest : public NodeRequest { 518public: 519 GetVNodeNameRequest() : NodeRequest(GET_VNODE_NAME_REQUEST) {} 520 521 size_t size; 522}; 523 524// GetVNodeNameReply 525class GetVNodeNameReply : public ReplyRequest { 526public: 527 GetVNodeNameReply() : ReplyRequest(GET_VNODE_NAME_REPLY) {} 528 status_t GetAddressInfos(AddressInfo* infos, int32* count); 529 530 Address buffer; 531}; 532 533// ReadVNodeRequest 534class ReadVNodeRequest : public VolumeRequest { 535public: 536 ReadVNodeRequest() : VolumeRequest(READ_VNODE_REQUEST) {} 537 538 ino_t vnid; 539 bool reenter; 540}; 541 542// ReadVNodeReply 543class ReadVNodeReply : public ReplyRequest { 544public: 545 ReadVNodeReply() : ReplyRequest(READ_VNODE_REPLY) {} 546 547 void* node; 548 int type; 549 uint32 flags; 550 FSVNodeCapabilities capabilities; 551}; 552 553// WriteVNodeRequest 554class WriteVNodeRequest : public NodeRequest { 555public: 556 WriteVNodeRequest() : NodeRequest(WRITE_VNODE_REQUEST) {} 557 558 bool reenter; 559}; 560 561// WriteVNodeReply 562class WriteVNodeReply : public ReplyRequest { 563public: 564 WriteVNodeReply() : ReplyRequest(WRITE_VNODE_REPLY) {} 565}; 566 567// FSRemoveVNodeRequest 568class FSRemoveVNodeRequest : public NodeRequest { 569public: 570 FSRemoveVNodeRequest() : NodeRequest(FS_REMOVE_VNODE_REQUEST) {} 571 572 bool reenter; 573}; 574 575// FSRemoveVNodeReply 576class FSRemoveVNodeReply : public ReplyRequest { 577public: 578 FSRemoveVNodeReply() : ReplyRequest(FS_REMOVE_VNODE_REPLY) {} 579}; 580 581 582// #pragma mark - asynchronous I/O 583 584 585// DoIORequest 586class DoIORequest : public FileRequest { 587public: 588 DoIORequest() : FileRequest(DO_IO_REQUEST) {} 589 590 off_t offset; 591 size_t length; 592 int32 request; 593 bool isWrite; 594 bool isVIP; 595}; 596 597// DoIOReply 598class DoIOReply : public ReplyRequest { 599public: 600 DoIOReply() : ReplyRequest(DO_IO_REPLY) {} 601}; 602 603// CancelIORequest 604class CancelIORequest : public FileRequest { 605public: 606 CancelIORequest() : FileRequest(CANCEL_IO_REQUEST) {} 607 608 int32 request; 609}; 610 611// CancelIOReply 612class CancelIOReply : public ReplyRequest { 613public: 614 CancelIOReply() : ReplyRequest(CANCEL_IO_REPLY) {} 615}; 616 617// IterativeIOGetVecsRequest 618class IterativeIOGetVecsRequest : public VolumeRequest { 619public: 620 IterativeIOGetVecsRequest() 621 : VolumeRequest(ITERATIVE_IO_GET_VECS_REQUEST) {} 622 623 void* cookie; 624 off_t offset; 625 int32 request; 626 size_t size; 627 uint32 vecCount; 628}; 629 630// IterativeIOGetVecsReply 631class IterativeIOGetVecsReply : public ReplyRequest { 632public: 633 IterativeIOGetVecsReply() : ReplyRequest(ITERATIVE_IO_GET_VECS_REPLY) {} 634 635 enum { MAX_VECS = 8 }; 636 637 file_io_vec vecs[MAX_VECS]; 638 uint32 vecCount; 639}; 640 641// IterativeIOFinishedRequest 642class IterativeIOFinishedRequest : public VolumeRequest { 643public: 644 IterativeIOFinishedRequest() 645 : VolumeRequest(ITERATIVE_IO_FINISHED_REQUEST) {} 646 647 void* cookie; 648 int32 request; 649 status_t status; 650 bool partialTransfer; 651 size_t bytesTransferred; 652}; 653 654// IterativeIOFinishedReply 655class IterativeIOFinishedReply : public ReplyRequest { 656public: 657 IterativeIOFinishedReply() : ReplyRequest(ITERATIVE_IO_FINISHED_REPLY) {} 658}; 659 660 661// #pragma mark - nodes 662 663 664// IOCtlRequest 665class IOCtlRequest : public FileRequest { 666public: 667 IOCtlRequest() : FileRequest(IOCTL_REQUEST) {} 668 status_t GetAddressInfos(AddressInfo* infos, int32* count); 669 670 uint32 command; 671 void* bufferParameter; 672 size_t lenParameter; 673 bool isBuffer; // if false, just pass bufferParameter 674 // otherwise use buffer 675 Address buffer; 676 int32 writeSize; // ignored unless isBuffer -- then 677 // it indicates the size of the buffer to allocate 678}; 679 680// IOCtlReply 681class IOCtlReply : public ReplyRequest { 682public: 683 IOCtlReply() : ReplyRequest(IOCTL_REPLY) {} 684 status_t GetAddressInfos(AddressInfo* infos, int32* count); 685 686 status_t ioctlError; // we need a special handling since error 687 // may be a part of the client FS protocol 688 Address buffer; 689}; 690 691// SetFlagsRequest 692class SetFlagsRequest : public FileRequest { 693public: 694 SetFlagsRequest() : FileRequest(SET_FLAGS_REQUEST) {} 695 696 int flags; 697}; 698 699// SetFlagsReply 700class SetFlagsReply : public ReplyRequest { 701public: 702 SetFlagsReply() : ReplyRequest(SET_FLAGS_REPLY) {} 703}; 704 705// SelectRequest 706class SelectRequest : public FileRequest { 707public: 708 SelectRequest() : FileRequest(SELECT_REQUEST) {} 709 710 uint8 event; 711 selectsync* sync; 712}; 713 714// SelectReply 715class SelectReply : public ReplyRequest { 716public: 717 SelectReply() : ReplyRequest(SELECT_REPLY) {} 718}; 719 720// DeselectRequest 721class DeselectRequest : public FileRequest { 722public: 723 DeselectRequest() : FileRequest(DESELECT_REQUEST) {} 724 725 uint8 event; 726 selectsync* sync; 727}; 728 729// DeselectReply 730class DeselectReply : public ReplyRequest { 731public: 732 DeselectReply() : ReplyRequest(DESELECT_REPLY) {} 733}; 734 735// FSyncRequest 736class FSyncRequest : public NodeRequest { 737public: 738 FSyncRequest() : NodeRequest(FSYNC_REQUEST) {} 739}; 740 741// FSyncReply 742class FSyncReply : public ReplyRequest { 743public: 744 FSyncReply() : ReplyRequest(FSYNC_REPLY) {} 745}; 746 747// ReadSymlinkRequest 748class ReadSymlinkRequest : public NodeRequest { 749public: 750 ReadSymlinkRequest() : NodeRequest(READ_SYMLINK_REQUEST) {} 751 752 size_t size; 753}; 754 755// ReadSymlinkReply 756class ReadSymlinkReply : public ReplyRequest { 757public: 758 ReadSymlinkReply() : ReplyRequest(READ_SYMLINK_REPLY) {} 759 status_t GetAddressInfos(AddressInfo* infos, int32* count); 760 761 Address buffer; 762 size_t bytesRead; 763}; 764 765// CreateSymlinkRequest 766class CreateSymlinkRequest : public NodeRequest { 767public: 768 CreateSymlinkRequest() : NodeRequest(CREATE_SYMLINK_REQUEST) {} 769 status_t GetAddressInfos(AddressInfo* infos, int32* count); 770 771 Address name; 772 Address target; 773 int mode; 774}; 775 776// CreateSymlinkReply 777class CreateSymlinkReply : public ReplyRequest { 778public: 779 CreateSymlinkReply() : ReplyRequest(CREATE_SYMLINK_REPLY) {} 780}; 781 782// LinkRequest 783class LinkRequest : public NodeRequest { 784public: 785 LinkRequest() : NodeRequest(LINK_REQUEST) {} 786 status_t GetAddressInfos(AddressInfo* infos, int32* count); 787 788 Address name; 789 void* target; 790}; 791 792// LinkReply 793class LinkReply : public ReplyRequest { 794public: 795 LinkReply() : ReplyRequest(LINK_REPLY) {} 796}; 797 798// UnlinkRequest 799class UnlinkRequest : public NodeRequest { 800public: 801 UnlinkRequest() : NodeRequest(UNLINK_REQUEST) {} 802 status_t GetAddressInfos(AddressInfo* infos, int32* count); 803 804 Address name; 805}; 806 807// UnlinkReply 808class UnlinkReply : public ReplyRequest { 809public: 810 UnlinkReply() : ReplyRequest(UNLINK_REPLY) {} 811}; 812 813// RenameRequest 814class RenameRequest : public VolumeRequest { 815public: 816 RenameRequest() : VolumeRequest(RENAME_REQUEST) {} 817 status_t GetAddressInfos(AddressInfo* infos, int32* count); 818 819 void* oldDir; 820 Address oldName; 821 void* newDir; 822 Address newName; 823}; 824 825// RenameReply 826class RenameReply : public ReplyRequest { 827public: 828 RenameReply() : ReplyRequest(RENAME_REPLY) {} 829}; 830 831// AccessRequest 832class AccessRequest : public NodeRequest { 833public: 834 AccessRequest() : NodeRequest(ACCESS_REQUEST) {} 835 836 int mode; 837}; 838 839// AccessReply 840class AccessReply : public ReplyRequest { 841public: 842 AccessReply() : ReplyRequest(ACCESS_REPLY) {} 843}; 844 845// ReadStatRequest 846class ReadStatRequest : public NodeRequest { 847public: 848 ReadStatRequest() : NodeRequest(READ_STAT_REQUEST) {} 849}; 850 851// ReadStatReply 852class ReadStatReply : public ReplyRequest { 853public: 854 ReadStatReply() : ReplyRequest(READ_STAT_REPLY) {} 855 856 struct stat st; 857}; 858 859// WriteStatRequest 860class WriteStatRequest : public NodeRequest { 861public: 862 WriteStatRequest() : NodeRequest(WRITE_STAT_REQUEST) {} 863 864 struct stat st; 865 uint32 mask; 866}; 867 868// WriteStatReply 869class WriteStatReply : public ReplyRequest { 870public: 871 WriteStatReply() : ReplyRequest(WRITE_STAT_REPLY) {} 872}; 873 874 875// #pragma mark - files 876 877 878// CreateRequest 879class CreateRequest : public NodeRequest { 880public: 881 CreateRequest() : NodeRequest(CREATE_REQUEST) {} 882 status_t GetAddressInfos(AddressInfo* infos, int32* count); 883 884 Address name; 885 int openMode; 886 int mode; 887}; 888 889// CreateReply 890class CreateReply : public ReplyRequest { 891public: 892 CreateReply() : ReplyRequest(CREATE_REPLY) {} 893 894 ino_t vnid; 895 void* fileCookie; 896}; 897 898// OpenRequest 899class OpenRequest : public NodeRequest { 900public: 901 OpenRequest() : NodeRequest(OPEN_REQUEST) {} 902 903 int openMode; 904}; 905 906// OpenReply 907class OpenReply : public ReplyRequest { 908public: 909 OpenReply() : ReplyRequest(OPEN_REPLY) {} 910 911 void* fileCookie; 912}; 913 914// CloseRequest 915class CloseRequest : public FileRequest { 916public: 917 CloseRequest() : FileRequest(CLOSE_REQUEST) {} 918}; 919 920// CloseReply 921class CloseReply : public ReplyRequest { 922public: 923 CloseReply() : ReplyRequest(CLOSE_REPLY) {} 924}; 925 926// FreeCookieRequest 927class FreeCookieRequest : public FileRequest { 928public: 929 FreeCookieRequest() : FileRequest(FREE_COOKIE_REQUEST) {} 930}; 931 932// FreeCookieReply 933class FreeCookieReply : public ReplyRequest { 934public: 935 FreeCookieReply() : ReplyRequest(FREE_COOKIE_REPLY) {} 936}; 937 938// ReadRequest 939class ReadRequest : public FileRequest { 940public: 941 ReadRequest() : FileRequest(READ_REQUEST) {} 942 943 off_t pos; 944 size_t size; 945}; 946 947// ReadReply 948class ReadReply : public ReplyRequest { 949public: 950 ReadReply() : ReplyRequest(READ_REPLY) {} 951 status_t GetAddressInfos(AddressInfo* infos, int32* count); 952 953 Address buffer; 954 size_t bytesRead; 955}; 956 957// WriteRequest 958class WriteRequest : public FileRequest { 959public: 960 WriteRequest() : FileRequest(WRITE_REQUEST) {} 961 status_t GetAddressInfos(AddressInfo* infos, int32* count); 962 963 Address buffer; 964 off_t pos; 965}; 966 967// WriteReply 968class WriteReply : public ReplyRequest { 969public: 970 WriteReply() : ReplyRequest(WRITE_REPLY) {} 971 972 size_t bytesWritten; 973}; 974 975 976// #pragma mark - directories 977 978 979// CreateDirRequest 980class CreateDirRequest : public NodeRequest { 981public: 982 CreateDirRequest() : NodeRequest(CREATE_DIR_REQUEST) {} 983 status_t GetAddressInfos(AddressInfo* infos, int32* count); 984 985 Address name; 986 int mode; 987}; 988 989// CreateDirReply 990class CreateDirReply : public ReplyRequest { 991public: 992 CreateDirReply() : ReplyRequest(CREATE_DIR_REPLY) {} 993}; 994 995// RemoveDirRequest 996class RemoveDirRequest : public NodeRequest { 997public: 998 RemoveDirRequest() : NodeRequest(REMOVE_DIR_REQUEST) {} 999 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1000 1001 Address name; 1002}; 1003 1004// RemoveDirReply 1005class RemoveDirReply : public ReplyRequest { 1006public: 1007 RemoveDirReply() : ReplyRequest(REMOVE_DIR_REPLY) {} 1008}; 1009 1010// OpenDirRequest 1011class OpenDirRequest : public NodeRequest { 1012public: 1013 OpenDirRequest() : NodeRequest(OPEN_DIR_REQUEST) {} 1014}; 1015 1016// OpenDirReply 1017class OpenDirReply : public ReplyRequest { 1018public: 1019 OpenDirReply() : ReplyRequest(OPEN_DIR_REPLY) {} 1020 1021 void* dirCookie; 1022}; 1023 1024// CloseDirRequest 1025class CloseDirRequest : public DirRequest { 1026public: 1027 CloseDirRequest() : DirRequest(CLOSE_DIR_REQUEST) {} 1028}; 1029 1030// CloseDirReply 1031class CloseDirReply : public ReplyRequest { 1032public: 1033 CloseDirReply() : ReplyRequest(CLOSE_DIR_REPLY) {} 1034}; 1035 1036// FreeDirCookieRequest 1037class FreeDirCookieRequest : public DirRequest { 1038public: 1039 FreeDirCookieRequest() : DirRequest(FREE_DIR_COOKIE_REQUEST) {} 1040}; 1041 1042// FreeDirCookieReply 1043class FreeDirCookieReply : public ReplyRequest { 1044public: 1045 FreeDirCookieReply() : ReplyRequest(FREE_DIR_COOKIE_REPLY) {} 1046}; 1047 1048// ReadDirRequest 1049class ReadDirRequest : public DirRequest { 1050public: 1051 ReadDirRequest() : DirRequest(READ_DIR_REQUEST) {} 1052 1053 size_t bufferSize; 1054 uint32 count; 1055}; 1056 1057// ReadDirReply 1058class ReadDirReply : public ReplyRequest { 1059public: 1060 ReadDirReply() : ReplyRequest(READ_DIR_REPLY) {} 1061 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1062 1063 uint32 count; 1064 Address buffer; 1065}; 1066 1067// RewindDirRequest 1068class RewindDirRequest : public DirRequest { 1069public: 1070 RewindDirRequest() : DirRequest(REWIND_DIR_REQUEST) {} 1071}; 1072 1073// RewindDirReply 1074class RewindDirReply : public ReplyRequest { 1075public: 1076 RewindDirReply() : ReplyRequest(REWIND_DIR_REPLY) {} 1077}; 1078 1079 1080// #pragma mark - attribute directories 1081 1082 1083// OpenAttrDirRequest 1084class OpenAttrDirRequest : public NodeRequest { 1085public: 1086 OpenAttrDirRequest() : NodeRequest(OPEN_ATTR_DIR_REQUEST) {} 1087}; 1088 1089// OpenAttrDirReply 1090class OpenAttrDirReply : public ReplyRequest { 1091public: 1092 OpenAttrDirReply() : ReplyRequest(OPEN_ATTR_DIR_REPLY) {} 1093 1094 void* attrDirCookie; 1095}; 1096 1097// CloseAttrDirRequest 1098class CloseAttrDirRequest : public AttrDirRequest { 1099public: 1100 CloseAttrDirRequest() : AttrDirRequest(CLOSE_ATTR_DIR_REQUEST) {} 1101}; 1102 1103// CloseAttrDirReply 1104class CloseAttrDirReply : public ReplyRequest { 1105public: 1106 CloseAttrDirReply() : ReplyRequest(CLOSE_ATTR_DIR_REPLY) {} 1107}; 1108 1109// FreeAttrDirCookieRequest 1110class FreeAttrDirCookieRequest : public AttrDirRequest { 1111public: 1112 FreeAttrDirCookieRequest() : AttrDirRequest(FREE_ATTR_DIR_COOKIE_REQUEST) {} 1113}; 1114 1115// FreeAttrDirCookieReply 1116class FreeAttrDirCookieReply : public ReplyRequest { 1117public: 1118 FreeAttrDirCookieReply() : ReplyRequest(FREE_ATTR_DIR_COOKIE_REPLY) {} 1119}; 1120 1121// ReadAttrDirRequest 1122class ReadAttrDirRequest : public AttrDirRequest { 1123public: 1124 ReadAttrDirRequest() : AttrDirRequest(READ_ATTR_DIR_REQUEST) {} 1125 1126 size_t bufferSize; 1127 uint32 count; 1128}; 1129 1130// ReadAttrDirReply 1131class ReadAttrDirReply : public ReplyRequest { 1132public: 1133 ReadAttrDirReply() : ReplyRequest(READ_ATTR_DIR_REPLY) {} 1134 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1135 1136 uint32 count; 1137 Address buffer; 1138}; 1139 1140// RewindAttrDirRequest 1141class RewindAttrDirRequest : public AttrDirRequest { 1142public: 1143 RewindAttrDirRequest() : AttrDirRequest(REWIND_ATTR_DIR_REQUEST) {} 1144}; 1145 1146// RewindAttrDirReply 1147class RewindAttrDirReply : public ReplyRequest { 1148public: 1149 RewindAttrDirReply() : ReplyRequest(REWIND_ATTR_DIR_REPLY) {} 1150}; 1151 1152 1153// #pragma mark - attributes 1154 1155 1156// CreateAttrRequest 1157class CreateAttrRequest : public NodeRequest { 1158public: 1159 CreateAttrRequest() : NodeRequest(CREATE_ATTR_REQUEST) {} 1160 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1161 1162 Address name; 1163 uint32 type; 1164 int openMode; 1165}; 1166 1167// CreateAttrReply 1168class CreateAttrReply : public ReplyRequest { 1169public: 1170 CreateAttrReply() : ReplyRequest(CREATE_ATTR_REPLY) {} 1171 1172 void* attrCookie; 1173}; 1174 1175// OpenAttrRequest 1176class OpenAttrRequest : public NodeRequest { 1177public: 1178 OpenAttrRequest() : NodeRequest(OPEN_ATTR_REQUEST) {} 1179 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1180 1181 Address name; 1182 int openMode; 1183}; 1184 1185// OpenAttrReply 1186class OpenAttrReply : public ReplyRequest { 1187public: 1188 OpenAttrReply() : ReplyRequest(OPEN_ATTR_REPLY) {} 1189 1190 void* attrCookie; 1191}; 1192 1193// CloseAttrRequest 1194class CloseAttrRequest : public AttributeRequest { 1195public: 1196 CloseAttrRequest() : AttributeRequest(CLOSE_ATTR_REQUEST) {} 1197}; 1198 1199// CloseAttrReply 1200class CloseAttrReply : public ReplyRequest { 1201public: 1202 CloseAttrReply() : ReplyRequest(CLOSE_ATTR_REPLY) {} 1203}; 1204 1205// FreeAttrCookieRequest 1206class FreeAttrCookieRequest : public AttributeRequest { 1207public: 1208 FreeAttrCookieRequest() : AttributeRequest(FREE_ATTR_COOKIE_REQUEST) {} 1209}; 1210 1211// FreeAttrCookieReply 1212class FreeAttrCookieReply : public ReplyRequest { 1213public: 1214 FreeAttrCookieReply() : ReplyRequest(FREE_ATTR_COOKIE_REPLY) {} 1215}; 1216 1217// ReadAttrRequest 1218class ReadAttrRequest : public AttributeRequest { 1219public: 1220 ReadAttrRequest() : AttributeRequest(READ_ATTR_REQUEST) {} 1221 1222 off_t pos; 1223 size_t size; 1224}; 1225 1226// ReadAttrReply 1227class ReadAttrReply : public ReplyRequest { 1228public: 1229 ReadAttrReply() : ReplyRequest(READ_ATTR_REPLY) {} 1230 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1231 1232 Address buffer; 1233 size_t bytesRead; 1234}; 1235 1236// WriteAttrRequest 1237class WriteAttrRequest : public AttributeRequest { 1238public: 1239 WriteAttrRequest() : AttributeRequest(WRITE_ATTR_REQUEST) {} 1240 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1241 1242 Address buffer; 1243 off_t pos; 1244 size_t size; 1245}; 1246 1247// WriteAttrReply 1248class WriteAttrReply : public ReplyRequest { 1249public: 1250 WriteAttrReply() : ReplyRequest(WRITE_ATTR_REPLY) {} 1251 1252 size_t bytesWritten; 1253}; 1254 1255// ReadAttrStatRequest 1256class ReadAttrStatRequest : public AttributeRequest { 1257public: 1258 ReadAttrStatRequest() : AttributeRequest(READ_ATTR_STAT_REQUEST) {} 1259}; 1260 1261// ReadAttrStatReply 1262class ReadAttrStatReply : public ReplyRequest { 1263public: 1264 ReadAttrStatReply() : ReplyRequest(READ_ATTR_STAT_REPLY) {} 1265 1266 struct stat st; 1267}; 1268 1269// WriteAttrStatRequest 1270class WriteAttrStatRequest : public AttributeRequest { 1271public: 1272 WriteAttrStatRequest() : AttributeRequest(WRITE_ATTR_STAT_REQUEST) {} 1273 1274 struct stat st; 1275 uint32 mask; 1276}; 1277 1278// WriteAttrStatReply 1279class WriteAttrStatReply : public ReplyRequest { 1280public: 1281 WriteAttrStatReply() : ReplyRequest(WRITE_ATTR_STAT_REPLY) {} 1282}; 1283 1284// RenameAttrRequest 1285class RenameAttrRequest : public VolumeRequest { 1286public: 1287 RenameAttrRequest() : VolumeRequest(RENAME_ATTR_REQUEST) {} 1288 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1289 1290 void* oldNode; 1291 void* newNode; 1292 Address oldName; 1293 Address newName; 1294}; 1295 1296// RenameAttrReply 1297class RenameAttrReply : public ReplyRequest { 1298public: 1299 RenameAttrReply() : ReplyRequest(RENAME_ATTR_REPLY) {} 1300}; 1301 1302// RemoveAttrRequest 1303class RemoveAttrRequest : public NodeRequest { 1304public: 1305 RemoveAttrRequest() : NodeRequest(REMOVE_ATTR_REQUEST) {} 1306 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1307 1308 Address name; 1309}; 1310 1311// RemoveAttrReply 1312class RemoveAttrReply : public ReplyRequest { 1313public: 1314 RemoveAttrReply() : ReplyRequest(REMOVE_ATTR_REPLY) {} 1315}; 1316 1317 1318// #pragma mark - indices 1319 1320 1321// OpenIndexDirRequest 1322class OpenIndexDirRequest : public VolumeRequest { 1323public: 1324 OpenIndexDirRequest() : VolumeRequest(OPEN_INDEX_DIR_REQUEST) {} 1325}; 1326 1327// OpenIndexDirReply 1328class OpenIndexDirReply : public ReplyRequest { 1329public: 1330 OpenIndexDirReply() : ReplyRequest(OPEN_INDEX_DIR_REPLY) {} 1331 1332 void* indexDirCookie; 1333}; 1334 1335// CloseIndexDirRequest 1336class CloseIndexDirRequest : public IndexDirRequest { 1337public: 1338 CloseIndexDirRequest() : IndexDirRequest(CLOSE_INDEX_DIR_REQUEST) {} 1339}; 1340 1341// CloseIndexDirReply 1342class CloseIndexDirReply : public ReplyRequest { 1343public: 1344 CloseIndexDirReply() : ReplyRequest(CLOSE_INDEX_DIR_REPLY) {} 1345}; 1346 1347// FreeIndexDirCookieRequest 1348class FreeIndexDirCookieRequest : public IndexDirRequest { 1349public: 1350 FreeIndexDirCookieRequest() 1351 : IndexDirRequest(FREE_INDEX_DIR_COOKIE_REQUEST) {} 1352}; 1353 1354// FreeIndexDirCookieReply 1355class FreeIndexDirCookieReply : public ReplyRequest { 1356public: 1357 FreeIndexDirCookieReply() : ReplyRequest(FREE_INDEX_DIR_COOKIE_REPLY) {} 1358}; 1359 1360// ReadIndexDirRequest 1361class ReadIndexDirRequest : public IndexDirRequest { 1362public: 1363 ReadIndexDirRequest() : IndexDirRequest(READ_INDEX_DIR_REQUEST) {} 1364 1365 size_t bufferSize; 1366 uint32 count; 1367}; 1368 1369// ReadIndexDirReply 1370class ReadIndexDirReply : public ReplyRequest { 1371public: 1372 ReadIndexDirReply() : ReplyRequest(READ_INDEX_DIR_REPLY) {} 1373 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1374 1375 uint32 count; 1376 Address buffer; 1377}; 1378 1379// RewindIndexDirRequest 1380class RewindIndexDirRequest : public IndexDirRequest { 1381public: 1382 RewindIndexDirRequest() : IndexDirRequest(REWIND_INDEX_DIR_REQUEST) {} 1383}; 1384 1385// RewindIndexDirReply 1386class RewindIndexDirReply : public ReplyRequest { 1387public: 1388 RewindIndexDirReply() : ReplyRequest(REWIND_INDEX_DIR_REPLY) {} 1389}; 1390 1391// CreateIndexRequest 1392class CreateIndexRequest : public VolumeRequest { 1393public: 1394 CreateIndexRequest() : VolumeRequest(CREATE_INDEX_REQUEST) {} 1395 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1396 1397 Address name; 1398 uint32 type; 1399 uint32 flags; 1400}; 1401 1402// CreateIndexReply 1403class CreateIndexReply : public ReplyRequest { 1404public: 1405 CreateIndexReply() : ReplyRequest(CREATE_INDEX_REPLY) {} 1406}; 1407 1408// RemoveIndexRequest 1409class RemoveIndexRequest : public VolumeRequest { 1410public: 1411 RemoveIndexRequest() : VolumeRequest(REMOVE_INDEX_REQUEST) {} 1412 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1413 1414 Address name; 1415}; 1416 1417// RemoveIndexReply 1418class RemoveIndexReply : public ReplyRequest { 1419public: 1420 RemoveIndexReply() : ReplyRequest(REMOVE_INDEX_REPLY) {} 1421}; 1422 1423// ReadIndexStatRequest 1424class ReadIndexStatRequest : public VolumeRequest { 1425public: 1426 ReadIndexStatRequest() : VolumeRequest(READ_INDEX_STAT_REQUEST) {} 1427 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1428 1429 Address name; 1430}; 1431 1432// ReadIndexStatReply 1433class ReadIndexStatReply : public ReplyRequest { 1434public: 1435 ReadIndexStatReply() : ReplyRequest(READ_INDEX_STAT_REPLY) {} 1436 1437 struct stat st; 1438}; 1439 1440 1441// #pragma mark - queries 1442 1443 1444// OpenQueryRequest 1445class OpenQueryRequest : public VolumeRequest { 1446public: 1447 OpenQueryRequest() : VolumeRequest(OPEN_QUERY_REQUEST) {} 1448 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1449 1450 Address queryString; 1451 uint32 flags; 1452 port_id port; 1453 uint32 token; 1454}; 1455 1456// OpenQueryReply 1457class OpenQueryReply : public ReplyRequest { 1458public: 1459 OpenQueryReply() : ReplyRequest(OPEN_QUERY_REPLY) {} 1460 1461 void* queryCookie; 1462}; 1463 1464// CloseQueryRequest 1465class CloseQueryRequest : public QueryRequest { 1466public: 1467 CloseQueryRequest() : QueryRequest(CLOSE_QUERY_REQUEST) {} 1468}; 1469 1470// CloseQueryReply 1471class CloseQueryReply : public ReplyRequest { 1472public: 1473 CloseQueryReply() : ReplyRequest(CLOSE_QUERY_REPLY) {} 1474}; 1475 1476// FreeQueryCookieRequest 1477class FreeQueryCookieRequest : public QueryRequest { 1478public: 1479 FreeQueryCookieRequest() : QueryRequest(FREE_QUERY_COOKIE_REQUEST) {} 1480}; 1481 1482// FreeQueryCookieReply 1483class FreeQueryCookieReply : public ReplyRequest { 1484public: 1485 FreeQueryCookieReply() : ReplyRequest(FREE_QUERY_COOKIE_REPLY) {} 1486}; 1487 1488// ReadQueryRequest 1489class ReadQueryRequest : public QueryRequest { 1490public: 1491 ReadQueryRequest() : QueryRequest(READ_QUERY_REQUEST) {} 1492 1493 size_t bufferSize; 1494 uint32 count; 1495}; 1496 1497// ReadQueryReply 1498class ReadQueryReply : public ReplyRequest { 1499public: 1500 ReadQueryReply() : ReplyRequest(READ_QUERY_REPLY) {} 1501 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1502 1503 uint32 count; 1504 Address buffer; 1505}; 1506 1507// RewindQueryRequest 1508class RewindQueryRequest : public QueryRequest { 1509public: 1510 RewindQueryRequest() : QueryRequest(REWIND_QUERY_REQUEST) {} 1511}; 1512 1513// RewindQueryReply 1514class RewindQueryReply : public ReplyRequest { 1515public: 1516 RewindQueryReply() : ReplyRequest(REWIND_QUERY_REPLY) {} 1517}; 1518 1519 1520// #pragma mark ----- node monitoring ----- 1521 1522 1523// NodeMonitoringEventRequest 1524class NodeMonitoringEventRequest : public KernelRequest { 1525public: 1526 NodeMonitoringEventRequest() 1527 : KernelRequest(NODE_MONITORING_EVENT_REQUEST) {} 1528 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1529 1530 void* listener; 1531 Address event; 1532}; 1533 1534// NodeMonitoringEventReply 1535class NodeMonitoringEventReply : public ReplyRequest { 1536public: 1537 NodeMonitoringEventReply() : ReplyRequest(NODE_MONITORING_EVENT_REPLY) {} 1538}; 1539 1540 1541// #pragma mark - 1542// #pragma mark ----- userland requests ----- 1543 1544// #pragma mark - 1545// #pragma mark ----- notifications ----- 1546 1547// NotifyListenerRequest 1548class NotifyListenerRequest : public Request { 1549public: 1550 NotifyListenerRequest() : Request(NOTIFY_LISTENER_REQUEST) {} 1551 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1552 1553 int32 operation; 1554 uint32 details; // for B_STAT_CHANGED:statFields 1555 // and B_ATTRIBUTE_CHANGED:cause 1556 dev_t device; 1557 ino_t oldDirectory; 1558 ino_t directory; 1559 ino_t node; 1560 Address oldName; 1561 Address name; 1562}; 1563 1564// NotifyListenerReply 1565class NotifyListenerReply : public ReplyRequest { 1566public: 1567 NotifyListenerReply() : ReplyRequest(NOTIFY_LISTENER_REPLY) {} 1568}; 1569 1570// NotifySelectRequest 1571class NotifySelectEventRequest : public Request { 1572public: 1573 NotifySelectEventRequest() : Request(NOTIFY_SELECT_EVENT_REQUEST) {} 1574 1575 selectsync* sync; 1576 uint8 event; 1577 bool unspecifiedEvent; 1578}; 1579 1580// NotifySelectEventReply 1581class NotifySelectEventReply : public ReplyRequest { 1582public: 1583 NotifySelectEventReply() : ReplyRequest(NOTIFY_SELECT_EVENT_REPLY) {} 1584}; 1585 1586// NotifyQueryRequest 1587class NotifyQueryRequest : public Request { 1588public: 1589 NotifyQueryRequest() : Request(NOTIFY_QUERY_REQUEST) {} 1590 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1591 1592 port_id port; 1593 int32 token; 1594 int32 operation; // B_ENTRY_{CREATED,REMOVED} 1595 dev_t device; 1596 ino_t directory; 1597 ino_t node; 1598 Address name; 1599}; 1600 1601// NotifyQueryReply 1602class NotifyQueryReply : public ReplyRequest { 1603public: 1604 NotifyQueryReply() : ReplyRequest(NOTIFY_QUERY_REPLY) {} 1605}; 1606 1607 1608// #pragma mark - 1609// #pragma mark ----- vnodes ----- 1610 1611// GetVNodeRequest 1612class GetVNodeRequest : public Request { 1613public: 1614 GetVNodeRequest() : Request(GET_VNODE_REQUEST) {} 1615 1616 dev_t nsid; 1617 ino_t vnid; 1618}; 1619 1620// GetVNodeReply 1621class GetVNodeReply : public ReplyRequest { 1622public: 1623 GetVNodeReply() : ReplyRequest(GET_VNODE_REPLY) {} 1624 1625 void* node; 1626}; 1627 1628// PutVNodeRequest 1629class PutVNodeRequest : public Request { 1630public: 1631 PutVNodeRequest() : Request(PUT_VNODE_REQUEST) {} 1632 1633 dev_t nsid; 1634 ino_t vnid; 1635}; 1636 1637// PutVNodeReply 1638class PutVNodeReply : public ReplyRequest { 1639public: 1640 PutVNodeReply() : ReplyRequest(PUT_VNODE_REPLY) {} 1641}; 1642 1643// AcquireVNodeRequest 1644class AcquireVNodeRequest : public Request { 1645public: 1646 AcquireVNodeRequest() : Request(ACQUIRE_VNODE_REQUEST) {} 1647 1648 dev_t nsid; 1649 ino_t vnid; 1650}; 1651 1652// AcquireVNodeReply 1653class AcquireVNodeReply : public ReplyRequest { 1654public: 1655 AcquireVNodeReply() : ReplyRequest(ACQUIRE_VNODE_REPLY) {} 1656}; 1657 1658// NewVNodeRequest 1659class NewVNodeRequest : public Request { 1660public: 1661 NewVNodeRequest() : Request(NEW_VNODE_REQUEST) {} 1662 1663 dev_t nsid; 1664 ino_t vnid; 1665 void* node; 1666 FSVNodeCapabilities capabilities; 1667}; 1668 1669// NewVNodeReply 1670class NewVNodeReply : public ReplyRequest { 1671public: 1672 NewVNodeReply() : ReplyRequest(NEW_VNODE_REPLY) {} 1673}; 1674 1675// PublishVNodeRequest 1676class PublishVNodeRequest : public Request { 1677public: 1678 PublishVNodeRequest() : Request(PUBLISH_VNODE_REQUEST) {} 1679 1680 dev_t nsid; 1681 ino_t vnid; 1682 void* node; 1683 int type; 1684 uint32 flags; 1685 FSVNodeCapabilities capabilities; 1686}; 1687 1688// PublishVNodeReply 1689class PublishVNodeReply : public ReplyRequest { 1690public: 1691 PublishVNodeReply() : ReplyRequest(PUBLISH_VNODE_REPLY) {} 1692}; 1693 1694// RemoveVNodeRequest 1695class RemoveVNodeRequest : public Request { 1696public: 1697 RemoveVNodeRequest() : Request(REMOVE_VNODE_REQUEST) {} 1698 1699 dev_t nsid; 1700 ino_t vnid; 1701}; 1702 1703// RemoveVNodeReply 1704class RemoveVNodeReply : public ReplyRequest { 1705public: 1706 RemoveVNodeReply() : ReplyRequest(REMOVE_VNODE_REPLY) {} 1707}; 1708 1709// UnremoveVNodeRequest 1710class UnremoveVNodeRequest : public Request { 1711public: 1712 UnremoveVNodeRequest() : Request(UNREMOVE_VNODE_REQUEST) {} 1713 1714 dev_t nsid; 1715 ino_t vnid; 1716}; 1717 1718// UnremoveVNodeReply 1719class UnremoveVNodeReply : public ReplyRequest { 1720public: 1721 UnremoveVNodeReply() : ReplyRequest(UNREMOVE_VNODE_REPLY) {} 1722}; 1723 1724// GetVNodeRemovedRequest 1725class GetVNodeRemovedRequest : public Request { 1726public: 1727 GetVNodeRemovedRequest() : Request(GET_VNODE_REMOVED_REQUEST) {} 1728 1729 dev_t nsid; 1730 ino_t vnid; 1731}; 1732 1733// GetVNodeRemovedReply 1734class GetVNodeRemovedReply : public ReplyRequest { 1735public: 1736 GetVNodeRemovedReply() : ReplyRequest(GET_VNODE_REMOVED_REPLY) {} 1737 1738 bool removed; 1739}; 1740 1741 1742// #pragma mark - file cache 1743 1744 1745// FileCacheCreateRequest 1746class FileCacheCreateRequest : public FileCacheRequest { 1747public: 1748 FileCacheCreateRequest() : FileCacheRequest(FILE_CACHE_CREATE_REQUEST) {} 1749 1750 off_t size; 1751}; 1752 1753// FileCacheCreateReply 1754class FileCacheCreateReply : public ReplyRequest { 1755public: 1756 FileCacheCreateReply() : ReplyRequest(FILE_CACHE_CREATE_REPLY) {} 1757}; 1758 1759// FileCacheDeleteRequest 1760class FileCacheDeleteRequest : public FileCacheRequest { 1761public: 1762 FileCacheDeleteRequest() : FileCacheRequest(FILE_CACHE_DELETE_REQUEST) {} 1763}; 1764 1765// FileCacheDeleteReply 1766class FileCacheDeleteReply : public ReplyRequest { 1767public: 1768 FileCacheDeleteReply() : ReplyRequest(FILE_CACHE_DELETE_REPLY) {} 1769}; 1770 1771// FileCacheSetEnabledRequest 1772class FileCacheSetEnabledRequest : public FileCacheRequest { 1773public: 1774 FileCacheSetEnabledRequest() 1775 : FileCacheRequest(FILE_CACHE_SET_ENABLED_REQUEST) {} 1776 1777 bool enabled; 1778}; 1779 1780// FileCacheSetEnabledReply 1781class FileCacheSetEnabledReply : public ReplyRequest { 1782public: 1783 FileCacheSetEnabledReply() : ReplyRequest(FILE_CACHE_SET_ENABLED_REPLY) {} 1784}; 1785 1786// FileCacheSetSizeRequest 1787class FileCacheSetSizeRequest : public FileCacheRequest { 1788public: 1789 FileCacheSetSizeRequest() : FileCacheRequest(FILE_CACHE_SET_SIZE_REQUEST) {} 1790 1791 size_t size; 1792}; 1793 1794// FileCacheSetSizeReply 1795class FileCacheSetSizeReply : public ReplyRequest { 1796public: 1797 FileCacheSetSizeReply() : ReplyRequest(FILE_CACHE_SET_SIZE_REPLY) {} 1798}; 1799 1800 1801// FileCacheSyncRequest 1802class FileCacheSyncRequest : public FileCacheRequest { 1803public: 1804 FileCacheSyncRequest() : FileCacheRequest(FILE_CACHE_SYNC_REQUEST) {} 1805}; 1806 1807// FileCacheSyncReply 1808class FileCacheSyncReply : public ReplyRequest { 1809public: 1810 FileCacheSyncReply() : ReplyRequest(FILE_CACHE_SYNC_REPLY) {} 1811}; 1812 1813 1814// FileCacheReadRequest 1815class FileCacheReadRequest : public FileCacheRequest { 1816public: 1817 FileCacheReadRequest() : FileCacheRequest(FILE_CACHE_READ_REQUEST) {} 1818 1819 void* cookie; 1820 off_t pos; 1821 size_t size; 1822}; 1823 1824// FileCacheReadReply 1825class FileCacheReadReply : public ReplyRequest { 1826public: 1827 FileCacheReadReply() : ReplyRequest(FILE_CACHE_READ_REPLY) {} 1828 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1829 1830 Address buffer; 1831 size_t bytesRead; 1832}; 1833 1834// FileCacheWriteRequest 1835class FileCacheWriteRequest : public FileCacheRequest { 1836public: 1837 FileCacheWriteRequest() : FileCacheRequest(FILE_CACHE_WRITE_REQUEST) {} 1838 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1839 1840 void* cookie; 1841 Address buffer; 1842 size_t size; 1843 off_t pos; 1844}; 1845 1846// FileCacheWriteReply 1847class FileCacheWriteReply : public ReplyRequest { 1848public: 1849 FileCacheWriteReply() : ReplyRequest(FILE_CACHE_WRITE_REPLY) {} 1850 1851 size_t bytesWritten; 1852}; 1853 1854 1855// #pragma mark - I/O 1856 1857 1858// DoIterativeFDIORequest 1859class DoIterativeFDIORequest : public Request { 1860public: 1861 DoIterativeFDIORequest() : Request(DO_ITERATIVE_FD_IO_REQUEST) {} 1862 1863 enum { MAX_VECS = 8 }; 1864 1865 dev_t nsid; 1866 int fd; 1867 int32 request; 1868 void* cookie; 1869 file_io_vec vecs[MAX_VECS]; 1870 uint32 vecCount; 1871}; 1872 1873// DoIterativeFDIOReply 1874class DoIterativeFDIOReply : public ReplyRequest { 1875public: 1876 DoIterativeFDIOReply() : ReplyRequest(DO_ITERATIVE_FD_IO_REPLY) {} 1877}; 1878 1879// ReadFromIORequestRequest 1880class ReadFromIORequestRequest : public IORequestRequest { 1881public: 1882 ReadFromIORequestRequest() 1883 : IORequestRequest(READ_FROM_IO_REQUEST_REQUEST) {} 1884 1885 size_t size; 1886}; 1887 1888// ReadFromIORequestReply 1889class ReadFromIORequestReply : public ReplyRequest { 1890public: 1891 ReadFromIORequestReply() : ReplyRequest(READ_FROM_IO_REQUEST_REPLY) {} 1892 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1893 1894 Address buffer; 1895}; 1896 1897// WriteToIORequestRequest 1898class WriteToIORequestRequest : public IORequestRequest { 1899public: 1900 WriteToIORequestRequest() : IORequestRequest(WRITE_TO_IO_REQUEST_REQUEST) {} 1901 status_t GetAddressInfos(AddressInfo* infos, int32* count); 1902 1903 Address buffer; 1904}; 1905 1906// WriteToIORequestReply 1907class WriteToIORequestReply : public ReplyRequest { 1908public: 1909 WriteToIORequestReply() : ReplyRequest(WRITE_TO_IO_REQUEST_REPLY) {} 1910}; 1911 1912// NotifyIORequestRequest 1913class NotifyIORequestRequest : public IORequestRequest { 1914public: 1915 NotifyIORequestRequest() : IORequestRequest(NOTIFY_IO_REQUEST_REQUEST) {} 1916 1917 enum { MAX_VECS = 8 }; 1918 1919 status_t status; 1920}; 1921 1922// NotifyIORequestReply 1923class NotifyIORequestReply : public ReplyRequest { 1924public: 1925 NotifyIORequestReply() : ReplyRequest(NOTIFY_IO_REQUEST_REPLY) {} 1926}; 1927 1928 1929// #pragma mark - node monitoring 1930 1931 1932// AddNodeListenerRequest 1933class AddNodeListenerRequest : public Request { 1934public: 1935 AddNodeListenerRequest() : Request(ADD_NODE_LISTENER_REQUEST) {} 1936 1937 dev_t device; 1938 ino_t node; 1939 uint32 flags; 1940 void* listener; 1941}; 1942 1943// AddNodeListenerReply 1944class AddNodeListenerReply : public ReplyRequest { 1945public: 1946 AddNodeListenerReply() : ReplyRequest(ADD_NODE_LISTENER_REPLY) {} 1947}; 1948 1949// RemoveNodeListenerRequest 1950class RemoveNodeListenerRequest : public Request { 1951public: 1952 RemoveNodeListenerRequest() : Request(REMOVE_NODE_LISTENER_REQUEST) {} 1953 1954 dev_t device; 1955 ino_t node; 1956 void* listener; 1957}; 1958 1959// RemoveNodeListenerReply 1960class RemoveNodeListenerReply : public ReplyRequest { 1961public: 1962 RemoveNodeListenerReply() : ReplyRequest(REMOVE_NODE_LISTENER_REPLY) {} 1963}; 1964 1965 1966////////////////// 1967// General Reply 1968 1969// ReceiptAckReply 1970class ReceiptAckReply : public ReplyRequest { 1971public: 1972 ReceiptAckReply() : ReplyRequest(RECEIPT_ACK_REPLY) {} 1973}; 1974 1975 1976/////////////////// 1977// Request Checks 1978 1979// do_for_request 1980template<class Task> 1981static 1982status_t 1983do_for_request(Request* request, Task& task) 1984{ 1985 if (!request) 1986 return B_BAD_VALUE; 1987 switch (request->GetType()) { 1988 // kernel -> userland requests 1989 // administrative 1990 case UFS_DISCONNECT_REQUEST: 1991 return task((UFSDisconnectRequest*)request); 1992 case FS_CONNECT_REQUEST: 1993 return task((FSConnectRequest*)request); 1994 case FS_CONNECT_REPLY: 1995 return task((FSConnectReply*)request); 1996 // FS 1997 case MOUNT_VOLUME_REQUEST: 1998 return task((MountVolumeRequest*)request); 1999 case MOUNT_VOLUME_REPLY: 2000 return task((MountVolumeReply*)request); 2001 case UNMOUNT_VOLUME_REQUEST: 2002 return task((UnmountVolumeRequest*)request); 2003 case UNMOUNT_VOLUME_REPLY: 2004 return task((UnmountVolumeReply*)request); 2005// case INITIALIZE_VOLUME_REQUEST: 2006// return task((InitializeVolumeRequest*)request); 2007// case INITIALIZE_VOLUME_REPLY: 2008// return task((InitializeVolumeReply*)request); 2009 case SYNC_VOLUME_REQUEST: 2010 return task((SyncVolumeRequest*)request); 2011 case SYNC_VOLUME_REPLY: 2012 return task((SyncVolumeReply*)request); 2013 case READ_FS_INFO_REQUEST: 2014 return task((ReadFSInfoRequest*)request); 2015 case READ_FS_INFO_REPLY: 2016 return task((ReadFSInfoReply*)request); 2017 case WRITE_FS_INFO_REQUEST: 2018 return task((WriteFSInfoRequest*)request); 2019 case WRITE_FS_INFO_REPLY: 2020 return task((WriteFSInfoReply*)request); 2021 // vnodes 2022 case LOOKUP_REQUEST: 2023 return task((LookupRequest*)request); 2024 case LOOKUP_REPLY: 2025 return task((LookupReply*)request); 2026 case GET_VNODE_NAME_REQUEST: 2027 return task((GetVNodeNameRequest*)request); 2028 case GET_VNODE_NAME_REPLY: 2029 return task((GetVNodeNameReply*)request); 2030 case READ_VNODE_REQUEST: 2031 return task((ReadVNodeRequest*)request); 2032 case READ_VNODE_REPLY: 2033 return task((ReadVNodeReply*)request); 2034 case WRITE_VNODE_REQUEST: 2035 return task((WriteVNodeRequest*)request); 2036 case WRITE_VNODE_REPLY: 2037 return task((WriteVNodeReply*)request); 2038 case FS_REMOVE_VNODE_REQUEST: 2039 return task((FSRemoveVNodeRequest*)request); 2040 case FS_REMOVE_VNODE_REPLY: 2041 return task((FSRemoveVNodeReply*)request); 2042 // asynchronous I/O 2043 case DO_IO_REQUEST: 2044 return task((DoIORequest*)request); 2045 case DO_IO_REPLY: 2046 return task((DoIOReply*)request); 2047 case CANCEL_IO_REQUEST: 2048 return task((CancelIORequest*)request); 2049 case CANCEL_IO_REPLY: 2050 return task((CancelIOReply*)request); 2051 case ITERATIVE_IO_GET_VECS_REQUEST: 2052 return task((IterativeIOGetVecsRequest*)request); 2053 case ITERATIVE_IO_GET_VECS_REPLY: 2054 return task((IterativeIOGetVecsReply*)request); 2055 case ITERATIVE_IO_FINISHED_REQUEST: 2056 return task((IterativeIOFinishedRequest*)request); 2057 case ITERATIVE_IO_FINISHED_REPLY: 2058 return task((IterativeIOFinishedReply*)request); 2059 // nodes 2060 case IOCTL_REQUEST: 2061 return task((IOCtlRequest*)request); 2062 case IOCTL_REPLY: 2063 return task((IOCtlReply*)request); 2064 case SET_FLAGS_REQUEST: 2065 return task((SetFlagsRequest*)request); 2066 case SET_FLAGS_REPLY: 2067 return task((SetFlagsReply*)request); 2068 case SELECT_REQUEST: 2069 return task((SelectRequest*)request); 2070 case SELECT_REPLY: 2071 return task((SelectReply*)request); 2072 case DESELECT_REQUEST: 2073 return task((DeselectRequest*)request); 2074 case DESELECT_REPLY: 2075 return task((DeselectReply*)request); 2076 case FSYNC_REQUEST: 2077 return task((FSyncRequest*)request); 2078 case FSYNC_REPLY: 2079 return task((FSyncReply*)request); 2080 case READ_SYMLINK_REQUEST: 2081 return task((ReadSymlinkRequest*)request); 2082 case READ_SYMLINK_REPLY: 2083 return task((ReadSymlinkReply*)request); 2084 case CREATE_SYMLINK_REQUEST: 2085 return task((CreateSymlinkRequest*)request); 2086 case CREATE_SYMLINK_REPLY: 2087 return task((CreateSymlinkReply*)request); 2088 case LINK_REQUEST: 2089 return task((LinkRequest*)request); 2090 case LINK_REPLY: 2091 return task((LinkReply*)request); 2092 case UNLINK_REQUEST: 2093 return task((UnlinkRequest*)request); 2094 case UNLINK_REPLY: 2095 return task((UnlinkReply*)request); 2096 case RENAME_REQUEST: 2097 return task((RenameRequest*)request); 2098 case RENAME_REPLY: 2099 return task((RenameReply*)request); 2100 case ACCESS_REQUEST: 2101 return task((AccessRequest*)request); 2102 case ACCESS_REPLY: 2103 return task((AccessReply*)request); 2104 case READ_STAT_REQUEST: 2105 return task((ReadStatRequest*)request); 2106 case READ_STAT_REPLY: 2107 return task((ReadStatReply*)request); 2108 case WRITE_STAT_REQUEST: 2109 return task((WriteStatRequest*)request); 2110 case WRITE_STAT_REPLY: 2111 return task((WriteStatReply*)request); 2112 // files 2113 case CREATE_REQUEST: 2114 return task((CreateRequest*)request); 2115 case CREATE_REPLY: 2116 return task((CreateReply*)request); 2117 case OPEN_REQUEST: 2118 return task((OpenRequest*)request); 2119 case OPEN_REPLY: 2120 return task((OpenReply*)request); 2121 case CLOSE_REQUEST: 2122 return task((CloseRequest*)request); 2123 case CLOSE_REPLY: 2124 return task((CloseReply*)request); 2125 case FREE_COOKIE_REQUEST: 2126 return task((FreeCookieRequest*)request); 2127 case FREE_COOKIE_REPLY: 2128 return task((FreeCookieReply*)request); 2129 case READ_REQUEST: 2130 return task((ReadRequest*)request); 2131 case READ_REPLY: 2132 return task((ReadReply*)request); 2133 case WRITE_REQUEST: 2134 return task((WriteRequest*)request); 2135 case WRITE_REPLY: 2136 return task((WriteReply*)request); 2137 // directories 2138 case CREATE_DIR_REQUEST: 2139 return task((CreateDirRequest*)request); 2140 case CREATE_DIR_REPLY: 2141 return task((CreateDirReply*)request); 2142 case REMOVE_DIR_REQUEST: 2143 return task((RemoveDirRequest*)request); 2144 case REMOVE_DIR_REPLY: 2145 return task((RemoveDirReply*)request); 2146 case OPEN_DIR_REQUEST: 2147 return task((OpenDirRequest*)request); 2148 case OPEN_DIR_REPLY: 2149 return task((OpenDirReply*)request); 2150 case CLOSE_DIR_REQUEST: 2151 return task((CloseDirRequest*)request); 2152 case CLOSE_DIR_REPLY: 2153 return task((CloseDirReply*)request); 2154 case FREE_DIR_COOKIE_REQUEST: 2155 return task((FreeDirCookieRequest*)request); 2156 case FREE_DIR_COOKIE_REPLY: 2157 return task((FreeDirCookieReply*)request); 2158 case READ_DIR_REQUEST: 2159 return task((ReadDirRequest*)request); 2160 case READ_DIR_REPLY: 2161 return task((ReadDirReply*)request); 2162 case REWIND_DIR_REQUEST: 2163 return task((RewindDirRequest*)request); 2164 case REWIND_DIR_REPLY: 2165 return task((RewindDirReply*)request); 2166 // attribute directories 2167 case OPEN_ATTR_DIR_REQUEST: 2168 return task((OpenAttrDirRequest*)request); 2169 case OPEN_ATTR_DIR_REPLY: 2170 return task((OpenAttrDirReply*)request); 2171 case CLOSE_ATTR_DIR_REQUEST: 2172 return task((CloseAttrDirRequest*)request); 2173 case CLOSE_ATTR_DIR_REPLY: 2174 return task((CloseAttrDirReply*)request); 2175 case FREE_ATTR_DIR_COOKIE_REQUEST: 2176 return task((FreeAttrDirCookieRequest*)request); 2177 case FREE_ATTR_DIR_COOKIE_REPLY: 2178 return task((FreeAttrDirCookieReply*)request); 2179 case READ_ATTR_DIR_REQUEST: 2180 return task((ReadAttrDirRequest*)request); 2181 case READ_ATTR_DIR_REPLY: 2182 return task((ReadAttrDirReply*)request); 2183 case REWIND_ATTR_DIR_REQUEST: 2184 return task((RewindAttrDirRequest*)request); 2185 case REWIND_ATTR_DIR_REPLY: 2186 return task((RewindAttrDirReply*)request); 2187 // attributes 2188 case CREATE_ATTR_REQUEST: 2189 return task((CreateAttrRequest*)request); 2190 case CREATE_ATTR_REPLY: 2191 return task((CreateAttrReply*)request); 2192 case OPEN_ATTR_REQUEST: 2193 return task((OpenAttrRequest*)request); 2194 case OPEN_ATTR_REPLY: 2195 return task((OpenAttrReply*)request); 2196 case CLOSE_ATTR_REQUEST: 2197 return task((CloseAttrRequest*)request); 2198 case CLOSE_ATTR_REPLY: 2199 return task((CloseAttrReply*)request); 2200 case FREE_ATTR_COOKIE_REQUEST: 2201 return task((FreeAttrCookieRequest*)request); 2202 case FREE_ATTR_COOKIE_REPLY: 2203 return task((FreeAttrCookieReply*)request); 2204 case READ_ATTR_REQUEST: 2205 return task((ReadAttrRequest*)request); 2206 case READ_ATTR_REPLY: 2207 return task((ReadAttrReply*)request); 2208 case WRITE_ATTR_REQUEST: 2209 return task((WriteAttrRequest*)request); 2210 case WRITE_ATTR_REPLY: 2211 return task((WriteAttrReply*)request); 2212 case READ_ATTR_STAT_REQUEST: 2213 return task((ReadAttrStatRequest*)request); 2214 case READ_ATTR_STAT_REPLY: 2215 return task((ReadAttrStatReply*)request); 2216 case WRITE_ATTR_STAT_REQUEST: 2217 return task((WriteAttrStatRequest*)request); 2218 case WRITE_ATTR_STAT_REPLY: 2219 return task((WriteAttrStatReply*)request); 2220 case RENAME_ATTR_REQUEST: 2221 return task((RenameAttrRequest*)request); 2222 case RENAME_ATTR_REPLY: 2223 return task((RenameAttrReply*)request); 2224 case REMOVE_ATTR_REQUEST: 2225 return task((RemoveAttrRequest*)request); 2226 case REMOVE_ATTR_REPLY: 2227 return task((RemoveAttrReply*)request); 2228 // indices 2229 case OPEN_INDEX_DIR_REQUEST: 2230 return task((OpenIndexDirRequest*)request); 2231 case OPEN_INDEX_DIR_REPLY: 2232 return task((OpenIndexDirReply*)request); 2233 case CLOSE_INDEX_DIR_REQUEST: 2234 return task((CloseIndexDirRequest*)request); 2235 case CLOSE_INDEX_DIR_REPLY: 2236 return task((CloseIndexDirReply*)request); 2237 case FREE_INDEX_DIR_COOKIE_REQUEST: 2238 return task((FreeIndexDirCookieRequest*)request); 2239 case FREE_INDEX_DIR_COOKIE_REPLY: 2240 return task((FreeIndexDirCookieReply*)request); 2241 case READ_INDEX_DIR_REQUEST: 2242 return task((ReadIndexDirRequest*)request); 2243 case READ_INDEX_DIR_REPLY: 2244 return task((ReadIndexDirReply*)request); 2245 case REWIND_INDEX_DIR_REQUEST: 2246 return task((RewindIndexDirRequest*)request); 2247 case REWIND_INDEX_DIR_REPLY: 2248 return task((RewindIndexDirReply*)request); 2249 case CREATE_INDEX_REQUEST: 2250 return task((CreateIndexRequest*)request); 2251 case CREATE_INDEX_REPLY: 2252 return task((CreateIndexReply*)request); 2253 case REMOVE_INDEX_REQUEST: 2254 return task((RemoveIndexRequest*)request); 2255 case REMOVE_INDEX_REPLY: 2256 return task((RemoveIndexReply*)request); 2257 case READ_INDEX_STAT_REQUEST: 2258 return task((ReadIndexStatRequest*)request); 2259 case READ_INDEX_STAT_REPLY: 2260 return task((ReadIndexStatReply*)request); 2261 // queries 2262 case OPEN_QUERY_REQUEST: 2263 return task((OpenQueryRequest*)request); 2264 case OPEN_QUERY_REPLY: 2265 return task((OpenQueryReply*)request); 2266 case CLOSE_QUERY_REQUEST: 2267 return task((CloseQueryRequest*)request); 2268 case CLOSE_QUERY_REPLY: 2269 return task((CloseQueryReply*)request); 2270 case FREE_QUERY_COOKIE_REQUEST: 2271 return task((FreeQueryCookieRequest*)request); 2272 case FREE_QUERY_COOKIE_REPLY: 2273 return task((FreeQueryCookieReply*)request); 2274 case READ_QUERY_REQUEST: 2275 return task((ReadQueryRequest*)request); 2276 case READ_QUERY_REPLY: 2277 return task((ReadQueryReply*)request); 2278 case REWIND_QUERY_REQUEST: 2279 return task((RewindQueryRequest*)request); 2280 case REWIND_QUERY_REPLY: 2281 return task((RewindQueryReply*)request); 2282 // node monitoring 2283 case NODE_MONITORING_EVENT_REQUEST: 2284 return task((NodeMonitoringEventRequest*)request); 2285 case NODE_MONITORING_EVENT_REPLY: 2286 return task((NodeMonitoringEventReply*)request); 2287 2288 // userland -> kernel requests 2289 // notifications 2290 case NOTIFY_LISTENER_REQUEST: 2291 return task((NotifyListenerRequest*)request); 2292 case NOTIFY_LISTENER_REPLY: 2293 return task((NotifyListenerReply*)request); 2294 case NOTIFY_SELECT_EVENT_REQUEST: 2295 return task((NotifySelectEventRequest*)request); 2296 case NOTIFY_SELECT_EVENT_REPLY: 2297 return task((NotifySelectEventReply*)request); 2298 case NOTIFY_QUERY_REQUEST: 2299 return task((NotifyQueryRequest*)request); 2300 case NOTIFY_QUERY_REPLY: 2301 return task((NotifyQueryReply*)request); 2302 // vnodes 2303 case GET_VNODE_REQUEST: 2304 return task((GetVNodeRequest*)request); 2305 case GET_VNODE_REPLY: 2306 return task((GetVNodeReply*)request); 2307 case PUT_VNODE_REQUEST: 2308 return task((PutVNodeRequest*)request); 2309 case PUT_VNODE_REPLY: 2310 return task((PutVNodeReply*)request); 2311 case ACQUIRE_VNODE_REQUEST: 2312 return task((PutVNodeRequest*)request); 2313 case ACQUIRE_VNODE_REPLY: 2314 return task((AcquireVNodeReply*)request); 2315 case NEW_VNODE_REQUEST: 2316 return task((NewVNodeRequest*)request); 2317 case NEW_VNODE_REPLY: 2318 return task((NewVNodeReply*)request); 2319 case PUBLISH_VNODE_REQUEST: 2320 return task((PublishVNodeRequest*)request); 2321 case PUBLISH_VNODE_REPLY: 2322 return task((PublishVNodeReply*)request); 2323 case REMOVE_VNODE_REQUEST: 2324 return task((RemoveVNodeRequest*)request); 2325 case REMOVE_VNODE_REPLY: 2326 return task((RemoveVNodeReply*)request); 2327 case UNREMOVE_VNODE_REQUEST: 2328 return task((UnremoveVNodeRequest*)request); 2329 case UNREMOVE_VNODE_REPLY: 2330 return task((UnremoveVNodeReply*)request); 2331 case GET_VNODE_REMOVED_REQUEST: 2332 return task((GetVNodeRemovedRequest*)request); 2333 case GET_VNODE_REMOVED_REPLY: 2334 return task((GetVNodeRemovedReply*)request); 2335 // file cache 2336 case FILE_CACHE_CREATE_REQUEST: 2337 return task((FileCacheCreateRequest*)request); 2338 case FILE_CACHE_CREATE_REPLY: 2339 return task((FileCacheCreateReply*)request); 2340 case FILE_CACHE_DELETE_REQUEST: 2341 return task((FileCacheDeleteRequest*)request); 2342 case FILE_CACHE_DELETE_REPLY: 2343 return task((FileCacheDeleteReply*)request); 2344 case FILE_CACHE_SET_ENABLED_REQUEST: 2345 return task((FileCacheSetEnabledRequest*)request); 2346 case FILE_CACHE_SET_ENABLED_REPLY: 2347 return task((FileCacheSetEnabledReply*)request); 2348 case FILE_CACHE_SET_SIZE_REQUEST: 2349 return task((FileCacheSetSizeRequest*)request); 2350 case FILE_CACHE_SET_SIZE_REPLY: 2351 return task((FileCacheSetSizeReply*)request); 2352 case FILE_CACHE_SYNC_REQUEST: 2353 return task((FileCacheSyncRequest*)request); 2354 case FILE_CACHE_SYNC_REPLY: 2355 return task((FileCacheSyncReply*)request); 2356 case FILE_CACHE_READ_REQUEST: 2357 return task((FileCacheReadRequest*)request); 2358 case FILE_CACHE_READ_REPLY: 2359 return task((FileCacheReadReply*)request); 2360 case FILE_CACHE_WRITE_REQUEST: 2361 return task((FileCacheWriteRequest*)request); 2362 case FILE_CACHE_WRITE_REPLY: 2363 return task((FileCacheWriteReply*)request); 2364 // I/O 2365 case DO_ITERATIVE_FD_IO_REQUEST: 2366 return task((DoIterativeFDIORequest*)request); 2367 case DO_ITERATIVE_FD_IO_REPLY: 2368 return task((DoIterativeFDIOReply*)request); 2369 case READ_FROM_IO_REQUEST_REQUEST: 2370 return task((ReadFromIORequestRequest*)request); 2371 case READ_FROM_IO_REQUEST_REPLY: 2372 return task((ReadFromIORequestReply*)request); 2373 case WRITE_TO_IO_REQUEST_REQUEST: 2374 return task((WriteToIORequestRequest*)request); 2375 case WRITE_TO_IO_REQUEST_REPLY: 2376 return task((WriteToIORequestReply*)request); 2377 case NOTIFY_IO_REQUEST_REQUEST: 2378 return task((NotifyIORequestRequest*)request); 2379 case NOTIFY_IO_REQUEST_REPLY: 2380 return task((NotifyIORequestReply*)request); 2381 // node monitoring 2382 case ADD_NODE_LISTENER_REQUEST: 2383 return task((AddNodeListenerRequest*)request); 2384 case ADD_NODE_LISTENER_REPLY: 2385 return task((AddNodeListenerReply*)request); 2386 case REMOVE_NODE_LISTENER_REQUEST: 2387 return task((RemoveNodeListenerRequest*)request); 2388 case REMOVE_NODE_LISTENER_REPLY: 2389 return task((RemoveNodeListenerReply*)request); 2390 // general reply 2391 case RECEIPT_ACK_REPLY: 2392 return task((ReceiptAckReply*)request); 2393 default: 2394 return B_BAD_DATA; 2395 } 2396} 2397 2398status_t get_request_address_infos(Request* request, AddressInfo* infos, 2399 int32* count); 2400status_t check_request(Request* request); 2401status_t relocate_request(Request* request, int32 requestBufferSize, 2402 area_id* areas, int32* count); 2403 2404} // namespace UserlandFSUtil 2405 2406using UserlandFSUtil::ReplyRequest; 2407using UserlandFSUtil::KernelRequest; 2408using UserlandFSUtil::VolumeRequest; 2409using UserlandFSUtil::NodeRequest; 2410using UserlandFSUtil::FileRequest; 2411using UserlandFSUtil::DirRequest; 2412using UserlandFSUtil::AttrDirRequest; 2413using UserlandFSUtil::IndexDirRequest; 2414 2415// kernel -> userland requests 2416// administrative 2417using UserlandFSUtil::UFSDisconnectRequest; 2418using UserlandFSUtil::FSConnectRequest; 2419using UserlandFSUtil::FSConnectReply; 2420// FS 2421using UserlandFSUtil::MountVolumeRequest; 2422using UserlandFSUtil::MountVolumeReply; 2423using UserlandFSUtil::UnmountVolumeRequest; 2424using UserlandFSUtil::UnmountVolumeReply; 2425//using UserlandFSUtil::InitializeVolumeRequest; 2426//using UserlandFSUtil::InitializeVolumeReply; 2427using UserlandFSUtil::SyncVolumeRequest; 2428using UserlandFSUtil::SyncVolumeReply; 2429using UserlandFSUtil::ReadFSInfoRequest; 2430using UserlandFSUtil::ReadFSInfoReply; 2431using UserlandFSUtil::WriteFSInfoRequest; 2432using UserlandFSUtil::WriteFSInfoReply; 2433// vnodes 2434using UserlandFSUtil::LookupRequest; 2435using UserlandFSUtil::LookupReply; 2436using UserlandFSUtil::GetVNodeNameRequest; 2437using UserlandFSUtil::GetVNodeNameReply; 2438using UserlandFSUtil::ReadVNodeRequest; 2439using UserlandFSUtil::ReadVNodeReply; 2440using UserlandFSUtil::WriteVNodeRequest; 2441using UserlandFSUtil::WriteVNodeReply; 2442using UserlandFSUtil::FSRemoveVNodeRequest; 2443using UserlandFSUtil::FSRemoveVNodeReply; 2444// asynchronous I/O 2445using UserlandFSUtil::DoIORequest; 2446using UserlandFSUtil::DoIOReply; 2447using UserlandFSUtil::CancelIORequest; 2448using UserlandFSUtil::CancelIOReply; 2449using UserlandFSUtil::IterativeIOGetVecsRequest; 2450using UserlandFSUtil::IterativeIOGetVecsReply; 2451using UserlandFSUtil::IterativeIOFinishedRequest; 2452using UserlandFSUtil::IterativeIOFinishedReply; 2453// nodes 2454using UserlandFSUtil::IOCtlRequest; 2455using UserlandFSUtil::IOCtlReply; 2456using UserlandFSUtil::SetFlagsRequest; 2457using UserlandFSUtil::SetFlagsReply; 2458using UserlandFSUtil::SelectRequest; 2459using UserlandFSUtil::SelectReply; 2460using UserlandFSUtil::DeselectRequest; 2461using UserlandFSUtil::DeselectReply; 2462using UserlandFSUtil::FSyncRequest; 2463using UserlandFSUtil::FSyncReply; 2464using UserlandFSUtil::ReadSymlinkRequest; 2465using UserlandFSUtil::ReadSymlinkReply; 2466using UserlandFSUtil::CreateSymlinkRequest; 2467using UserlandFSUtil::CreateSymlinkReply; 2468using UserlandFSUtil::LinkRequest; 2469using UserlandFSUtil::LinkReply; 2470using UserlandFSUtil::UnlinkRequest; 2471using UserlandFSUtil::UnlinkReply; 2472using UserlandFSUtil::RenameRequest; 2473using UserlandFSUtil::RenameReply; 2474using UserlandFSUtil::AccessRequest; 2475using UserlandFSUtil::AccessReply; 2476using UserlandFSUtil::ReadStatRequest; 2477using UserlandFSUtil::ReadStatReply; 2478using UserlandFSUtil::WriteStatRequest; 2479using UserlandFSUtil::WriteStatReply; 2480// files 2481using UserlandFSUtil::CreateRequest; 2482using UserlandFSUtil::CreateReply; 2483using UserlandFSUtil::OpenRequest; 2484using UserlandFSUtil::OpenReply; 2485using UserlandFSUtil::CloseRequest; 2486using UserlandFSUtil::CloseReply; 2487using UserlandFSUtil::FreeCookieRequest; 2488using UserlandFSUtil::FreeCookieReply; 2489using UserlandFSUtil::ReadRequest; 2490using UserlandFSUtil::ReadReply; 2491using UserlandFSUtil::WriteRequest; 2492using UserlandFSUtil::WriteReply; 2493// directories 2494using UserlandFSUtil::CreateDirRequest; 2495using UserlandFSUtil::CreateDirReply; 2496using UserlandFSUtil::RemoveDirRequest; 2497using UserlandFSUtil::RemoveDirReply; 2498using UserlandFSUtil::OpenDirRequest; 2499using UserlandFSUtil::OpenDirReply; 2500using UserlandFSUtil::CloseDirRequest; 2501using UserlandFSUtil::CloseDirReply; 2502using UserlandFSUtil::FreeDirCookieRequest; 2503using UserlandFSUtil::FreeDirCookieReply; 2504using UserlandFSUtil::ReadDirRequest; 2505using UserlandFSUtil::ReadDirReply; 2506using UserlandFSUtil::RewindDirRequest; 2507using UserlandFSUtil::RewindDirReply; 2508// attribute directories 2509using UserlandFSUtil::OpenAttrDirRequest; 2510using UserlandFSUtil::OpenAttrDirReply; 2511using UserlandFSUtil::CloseAttrDirRequest; 2512using UserlandFSUtil::CloseAttrDirReply; 2513using UserlandFSUtil::FreeAttrDirCookieRequest; 2514using UserlandFSUtil::FreeAttrDirCookieReply; 2515using UserlandFSUtil::ReadAttrDirRequest; 2516using UserlandFSUtil::ReadAttrDirReply; 2517using UserlandFSUtil::RewindAttrDirRequest; 2518using UserlandFSUtil::RewindAttrDirReply; 2519// attributes 2520using UserlandFSUtil::CreateAttrRequest; 2521using UserlandFSUtil::CreateAttrReply; 2522using UserlandFSUtil::OpenAttrRequest; 2523using UserlandFSUtil::OpenAttrReply; 2524using UserlandFSUtil::CloseAttrRequest; 2525using UserlandFSUtil::CloseAttrReply; 2526using UserlandFSUtil::FreeAttrCookieRequest; 2527using UserlandFSUtil::FreeAttrCookieReply; 2528using UserlandFSUtil::ReadAttrRequest; 2529using UserlandFSUtil::ReadAttrReply; 2530using UserlandFSUtil::WriteAttrRequest; 2531using UserlandFSUtil::WriteAttrReply; 2532using UserlandFSUtil::ReadAttrStatRequest; 2533using UserlandFSUtil::ReadAttrStatReply; 2534using UserlandFSUtil::WriteAttrStatRequest; 2535using UserlandFSUtil::WriteAttrStatReply; 2536using UserlandFSUtil::RenameAttrRequest; 2537using UserlandFSUtil::RenameAttrReply; 2538using UserlandFSUtil::RemoveAttrRequest; 2539using UserlandFSUtil::RemoveAttrReply; 2540// indices 2541using UserlandFSUtil::OpenIndexDirRequest; 2542using UserlandFSUtil::OpenIndexDirReply; 2543using UserlandFSUtil::CloseIndexDirRequest; 2544using UserlandFSUtil::CloseIndexDirReply; 2545using UserlandFSUtil::FreeIndexDirCookieRequest; 2546using UserlandFSUtil::FreeIndexDirCookieReply; 2547using UserlandFSUtil::ReadIndexDirRequest; 2548using UserlandFSUtil::ReadIndexDirReply; 2549using UserlandFSUtil::RewindIndexDirRequest; 2550using UserlandFSUtil::RewindIndexDirReply; 2551using UserlandFSUtil::CreateIndexRequest; 2552using UserlandFSUtil::CreateIndexReply; 2553using UserlandFSUtil::RemoveIndexRequest; 2554using UserlandFSUtil::RemoveIndexReply; 2555using UserlandFSUtil::ReadIndexStatRequest; 2556using UserlandFSUtil::ReadIndexStatReply; 2557// queries 2558using UserlandFSUtil::OpenQueryRequest; 2559using UserlandFSUtil::OpenQueryReply; 2560using UserlandFSUtil::CloseQueryRequest; 2561using UserlandFSUtil::CloseQueryReply; 2562using UserlandFSUtil::FreeQueryCookieRequest; 2563using UserlandFSUtil::FreeQueryCookieReply; 2564using UserlandFSUtil::ReadQueryRequest; 2565using UserlandFSUtil::ReadQueryReply; 2566using UserlandFSUtil::RewindQueryRequest; 2567using UserlandFSUtil::RewindQueryReply; 2568// node monitoring 2569using UserlandFSUtil::NodeMonitoringEventRequest; 2570using UserlandFSUtil::NodeMonitoringEventReply; 2571 2572// userland -> kernel requests 2573// notifications 2574using UserlandFSUtil::NotifyListenerRequest; 2575using UserlandFSUtil::NotifyListenerReply; 2576using UserlandFSUtil::NotifySelectEventRequest; 2577using UserlandFSUtil::NotifySelectEventReply; 2578using UserlandFSUtil::NotifyQueryRequest; 2579using UserlandFSUtil::NotifyQueryReply; 2580// vnodes 2581using UserlandFSUtil::GetVNodeRequest; 2582using UserlandFSUtil::GetVNodeReply; 2583using UserlandFSUtil::PutVNodeRequest; 2584using UserlandFSUtil::PutVNodeReply; 2585using UserlandFSUtil::AcquireVNodeRequest; 2586using UserlandFSUtil::AcquireVNodeReply; 2587using UserlandFSUtil::NewVNodeRequest; 2588using UserlandFSUtil::NewVNodeReply; 2589using UserlandFSUtil::PublishVNodeRequest; 2590using UserlandFSUtil::PublishVNodeReply; 2591using UserlandFSUtil::RemoveVNodeRequest; 2592using UserlandFSUtil::RemoveVNodeReply; 2593using UserlandFSUtil::UnremoveVNodeRequest; 2594using UserlandFSUtil::UnremoveVNodeReply; 2595using UserlandFSUtil::GetVNodeRemovedRequest; 2596using UserlandFSUtil::GetVNodeRemovedReply; 2597// file cache 2598using UserlandFSUtil::FileCacheCreateRequest; 2599using UserlandFSUtil::FileCacheCreateReply; 2600using UserlandFSUtil::FileCacheDeleteRequest; 2601using UserlandFSUtil::FileCacheDeleteReply; 2602using UserlandFSUtil::FileCacheSetEnabledRequest; 2603using UserlandFSUtil::FileCacheSetEnabledReply; 2604using UserlandFSUtil::FileCacheSetSizeRequest; 2605using UserlandFSUtil::FileCacheSetSizeReply; 2606using UserlandFSUtil::FileCacheSyncRequest; 2607using UserlandFSUtil::FileCacheSyncReply; 2608using UserlandFSUtil::FileCacheReadRequest; 2609using UserlandFSUtil::FileCacheReadReply; 2610using UserlandFSUtil::FileCacheWriteRequest; 2611using UserlandFSUtil::FileCacheWriteReply; 2612// I/O 2613using UserlandFSUtil::DoIterativeFDIORequest; 2614using UserlandFSUtil::DoIterativeFDIOReply; 2615using UserlandFSUtil::ReadFromIORequestRequest; 2616using UserlandFSUtil::ReadFromIORequestReply; 2617using UserlandFSUtil::WriteToIORequestRequest; 2618using UserlandFSUtil::WriteToIORequestReply; 2619using UserlandFSUtil::NotifyIORequestRequest; 2620using UserlandFSUtil::NotifyIORequestReply; 2621 // node monitoring 2622using UserlandFSUtil::AddNodeListenerRequest; 2623using UserlandFSUtil::AddNodeListenerReply; 2624using UserlandFSUtil::RemoveNodeListenerRequest; 2625using UserlandFSUtil::RemoveNodeListenerReply; 2626// general reply 2627using UserlandFSUtil::ReceiptAckReply; 2628 2629using UserlandFSUtil::do_for_request; 2630using UserlandFSUtil::get_request_address_infos; 2631using UserlandFSUtil::check_request; 2632using UserlandFSUtil::relocate_request; 2633 2634#endif // USERLAND_FS_REQUESTS_H 2635