* Haiku kernel interface emulation: Retrieve the capabilities for each vnode.
We do some caching using a hash table indexed by the operations vector. * Pass the vnode capabilities to the kernel module. * In the kernel tailor the operation vectors for volumes and vnodes passed to the VFS according to the respective capabilities. This way those vectors look pretty much like those from the client FS. This saves unnecessary calls when hooks are not implemented and should also fix compatibility problems in cases where not implementing a hook and returning an error don't mean the same to the VFS. * Inlined some of the kernel module Volume class getters. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29572 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -509,9 +509,10 @@ class ReadVNodeReply : public ReplyRequest {
|
||||
public:
|
||||
ReadVNodeReply() : ReplyRequest(READ_VNODE_REPLY) {}
|
||||
|
||||
void* node;
|
||||
int type;
|
||||
uint32 flags;
|
||||
void* node;
|
||||
int type;
|
||||
uint32 flags;
|
||||
FSVNodeCapabilities capabilities;
|
||||
};
|
||||
|
||||
// WriteVNodeRequest
|
||||
@@ -1604,9 +1605,10 @@ class NewVNodeRequest : public Request {
|
||||
public:
|
||||
NewVNodeRequest() : Request(NEW_VNODE_REQUEST) {}
|
||||
|
||||
dev_t nsid;
|
||||
ino_t vnid;
|
||||
void* node;
|
||||
dev_t nsid;
|
||||
ino_t vnid;
|
||||
void* node;
|
||||
FSVNodeCapabilities capabilities;
|
||||
};
|
||||
|
||||
// NewVNodeReply
|
||||
@@ -1620,11 +1622,12 @@ class PublishVNodeRequest : public Request {
|
||||
public:
|
||||
PublishVNodeRequest() : Request(PUBLISH_VNODE_REQUEST) {}
|
||||
|
||||
dev_t nsid;
|
||||
ino_t vnid;
|
||||
void* node;
|
||||
int type;
|
||||
uint32 flags;
|
||||
dev_t nsid;
|
||||
ino_t vnid;
|
||||
void* node;
|
||||
int type;
|
||||
uint32 flags;
|
||||
FSVNodeCapabilities capabilities;
|
||||
};
|
||||
|
||||
// PublishVNodeReply
|
||||
|
||||
Reference in New Issue
Block a user