code: func subvolQgroupStatus(path string) error {
  	dir, err := openDir(path)
  	if err != nil {
  		return err
  	}
  	defer closeDir(dir)
  
  	var args C.struct_btrfs_ioctl_search_args
  	args.key.tree_id = C.BTRFS_QUOTA_TREE_OBJECTID
  	args.key.min_type = C.BTRFS_QGROUP_STATUS_KEY
  	args.key.max_type = C.BTRFS_QGROUP_STATUS_KEY
  	args.key.max_objectid = C.__u64(math.MaxUint64)
  	args.key.max_offset = C.__u64(math.MaxUint64)
  	args.key.max_transid = C.__u64(math.MaxUint64)
  	args.key.nr_items = 4096
  
  	_, _, errno := unix.Syscall(unix.SYS_IOCTL, getDirFd(dir), C.BTRFS_IOC_TREE_SEARCH,
  		uintptr(unsafe.Pointer(&args)))
  	if errno != 0 {
  		return fmt.Errorf("Failed to search qgroup for %s: %v", path, errno.Error())
  	}
  	sh := (*C.struct_btrfs_ioctl_search_header)(unsafe.Pointer(&args.buf))
  	if sh._type != C.BTRFS_QGROUP_STATUS_KEY {
  		return fmt.Errorf("Invalid qgroup search header type for %s: %v", path, sh._type)
  	}
  	return nil
  }
docs: // subvolQgroupStatus performs a BTRFS_IOC_TREE_SEARCH on the root path
  // with search key of BTRFS_QGROUP_STATUS_KEY.
  // In case qgroup is enabled, the retuned key type will match BTRFS_QGROUP_STATUS_KEY.
  // For more details please see https://github.com/kdave/btrfs-progs/blob/v4.9/qgroup.c#L1035