File:  [NetBSD Developer Wiki] / wikisrc / users / haad / Attic / porting_zfs.mdwn
Revision 1.2: download - view: text, annotated - select for diffs
Fri Oct 23 23:47:20 2009 UTC (12 years, 1 month ago) by wiki
Branches: MAIN
CVS tags: HEAD
web commit by haad

    1: # 1. Status of NetBSD zfs port
    2:  
    3: NetBSD zfs port is work in progress and can easily panic your system.
    4: 
    5: **ZFS currently works ony on i386!!**
    6: 
    7: ---
    8: # 2. Using NetBSD ZFS port 
    9: 
   10: ## Instalation 
   11: 
   12: Use any -current build from i386 or amd64 architecture. All tools and modules should be built by default, now. There are 2 modules used for ZFS solaris.kmod and zfs.kmod. Solaris module provides solaris like interfaces to zfs on NetBSD. The second module is zfs and provides zfs file system functions.
   13: 
   14: ## Configuration
   15: 
   16: User need to
   17: 
   18:  modload solaris
   19:  modload zfs
   20: 
   21: After loading modules user can create zpool(zfs version of volume manager) and manage zfs file systems on it. 
   22: 
   23: zpool create {name} {type} {device} 
   24: 
   25: type:
   26:  * mirror
   27:  * raidz
   28:  * raidz2
   29:  * default is normal linear allocation
   30: 
   31: device is blod device on netbsd /dev/sd0a for example.
   32: 
   33: zpool create tank mirror /dev/sd0a /dev/sd1a  creates mirrored zpool between 2 disk partitions.
   34: 
   35: 
   36: ## Administration
   37: 
   38: ---
   39: # 3. Known Bugs
   40: 
   41: ## Show stoppers 
   42: 
   43: ### amd64
   44: * amd64 zio_root crash
   45: Investigation 
   46: vdev_label_read_config -> zio_root calls zio_wait on a zio_root zio_t. Later zio_execute tries to generate 			
   47: checksum on zio->zio_data which is NULL for a zio_root. Is this ressurrection of andys zio_null problem ? 
   48: because zio_root is basicaly zio_null.
   49: 		
   50:  Solution
   51:  What is difference between i386 and amd64 version why it is working on i386 and not on a amd64 that can be
   52:  solution.
   53: ### i386 
   54: 
   55: ### Both 
   56: * vnode reclaiming deadlocks 
   57:  
   58:  This can be fixed by deferring call to zfs_zinactive in zfs_reclaim to another system thread if lock is held.
   59:  But it causes deadlock and we need to investigate if it is caused by this change or by another problem.
   60: 			
   61:  Deadlock backtrace is this
   62: 			
   63:  VOP_WRITE->zfs_netbsd_write->zfs_write->dmu_tx_wait->txg_wait_open->cv_wait
   64:  txq_quisce_thread->txg_thread_wait->cv_wait
   65:  txg_sync_thread->spa_sync->dsl_pool_sync->zio_wait->cv_wait
   66: 			
   67:  FreeBSD approach should be investigated why they are doing this differently and why it works for them. They 
   68:  call zfs_zinactive from zfs_freebsd_inactive which is null op for NetBSD.
   69: 			
   70:  zfs umount panic is caused by using FreeBSD approach in zfs_reclaim.
   71: 
   72: 
   73: ## Functional bugs 
   74: * Snapshots
   75: * Permissions
   76: * Old code, we should update NetBSD zfs port to new code

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb