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

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: 
        !             5: **ZFS currently works ony on i386!!**
        !             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: 
        !            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: 
1.1       wiki       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