[haiku-commits] r42042 - haiku/trunk/src/add-ons/kernel/file_systems/ramfs

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 8 Jun 2011 04:25:43 +0200 (CEST)

Author: kallisti5
Date: 2011-06-08 04:25:42 +0200 (Wed, 08 Jun 2011)
New Revision: 42042
Changeset: https://dev.haiku-os.org/changeset/42042

Modified:
   haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.cpp
   haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.h
   haiku/trunk/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
Log:
tweak the last of the nodes; break apart old style file_system_module_info; add 
fVolume to Volume to replicate bfs style

Modified: haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.cpp        
2011-06-08 02:17:31 UTC (rev 42041)
+++ haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.cpp        
2011-06-08 02:25:42 UTC (rev 42042)
@@ -130,36 +130,40 @@
 */
 
 // constructor
-Volume::Volume()
-       : fID(0),
-         fNextNodeID(kRootParentID + 1),
-         fNodeTable(NULL),
-         fDirectoryEntryTable(NULL),
-         fNodeAttributeTable(NULL),
-         fIndexDirectory(NULL),
-         fRootDirectory(NULL),
-         fName(kDefaultVolumeName),
-         fLocker("volume"),
-         fIteratorLocker("iterators"),
-         fQueryLocker("queries"),
-         fNodeListeners(NULL),
-         fAnyNodeListeners(),
-         fEntryListeners(NULL),
-         fAnyEntryListeners(),
-         fBlockAllocator(NULL),
-         fBlockSize(kDefaultBlockSize),
-         fAllocatedBlocks(0),
-         fAccessTime(0),
-         fMounted(false)
+Volume::Volume(fs_volume* volume)
+       :
+       fVolume(volume),
+       fID(0),
+       fNextNodeID(kRootParentID + 1),
+       fNodeTable(NULL),
+       fDirectoryEntryTable(NULL),
+       fNodeAttributeTable(NULL),
+       fIndexDirectory(NULL),
+       fRootDirectory(NULL),
+       fName(kDefaultVolumeName),
+       fLocker("volume"),
+       fIteratorLocker("iterators"),
+       fQueryLocker("queries"),
+       fNodeListeners(NULL),
+       fAnyNodeListeners(),
+       fEntryListeners(NULL),
+       fAnyEntryListeners(),
+       fBlockAllocator(NULL),
+       fBlockSize(kDefaultBlockSize),
+       fAllocatedBlocks(0),
+       fAccessTime(0),
+       fMounted(false)
 {
 }
 
+
 // destructor
 Volume::~Volume()
 {
        Unmount();
 }
 
+
 // Mount
 status_t
 Volume::Mount(dev_t id)

Modified: haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.h
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.h  2011-06-08 
02:17:31 UTC (rev 42041)
+++ haiku/trunk/src/add-ons/kernel/file_systems/ramfs/Volume.h  2011-06-08 
02:25:42 UTC (rev 42042)
@@ -100,6 +100,7 @@
        status_t Unmount();
 
        dev_t GetID() const { return fID; }
+       fs_volume* FSVolume() const { return fVolume; }
 
        off_t GetBlockSize() const;
        off_t CountBlocks() const;
@@ -176,6 +177,9 @@
        bool IteratorLock();
        void IteratorUnlock();
 
+protected:
+       fs_volume*                              fVolume;
+
 private:
        typedef DoublyLinkedList<Query> QueryList;
 

Modified: haiku/trunk/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp
===================================================================
--- haiku/trunk/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp      
2011-06-08 02:17:31 UTC (rev 42041)
+++ haiku/trunk/src/add-ons/kernel/file_systems/ramfs/kernel_interface.cpp      
2011-06-08 02:25:42 UTC (rev 42042)
@@ -186,7 +186,7 @@
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir);
 
        FUNCTION(("dir: (%llu), entry: `%s'\n", (dir ? dir->GetID() : -1),
                entryName));
@@ -241,7 +241,7 @@
        if (VolumeReadLocker locker = volume) {
                error = volume->FindNode(vnid, &foundNode);
                if (error == B_OK)
-                       *node = foundNode;
+                       node->private_node = foundNode;
        } else
                SET_ERROR(error, B_ERROR);
        RETURN_ERROR(error);
@@ -270,7 +270,7 @@
 {
        FUNCTION(("node: %Ld\n", ((Node*)_node)->GetID()));
        Volume* volume = (Volume*)_volume->private_volume;
-       Node* node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        status_t error = B_OK;
        if (VolumeWriteLocker locker = volume) {
@@ -357,13 +357,13 @@
 
 // ramfs_read_symlink
 static status_t
-ramfs_read_symlink(fs_volume* _volume, fs_vnode _node, char *buffer,
+ramfs_read_symlink(fs_volume* _volume, fs_vnode* _node, char *buffer,
        size_t *bufferSize)
 {
        FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
+       Node* node = (Node*)_node->private_node;
 
-       Node *node = (Node*)_node;
        status_t error = B_OK;
        if (VolumeReadLocker locker = volume) {
                // read symlinks only
@@ -391,13 +391,13 @@
 
 // ramfs_create_symlink
 static status_t
-ramfs_create_symlink(fs_volume* _volume, fs_vnode _dir, const char *name,
+ramfs_create_symlink(fs_volume* _volume, fs_vnode* _dir, const char *name,
        const char *path, int mode)
 {
        FUNCTION(("name: `%s', path: `%s'\n", name, path));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
        status_t error = B_OK;
        // check name
        if (!name || *name == '\0') {
@@ -409,8 +409,8 @@
                NodeMTimeUpdater mTimeUpdater(dir);
                // directory deleted?
                bool removed;
-               if (get_vnode_removed(volume->GetID(), dir->GetID(), &removed) 
!= B_OK
-                       || removed) {
+               if (get_vnode_removed(volume->FSVolume(), dir->GetID(), 
&removed)
+                       != B_OK || removed) {
                        SET_ERROR(error, B_NOT_ALLOWED);
                }
                // check directory write permissions
@@ -449,13 +449,14 @@
 
 // ramfs_link
 static status_t
-ramfs_link(fs_volume* _volume, fs_vnode _dir, const char *name, fs_vnode _node)
+ramfs_link(fs_volume* _volume, fs_vnode* _dir, const char *name,
+       fs_vnode* _node)
 {
        FUNCTION(("name: `%s'\n", name));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
+       Node* node = (Node*)_node->private_node;
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
-       Node *node = (Node*)_node;
        status_t error = B_OK;
        // check directory
        if (!dir) {
@@ -464,8 +465,8 @@
                NodeMTimeUpdater mTimeUpdater(dir);
                // directory deleted?
                bool removed;
-               if (get_vnode_removed(volume->GetID(), dir->GetID(), &removed) 
!= B_OK
-                       || removed) {
+               if (get_vnode_removed(volume->FSVolume(), dir->GetID(), 
&removed)
+                       != B_OK || removed) {
                        SET_ERROR(error, B_NOT_ALLOWED);
                }
                // check directory write permissions
@@ -493,13 +494,13 @@
 
 // ramfs_unlink
 static status_t
-ramfs_unlink(fs_volume* _volume, fs_vnode _dir, const char *name)
+ramfs_unlink(fs_volume* _volume, fs_vnode* _dir, const char *name)
 {
        FUNCTION(("name: `%s'\n", name));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
+       status_t error = B_OK;
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
-       status_t error = B_OK;
        // check name
        if (!name || *name == '\0' || !strcmp(name, ".") || !strcmp(name, 
"..")) {
                SET_ERROR(error, B_BAD_VALUE);
@@ -538,13 +539,13 @@
 
 // ramfs_rename
 static status_t
-ramfs_rename(fs_volume* _volume, fs_vnode _oldDir, const char *oldName,
-       fs_vnode _newDir, const char *newName)
+ramfs_rename(fs_volume* _volume, fs_vnode* _oldDir, const char *oldName,
+       fs_vnode* _newDir, const char *newName)
 {
        Volume* volume = (Volume*)_volume->private_volume;
 
-       Directory *oldDir = dynamic_cast<Directory*>((Node*)_oldDir);
-       Directory *newDir = dynamic_cast<Directory*>((Node*)_newDir);
+       Directory* oldDir = 
dynamic_cast<Directory*>((Node*)_oldDir->private_node);
+       Directory* newDir = 
dynamic_cast<Directory*>((Node*)_newDir->private_node);
        status_t error = B_OK;
 
        if (VolumeWriteLocker locker = volume) {
@@ -555,9 +556,8 @@
 
                // target directory deleted?
                bool removed;
-               if (get_vnode_removed(volume->GetID(), newDir->GetID(), 
&removed)
-                               != B_OK
-                       || removed) {
+               if (get_vnode_removed(volume->FSVolume(), newDir->GetID(), 
&removed)
+                               != B_OK || removed) {
                        SET_ERROR(error, B_NOT_ALLOWED);
                }
 
@@ -656,11 +656,11 @@
 
 // ramfs_access
 static status_t
-ramfs_access(fs_volume* _volume, fs_vnode _node, int mode)
+ramfs_access(fs_volume* _volume, fs_vnode* _node, int mode)
 {
        FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        status_t error = B_OK;
        if (VolumeReadLocker locker = volume) {
@@ -673,11 +673,11 @@
 
 // ramfs_read_stat
 static status_t
-ramfs_read_stat(fs_volume* _volume, fs_vnode _node, struct stat *st)
+ramfs_read_stat(fs_volume* _volume, fs_vnode* _node, struct stat *st)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("node: %Ld\n", node->GetID()));
        status_t error = B_OK;
@@ -702,11 +702,11 @@
 
 // ramfs_write_stat
 static status_t
-ramfs_write_stat(fs_volume* _volume, fs_vnode _node, const struct stat *st,
+ramfs_write_stat(fs_volume* _volume, fs_vnode* _node, const struct stat *st,
        uint32 mask)
 {
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("mask: %lx\n", mask));
        status_t error = B_OK;
@@ -779,14 +779,14 @@
 
 // ramfs_create
 static status_t
-ramfs_create(fs_volume* _volume, fs_vnode _dir, const char *name, int openMode,
+ramfs_create(fs_volume* _volume, fs_vnode* _dir, const char *name, int 
openMode,
        int mode, void** _cookie, ino_t *vnid)
 {
 //     FUNCTION_START();
        FUNCTION(("name: `%s', open mode: %x, mode: %x\n", name, openMode, 
mode));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
        status_t error = B_OK;
        // check name
        if (!name || *name == '\0') {
@@ -798,8 +798,8 @@
                NodeMTimeUpdater mTimeUpdater(dir);
                // directory deleted?
                bool removed;
-               if (get_vnode_removed(volume->GetID(), dir->GetID(), &removed) 
!= B_OK
-                       || removed) {
+               if (get_vnode_removed(volume->FSVolume(), dir->GetID(), 
&removed)
+                       != B_OK || removed) {
                        SET_ERROR(error, B_NOT_ALLOWED);
                }
                // create the file cookie
@@ -864,11 +864,11 @@
 
 // ramfs_open
 static status_t
-ramfs_open(fs_volume* _volume, fs_vnode _node, int openMode, void** _cookie)
+ramfs_open(fs_volume* _volume, fs_vnode* _node, int openMode, void** _cookie)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("node: %Ld\n", node->GetID()));
        status_t error = B_OK;
@@ -907,11 +907,11 @@
 
 // ramfs_close
 static status_t
-ramfs_close(fs_volume* _volume, fs_vnode _node, void** /*cookie*/)
+ramfs_close(fs_volume* _volume, fs_vnode* _node, void** /*cookie*/)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("node: %Ld\n", node->GetID()));
        status_t error = B_OK;
@@ -938,12 +938,12 @@
 
 // ramfs_read
 static status_t
-ramfs_read(fs_volume* _volume, fs_vnode _node, void** _cookie, off_t pos,
+ramfs_read(fs_volume* _volume, fs_vnode* _node, void** _cookie, off_t pos,
        void *buffer, size_t *bufferSize)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
        FileCookie *cookie = (FileCookie*)_cookie;
 
 //     FUNCTION(("((%lu, %lu), %Ld, %p, %lu)\n", node->GetDirID(),
@@ -975,12 +975,12 @@
 
 // ramfs_write
 static status_t
-ramfs_write(fs_volume* _volume, fs_vnode _node, void** _cookie, off_t pos,
+ramfs_write(fs_volume* _volume, fs_vnode* _node, void** _cookie, off_t pos,
        const void *buffer, size_t *bufferSize)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FileCookie *cookie = (FileCookie*)_cookie;
 //     FUNCTION(("((%lu, %lu), %Ld, %p, %lu)\n", node->GetDirID(),
@@ -1107,12 +1107,12 @@
 
 // ramfs_create_dir
 static status_t
-ramfs_create_dir(fs_volume* _volume, fs_vnode _dir, const char *name, int mode)
+ramfs_create_dir(fs_volume* _volume, fs_vnode* _dir, const char *name, int 
mode)
 {
        FUNCTION(("name: `%s', mode: %x\n", name, mode));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
        status_t error = B_OK;
        // check name
        if (!name || *name == '\0') {
@@ -1124,8 +1124,8 @@
                NodeMTimeUpdater mTimeUpdater(dir);
                // directory deleted?
                bool removed;
-               if (get_vnode_removed(volume->GetID(), dir->GetID(), &removed) 
!= B_OK
-                       || removed) {
+               if (get_vnode_removed(volume->FSVolume(), dir->GetID(), 
&removed)
+                       != B_OK || removed) {
                        SET_ERROR(error, B_NOT_ALLOWED);
                }
                // check directory write permissions
@@ -1164,13 +1164,13 @@
 
 // ramfs_remove_dir
 static status_t
-ramfs_remove_dir(fs_volume* _volume, fs_vnode _dir, const char *name)
+ramfs_remove_dir(fs_volume* _volume, fs_vnode* _dir, const char *name)
 {
        FUNCTION(("name: `%s'\n", name));
        Volume* volume = (Volume*)_volume->private_volume;
+       Directory* dir = dynamic_cast<Directory*>((Node*)_dir->private_node);
+       status_t error = B_OK;
 
-       Directory *dir = dynamic_cast<Directory*>((Node*)_dir);
-       status_t error = B_OK;
        // check name
        if (!name || *name == '\0' || !strcmp(name, ".") || !strcmp(name, 
"..")) {
                SET_ERROR(error, B_BAD_VALUE);
@@ -1209,12 +1209,13 @@
 
 // ramfs_open_dir
 static status_t
-ramfs_open_dir(fs_volume /*fs*/, fs_vnode _node, void** _cookie)
+ramfs_open_dir(fs_volume /*fs*/, fs_vnode* _node, void** _cookie)
 {
 //     FUNCTION_START();
 //     Volume *volume = (Volume*)fs;
-       Node *node = (Node*)_node;
-FUNCTION(("dir: (%Lu)\n", node->GetID()));
+       Node* node = (Node*)_node->private_node;
+
+       FUNCTION(("dir: (%Lu)\n", node->GetID()));
        // get the Directory
        status_t error = (node->IsDirectory() ? B_OK : B_NOT_A_DIRECTORY);
        Directory *dir = NULL;
@@ -1248,7 +1249,7 @@
 ramfs_close_dir(fs_volume /*fs*/, fs_vnode DARG(_node), void** _cookie)
 {
        FUNCTION_START();
-FUNCTION(("dir: (%Lu)\n", ((Node*)_node)->GetID()));
+       FUNCTION(("dir: (%Lu)\n", ((Node*)_node)->GetID()));
        // No locking needed, since the Directory is guaranteed to live at this
        // time and for iterators there is a separate locking.
        DirectoryCookie *cookie = (DirectoryCookie*)_cookie;
@@ -1333,11 +1334,11 @@
 
 // ramfs_open_attr_dir
 static status_t
-ramfs_open_attr_dir(fs_volume* _volume, fs_vnode _node, void** _cookie)
+ramfs_open_attr_dir(fs_volume* _volume, fs_vnode* _node, void** _cookie)
 {
        FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        status_t error = B_OK;
        if (VolumeReadLocker locker = volume) {
@@ -1490,12 +1491,12 @@
 
 // ramfs_create_attr
 static status_t
-ramfs_create_attr(fs_volume* _volume, fs_vnode _node, const char *name,
+ramfs_create_attr(fs_volume* _volume, fs_vnode* _node, const char *name,
        uint32 type, int openMode, void** _cookie)
 {
 
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        if (VolumeWriteLocker locker = volume) {
                // try to find the attribute
@@ -1561,12 +1562,12 @@
 
 // ramfs_open_attr
 static status_t
-ramfs_open_attr(fs_volume* _volume, fs_vnode _node, const char *name,
+ramfs_open_attr(fs_volume* _volume, fs_vnode* _node, const char *name,
        int openMode, void** _cookie)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("node: %lld\n", node->GetID()));
        status_t error = B_OK;
@@ -1621,11 +1622,11 @@
 
 // ramfs_close_attr
 static status_t
-ramfs_close_attr(fs_volume* _volume, fs_vnode _node, void** _cookie)
+ramfs_close_attr(fs_volume* _volume, fs_vnode* _node, void** _cookie)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
 
        FUNCTION(("node: %lld\n", node->GetID()));
        status_t error = B_OK;
@@ -1653,12 +1654,13 @@
 
 // ramfs_read_attr
 static status_t
-ramfs_read_attr(fs_volume* _volume, fs_vnode _node, void** _cookie, off_t pos,
+ramfs_read_attr(fs_volume* _volume, fs_vnode* _node, void** _cookie, off_t pos,
        void *buffer, size_t *bufferSize)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
+
        AttributeCookie *cookie = (AttributeCookie*)_cookie;
 
        status_t error = B_OK;
@@ -1684,12 +1686,12 @@
 
 // ramfs_write_attr
 static status_t
-ramfs_write_attr(fs_volume* _volume, fs_vnode _node, void** _cookie,
+ramfs_write_attr(fs_volume* _volume, fs_vnode* _node, void** _cookie,
        off_t pos, const void *buffer, size_t *bufferSize)
 {
        //      FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
        AttributeCookie *cookie = (AttributeCookie*)_cookie;
 
        status_t error = B_OK;
@@ -1733,12 +1735,12 @@
 
 // ramfs_read_attr_stat
 static status_t
-ramfs_read_attr_stat(fs_volume* _volume, fs_vnode _node, void** _cookie,
+ramfs_read_attr_stat(fs_volume* _volume, fs_vnode* _node, void** _cookie,
        struct stat *st)
 {
 //     FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
        AttributeCookie *cookie = (AttributeCookie*)_cookie;
        status_t error = B_OK;
 
@@ -1776,12 +1778,11 @@
 
 // ramfs_remove_attr
 static status_t
-ramfs_remove_attr(fs_volume* _volume, fs_vnode _node, const char *name)
-
+ramfs_remove_attr(fs_volume* _volume, fs_vnode* _node, const char *name)
 {
        FUNCTION_START();
        Volume* volume = (Volume*)_volume->private_volume;
-       Node *node = (Node*)_node;
+       Node* node = (Node*)_node->private_node;
        status_t error = B_OK;
 
        if (VolumeWriteLocker locker = volume) {
@@ -2145,47 +2146,55 @@
 }
 
 
-static file_system_module_info sRamFSModuleInfo = {
-       {
-               "file_systems/ramfs" B_CURRENT_FS_API_VERSION,
-               0,
-               ramfs_std_ops,
-       },
-
-       "ramfs",                                // short_name
-       "RAM File System",              // pretty_name
-       B_DISK_SYSTEM_SUPPORTS_WRITING, // DDM flags
-
-       // scanning
-       NULL,   // identify_partition()
-       NULL,   // scan_partition()
-       NULL,   // free_identify_partition_cookie()
-       NULL,   // free_partition_content_cookie()
-
-       &ramfs_mount,
+fs_volume_ops gRamFSVolumeOps = {
        &ramfs_unmount,
        &ramfs_read_fs_info,
        &ramfs_write_fs_info,
        &ramfs_sync,
+       &ramfs_get_vnode,
 
+       /* index directory & index operations */
+       &ramfs_open_index_dir,
+       &ramfs_close_index_dir,
+       &ramfs_free_index_dir_cookie,
+       &ramfs_read_index_dir,
+       &ramfs_rewind_index_dir,
+
+       &ramfs_create_index,
+       &ramfs_remove_index,
+       &ramfs_read_index_stat,
+
+       /* query operations */
+       &ramfs_open_query,
+       &ramfs_close_query,
+       &ramfs_free_query_cookie,
+       &ramfs_read_query,
+       NULL    // rewind_query
+};
+
+
+fs_vnode_ops gRamFSVnodeOps = {
        /* vnode operations */
-       &ramfs_lookup,
-       NULL,   // &ramfs_get_vnode_name,
-       &ramfs_read_vnode,
-       &ramfs_write_vnode,
-       &ramfs_remove_vnode,
+       &ramfs_lookup,                  // lookup
+       NULL,                                   // get name
+       &ramfs_read_vnode,              // read
+       &ramfs_write_vnode,             // write
+       &ramfs_remove_vnode,    // remove
 
        /* VM file access */
-       NULL,   // &ramfs_can_page,
-       NULL,   // &ramfs_read_pages,
-       NULL,   // &ramfs_write_pages,
+       NULL,                                   // can_page
+       NULL,                                   // read pages
+       NULL,                                   // write pages
 
-       NULL,   // &ramfs_get_file_map,
+       NULL,                                   // io?
+       NULL,                                   // cancel io
 
+       NULL,                                   // get file map
+
        &ramfs_ioctl,
        &ramfs_set_flags,
-       NULL,   // &ramfs_select,
-       NULL,   // &ramfs_deselect,
+       NULL,   // &ramfs_select,
+       NULL,   // &ramfs_deselect,
        &ramfs_fsync,
 
        &ramfs_read_symlink,
@@ -2198,7 +2207,7 @@
        &ramfs_access,
        &ramfs_read_stat,
        &ramfs_write_stat,
-       NULL,   // &ramfs_preallocate,
+       NULL,   // &ramfs_preallocate,
 
        /* file operations */
        &ramfs_create,
@@ -2233,27 +2242,51 @@
        &ramfs_write_attr,
 
        &ramfs_read_attr_stat,
-       NULL,   // &ramfs_write_attr_stat,
+       NULL,   // &ramfs_write_attr_stat,
        &ramfs_rename_attr,
        &ramfs_remove_attr,
+       NULL    // create_special_node
+};
 
-       /* index directory & index operations */
-       &ramfs_open_index_dir,
-       &ramfs_close_index_dir,
-       &ramfs_free_index_dir_cookie,
-       &ramfs_read_index_dir,
-       &ramfs_rewind_index_dir,
+static file_system_module_info sRamFSModuleInfo = {
+       {
+               "file_systems/ramfs" B_CURRENT_FS_API_VERSION,
+               0,
+               ramfs_std_ops,
+       },
 
-       &ramfs_create_index,
-       &ramfs_remove_index,
-       &ramfs_read_index_stat,
+       "ramfs",                                // short_name
+       "RAM File System",              // pretty_name
+       0                                               // DDM flags
+       | B_DISK_SYSTEM_SUPPORTS_WRITING,
 
-       /* query operations */
-       &ramfs_open_query,
-       &ramfs_close_query,
-       &ramfs_free_query_cookie,
-       &ramfs_read_query,
-       NULL,   // &ramfs_rewind_query,
+       // scanning
+       NULL,   // identify_partition()
+       NULL,   // scan_partition()
+       NULL,   // free_identify_partition_cookie()
+       NULL,   // free_partition_content_cookie()
+
+       &ramfs_mount,
+
+       NULL,   // TODO : &ramfs_get_supported_operations
+
+       NULL,   // validate_resize
+       NULL,   // validate_move
+       NULL,   // validate_set_content_name
+       NULL,   // validate_set_content_parameters
+       NULL,   // validate_initialize,
+
+       /* shadow partition modification */
+       NULL,   // shadow_changed
+
+       /* writing */
+       NULL,   // defragment
+       NULL,   // repair
+       NULL,   // resize
+       NULL,   // move
+       NULL,   // set_content_name
+       NULL,   // set_content_parameters
+       NULL    // bfs_initialize
 };
 
 module_info *modules[] = {


Other related posts: