Development notes

From btrfs Wiki
(Difference between revisions)
Jump to: navigation, search
(move release schedule section to FAQ)
(Adding a new ioctl, extending an existing one)
Line 5: Line 5:
 
== Adding a new ioctl, extending an existing one ==
 
== Adding a new ioctl, extending an existing one ==
  
* add code to ''strace'' so the ioctl calls are parsed into a human readable form, (reference: Jeff's patchset)
+
* 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.
 +
[https://github.com/strace/strace/blob/master/btrfs.c Btrfs Decoder in Strace GitHub repository]
  
 
= Kernel config options =
 
= Kernel config options =

Revision as of 03:19, 22 June 2016

page under construction

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

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.

Btrfs Decoder in Strace GitHub repository

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
Personal tools