Project Home
Project Home
Trackers
Trackers
Tasks
Tasks
Build & Test
Build & Test
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Reports
Reports
Project Information
Project Info
wiki3363: Home page (Version 4)

Source Tree: #

qfuse 
   |---setenv.sh 
   |---lib
         |---fuse 
   |---utils 
         |---n 
             |---ntfs-3g 

How to build libfuse and other fs daemon?#

  1. Enter qfuse and run ". ./setenv.sh"
  2. cd lib/fuse and run "make install" or "CPULIST=x86 make install" if you only want to build libfuse for x86 target.
    This will install libfuse to qfuse/install/cpudir/lib and fuse headers to qfuse/install/cpudir/include.
  3. cd utils/n/ntfs-3g and run "make" or "make install". This will install ntfs-3g and libntfs to qfuse/install/cpudir too.

How to run filesystem daemon?#

  1. copy libfuse to /usr/local/lib
  2. copy filesystem daemon's own library to /usr/local/lib, for example: ntfs-3g needs libntfs-3g.
  3. copy filesystem daemon executable file to /usr/local/bin
  4. run the fs daemon with arguments. For example: ntfs-3g -o debug /dev/hd1t7 /ntfs

How to port other filesystem to QNX?#

  1. Get filesystem source code
  2. Write a run.sh to try on QNX host. If configure complains something like you have to rerun automake or autoconf, then you have to install these on QNX or you can try on Linux host with QNX development tools installed.
  3. If previous step succeeded then you can take a look at ext2fuse or ntfs-3g to see what you need to modify. Most likely you have to modify getopt because QNX doesn't support "--" long option yet.
  4. If the filesystem registers FUSE lowlevel API then you have to modify its *_read function to use qfuse's buffer. There is example in libfuse or ext2fuse's op_read function. Because ntfs-3g registers highlevel API it doesn't care, necessary modification is in libfuse's default lowlevel API.
  5. Try to port it to QNX' recursive compiling environment with multi-platform support.

Benchmark#

$ uname -a
QNX localhost 6.3.2 2006/03/16-14:19:50EST x86pc x86
#ext2fuse /home/ext2_256M.fs /ext2
#ntfs-3g /home/ntfs_256M.fs /ntfs
#mount -t qnx4 /home/qnx4_256M.fs /qnx4

/* default 8k record testing*/
# rw -t 128M -k /ext2/rw.tmp
Sequential File Write/Read Benchmark
OS:      QNX 6.3.2 x86pc
Filesys: disk, fsys
Config:  128MiB file, 8KiB record, fd, malloc
Create:      10 msec
Write:     7783 msec,  475 usec/write(),  89% CPU, 16.83 MiB/sec
Read:      9538 msec,  582 usec/read(),   72% CPU, 13.74 MiB/sec
# rw -t 128M -k /ntfs/rw.tmp
Sequential File Write/Read Benchmark
OS:      QNX 6.3.2 x86pc
Filesys: disk, fsys
Config:  128MiB file, 8KiB record, fd, malloc
Create:       4 msec
Write:     8774 msec,  535 usec/write(), 100% CPU, 14.93 MiB/sec
Read:      7164 msec,  437 usec/read(),   61% CPU, 18.29 MiB/sec
# rw -t 128M -k /qnx4/rw.tmp
Sequential File Write/Read Benchmark
OS:      QNX 6.3.2 x86pc
Filesys: ST340014A, UDMA5, qnx4, 1% full
Config:  128MiB file, 8KiB record, fd, fsync, malloc
Create:      11 msec
Write:     5624 msec,  343 usec/write(),  43% CPU, 23.30 MiB/sec
Read:      3812 msec,  232 usec/read(),   58% CPU, 34.38 MiB/sec
I am disappointed with ext2fuse's performance as ntfs-3g is using FUSE's high level API, every read/write will do inode(resmgr)->pathname(fuse)->inode(ntfs).

FAQ:#

  1. Can I compile them on Linux or Windows HOST with QNX development toools installed?
    Answer: You can run ". ./run.sh" to make it on Linux or Windows host but it didn't support multiple platforms yet. And you'd better not to mix QNX' makefile and GNU's makefile together. If want to switch between GNU makefile.gnu and QNX makefile.qnx, you can run "make -f Makefile.gnu distclean" to clean it with GNU makefile.

Resources:

  1. FUSE project
  2. ntfs-3g project



Active Tab Versions Inactive Tab - left sideAssociations Inactive Tab - left sideAttachments Inactive Tab - left sideBack LinksInactive Tab - right side  
    Version From To Version Comment Created By
    Version 9 Yao Zhao(deleted)  -  08/30/2010
    Version 8 Yao Zhao(deleted)  -  08/03/2010
    Version 7 Yao Zhao(deleted)  -  07/28/2010
    Version 6 Yao Zhao(deleted)  -  07/28/2010
    Version 5 Yao Zhao(deleted)  -  05/26/2009
    Version 4 Yao Zhao(deleted)  -  04/29/2009
    Version 3 Yao Zhao(deleted)  -  04/24/2009
    Version 2 Yao Zhao(deleted)  -  04/24/2009
    Version 1 Yao Zhao(deleted)  -  04/20/2009