Annotation of wikisrc/users/haad/porting_zfs.mdwn, revision 1.9

1.1       wiki        1: # 1. Status of NetBSD zfs port
                      2:  
                      3: NetBSD zfs port is work in progress and can easily panic your system.
1.2       wiki        4: 
1.9     ! wiki        5: **ZFS currently works ony on i386 and amd64!!**
1.2       wiki        6: 
1.1       wiki        7: ---
                      8: # 2. Using NetBSD ZFS port 
                      9: 
1.2       wiki       10: ## Instalation 
1.1       wiki       11: 
1.2       wiki       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.
1.1       wiki       13: 
                     14: ## Configuration
                     15: 
1.2       wiki       16: User need to
                     17: 
1.5       wiki       18:     modload solaris
                     19:     modload zfs
1.2       wiki       20: 
                     21: After loading modules user can create zpool(zfs version of volume manager) and manage zfs file systems on it. 
                     22: 
1.5       wiki       23:     zpool create {zpool name} {type} {device} 
1.2       wiki       24: 
1.3       wiki       25: where type is:
                     26: 
                     27: * mirror
                     28: * raidz
                     29: * raidz2
                     30: * default is normal linear allocation
1.2       wiki       31: 
                     32: device is blod device on netbsd /dev/sd0a for example.
                     33: 
1.5       wiki       34:     zpool create tank mirror /dev/sd0a /dev/sd1a  creates mirrored zpool between 2 disk partitions.
1.2       wiki       35: 
1.3       wiki       36: With zpool created we can create zfs filesystems or zvols(zfs logical volume disks)
                     37: 
1.5       wiki       38:     zfs create -V {size} tank/{zvol name} creates zvol with {zvol name} from ZPOOL called tank
1.3       wiki       39: 
                     40: Logical disk is created in 
                     41: 
1.5       wiki       42:     /dev/zvol/rdsk/{zpool name}/{zvol name} 
1.4       wiki       43: 
1.5       wiki       44:     /dev/zvol/dsk/{zpool name}/{zvol name}
1.3       wiki       45: 
1.5       wiki       46:     zfs create tank/{zfs name} create zfs filesystem on a zpool called tank 
1.2       wiki       47: 
1.1       wiki       48: ## Administration
                     49: 
1.4       wiki       50: After creating ZVOLS and filesystem they are saved in a /etc/zfs/zpool.cache file and loaded after nextzfs module load.
                     51: 
1.1       wiki       52: ---
                     53: # 3. Known Bugs
                     54: 
                     55: ## Show stoppers 
                     56: 
                     57: ### amd64
1.8       wiki       58: 
1.1       wiki       59: ### i386 
                     60: 
                     61: ### Both 
                     62: * vnode reclaiming deadlocks 
                     63:  
                     64:  This can be fixed by deferring call to zfs_zinactive in zfs_reclaim to another system thread if lock is held.
                     65:  But it causes deadlock and we need to investigate if it is caused by this change or by another problem.
                     66:                        
                     67:  Deadlock backtrace is this
                     68:                        
                     69:  VOP_WRITE->zfs_netbsd_write->zfs_write->dmu_tx_wait->txg_wait_open->cv_wait
                     70:  txq_quisce_thread->txg_thread_wait->cv_wait
                     71:  txg_sync_thread->spa_sync->dsl_pool_sync->zio_wait->cv_wait
                     72:                        
                     73:  FreeBSD approach should be investigated why they are doing this differently and why it works for them. They 
                     74:  call zfs_zinactive from zfs_freebsd_inactive which is null op for NetBSD.
                     75:                        
                     76:  zfs umount panic is caused by using FreeBSD approach in zfs_reclaim.
                     77: 
1.4       wiki       78: * vnode fsync bug 
                     79:   
                     80:   I think that we are hitting this bug, too. I have some patches in the tree which fixes deadlod in vnode reclaim but after that I'm getting another deadlock in VOP_FSYNC.
1.1       wiki       81: 
                     82: ## Functional bugs 
                     83: * Snapshots
                     84: * Permissions
                     85: * Old code, we should update NetBSD zfs port to new code
1.7       wiki       86: * More tasks can be found at <http://nxr.netbsd.org/xref/src/external/cddl/osnet/TODO>
1.6       wiki       87: 
                     88: # External Documentation links
1.7       wiki       89: Nice zfs howto written for zfs + mac os x <http://code.google.com/p/maczfs/wiki/GettingStarted>

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