Development notes

From btrfs Wiki
(Difference between revisions)
Jump to: navigation, search
(Other requirements)
(User space utilities and development library dependencies)
Line 63: Line 63:
 
* fio
 
* fio
 
* dmsetup
 
* dmsetup
* xfsprogs
+
* xfsprogs >= 4.3.1
 +
** <code>xfs_io -c reflink</code> is required.
 
* btrfsprogs
 
* btrfsprogs
 
* openssl
 
* openssl
Line 72: Line 73:
 
----
 
----
 
Note: This list may be incomplete.
 
Note: This list may be incomplete.
 
  
 
== Storage environment ==
 
== Storage environment ==

Revision as of 21:00, 22 June 2016

page under construction

Collection of various notes about development practices, how-to's or checklists.

Contents

Adding a new ioctl, extending an existing one

  • add code to strace so the ioctl calls are parsed into a human readable form. Most of the ioctls are already implemented and can be used a reference.

Kernel config options

Testing

Compile-time config options for kernel that can help debugging, testing. They usually take a hit on performance or resources (memory) so they should be selected wisely. The options in bold should be safe to use by default for debugging builds.

Please refer to the option documentation for further details.

  • devices for testing
    • CONFIG_BLK_DEV_LOOP - enable loop device
    • for fstests: DM_FLAKEY, CONFIG_FAIL_MAKE_REQUEST
    • CONFIG_SCSI_DEBUG - fake scsi block device
  • memory
    • CONFIG_SLUB_DEBUG - boot with slub_debug
    • CONFIG_DEBUG_PAGEALLOC + CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT (on newer kernels)
    • CONFIG_PAGE_POISONING
    • CONFIG_HAVE_DEBUG_KMEMLEAK
    • CONFIG_FAILSLAB
  • btrfs
    • CONFIG_BTRFS_DEBUG, CONFIG_BTRFS_ASSERT, CONFIG_BTRFS_FS_RUN_SANITY_TESTS
    • CONFIG_BTRFS_FS_CHECK_INTEGRITY
  • locking
    • CONFIG_DEBUG_SPINLOCK, CONFIG_DEBUG_MUTEXES
    • CONFIG_DEBUG_LOCK_ALLOC
    • CONFIG_PROVE_LOCKING, CONFIG_LOCKDEP
    • CONFIG_LOCK_STAT
    • CONFIG_PROVE_RCU
  • sanity checks
    • CONFIG_DEBUG_STACK_USAGE, CONFIG_HAVE_DEBUG_STACKOVERFLOW, CONFIG_DEBUG_STACKOVERFLOW
    • CONFIG_STACKTRACE
    • kasan
  • verbose reporting
    • CONFIG_DEBUG_BUGVERBOSE
  • tracing
    • CONFIG_TRACING etc

xfstests

xfstests has very few "hard" requirements and will succeed without running many of the tests. In order to ensure full test coverage, your test environment should provide the following.

Kernel config options for complete test coverage

  • CONFIG_FAULT_INJECTION=y
  • CONFIG_FAULT_INJECTION_DEBUG_FS=y
  • CONFIG_FAIL_MAKE_REQUEST=y
  • CONFIG_DM_FLAKEY=m or y

Kernel config options for better bug reports

See the list in the section above for more options.

User space utilities and development library dependencies

  • fio
  • dmsetup
  • xfsprogs >= 4.3.1
    • xfs_io -c reflink is required.
  • btrfsprogs
  • openssl
  • libacl
  • libattr
  • libaio
  • libuuid

Note: This list may be incomplete.

Storage environment

  • At least 4 identically sized partitions/disks/virtual disks, specified using $SCRATCH_DEV_POOL

Other requirements

  • An fsgqa user and group must exist.
Personal tools