From mboxrd@z Thu Jan 1 00:00:00 1970 From: Perfect Stranger Subject: help in VFS Date: Fri, 29 Apr 2005 19:47:12 +0300 Message-ID: <42726510.7040602@scs-net.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Jason J. Herne" Return-path: Received: from outmail.scs-net.org ([213.178.225.6]:16904 "EHLO outmail.scs-net.org") by vger.kernel.org with ESMTP id S262855AbVD2Rnz (ORCPT ); Fri, 29 Apr 2005 13:43:55 -0400 To: Linux FS developers Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Hi all: I'm working on a parallel file system project (works on a cluster of linux boxes). I've written the low level details related to parallel access and data scattering and gathering and so .. and now i have to implement the VFS layer to integret my fs into the linux kernel I've read about VFS and read some about BFS and ramfs but there is still some unclearness I know i miss understanding some points .. so i'll explain what is going in my mind and i hope you'll correct me :). My fs consist of three main parts: Manager side: which holds the directory structures and data distribution information IO nodes: many nodes where the data are scattered Client : where the VFS must be done to allow the client to access the filesystem transperantly i figured out that the data distribution information on the Manager must be mapped to the inode object in the VFS FILE and DENTRY objects must be created dynamicly on client side .. but i couldn't figure out what must be mapped to form the super block object ?!! i've read that i don't have to implement the whole operations for the object .. i can put NULL for operation i don't want to implement and the VFS default method is called for unimplemented methods .. so what are the main methods i need to implement so that the basic operation are avaliable such as: cp, mv, rm, mkdir, rmdir, ls, open, read, write, .. the underlying functionality of those function are already done .. but i don't know what are the things i have to implement from the VFS to carry out those operations.. another thing .. while i can set the method i don't want to implement to NULL .. do i have to initialize all the data members of the VFS objects strucures "superblock, file, dentry, inode" .. or i can just ignore the datamember i don't want to set ?? and won't this deed leeds to mess the VFS internal job .. i mean if i decided not to use data member "X" from the inode object for example ..what about if one of the default VFS operation where using it .. so how can i know what to set and what to ignore another point .. what is the difference between: get_sb_bdev get_sb_single get_sb_nodev i think that the first is used for device based file systems and the last is used for non device based file system .. so what about the second .. and in my case .. is my file system is device based or non device based .. i don't need a partition on client side cause all the data is being written on the whole cluster (client couldn't be a an I/O node) .. but i need a way to to my file system so that all the request to my file system are handled by my cluster file system not locally .. i know that mount do this .. but if my file system needs no partition or device to use it locally on client side what should i mount ?? and in this case which get_sb call should i use what are the differences between : kill_block_super kill_anon_super kill_litter_super .. i'm sorry for writting a news paper instead of a certain questions but i've been thinking for a long time without a way to correct my thoughts so that was the result :) sorry again and thanks in advance MHD