freebsd-dev/zfs_config.h.in
Etienne Dechamps 30930fba21 Add support for DISCARD to ZVOLs.
DISCARD (REQ_DISCARD, BLKDISCARD) is useful for thin provisioning.
It allows ZVOL clients to discard (unmap, trim) block ranges from
a ZVOL, thus optimizing disk space usage by allowing a ZVOL to
shrink instead of just grow.

We can't use zfs_space() or zfs_freesp() here, since these functions
only work on regular files, not volumes. Fortunately we can use the
low-level function dmu_free_long_range() which does exactly what we
want.

Currently the discard operation is not added to the log. That's not
a big deal since losing discard requests cannot result in data
corruption. It would however result in disk space usage higher than
it should be. Thus adding log support to zvol_discard() is probably
a good idea for a future improvement.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2012-02-09 16:19:38 -08:00

302 lines
6.9 KiB
C

/* zfs_config.h.in. Generated from configure.ac by autoheader. */
/* invalidate_bdev() wants 1 arg */
#undef HAVE_1ARG_INVALIDATE_BDEV
/* bio_end_io_t wants 2 args */
#undef HAVE_2ARGS_BIO_END_IO_T
/* security_inode_init_security wants 6 args */
#undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY
/* struct block_device_operations use bdevs */
#undef HAVE_BDEV_BLOCK_DEVICE_OPERATIONS
/* bdev_logical_block_size() is available */
#undef HAVE_BDEV_LOGICAL_BLOCK_SIZE
/* struct super_block has s_bdi */
#undef HAVE_BDI
/* bdi_setup_and_register() is available */
#undef HAVE_BDI_SETUP_AND_REGISTER
/* bio_empy_barrier() is defined */
#undef HAVE_BIO_EMPTY_BARRIER
/* REQ_FAILFAST_MASK is defined */
#undef HAVE_BIO_REQ_FAILFAST_MASK
/* BIO_RW_FAILFAST is defined */
#undef HAVE_BIO_RW_FAILFAST
/* BIO_RW_FAILFAST_* are defined */
#undef HAVE_BIO_RW_FAILFAST_DTD
/* BIO_RW_SYNC is defined */
#undef HAVE_BIO_RW_SYNC
/* BIO_RW_SYNCIO is defined */
#undef HAVE_BIO_RW_SYNCIO
/* blkdev_get_by_path() is available */
#undef HAVE_BLKDEV_GET_BY_PATH
/* blk_end_request() is available */
#undef HAVE_BLK_END_REQUEST
/* blk_end_request() is GPL-only */
#undef HAVE_BLK_END_REQUEST_GPL_ONLY
/* blk_fetch_request() is available */
#undef HAVE_BLK_FETCH_REQUEST
/* blk_queue_discard() is available */
#undef HAVE_BLK_QUEUE_DISCARD
/* blk_queue_flush() is available */
#undef HAVE_BLK_QUEUE_FLUSH
/* blk_queue_flush() is GPL-only */
#undef HAVE_BLK_QUEUE_FLUSH_GPL_ONLY
/* blk_queue_io_opt() is available */
#undef HAVE_BLK_QUEUE_IO_OPT
/* blk_queue_max_hw_sectors() is available */
#undef HAVE_BLK_QUEUE_MAX_HW_SECTORS
/* blk_queue_max_segments() is available */
#undef HAVE_BLK_QUEUE_MAX_SEGMENTS
/* blk_queue_nonrot() is available */
#undef HAVE_BLK_QUEUE_NONROT
/* blk_queue_physical_block_size() is available */
#undef HAVE_BLK_QUEUE_PHYSICAL_BLOCK_SIZE
/* blk_requeue_request() is available */
#undef HAVE_BLK_REQUEUE_REQUEST
/* blk_rq_bytes() is available */
#undef HAVE_BLK_RQ_BYTES
/* blk_rq_bytes() is GPL-only */
#undef HAVE_BLK_RQ_BYTES_GPL_ONLY
/* blk_rq_pos() is available */
#undef HAVE_BLK_RQ_POS
/* blk_rq_sectors() is available */
#undef HAVE_BLK_RQ_SECTORS
/* security_inode_init_security wants callback */
#undef HAVE_CALLBACK_SECURITY_INODE_INIT_SECURITY
/* check_disk_size_change() is available */
#undef HAVE_CHECK_DISK_SIZE_CHANGE
/* super_block uses const struct xattr_hander */
#undef HAVE_CONST_XATTR_HANDLER
/* xattr_handler->get() wants dentry */
#undef HAVE_DENTRY_XATTR_GET
/* xattr_handler->set() wants dentry */
#undef HAVE_DENTRY_XATTR_SET
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* d_obtain_alias() is available */
#undef HAVE_D_OBTAIN_ALIAS
/* sops->evict_inode() exists */
#undef HAVE_EVICT_INODE
/* fops->fallocate() exists */
#undef HAVE_FILE_FALLOCATE
/* kernel defines fmode_t */
#undef HAVE_FMODE_T
/* sops->free_cached_objects() exists */
#undef HAVE_FREE_CACHED_OBJECTS
/* fops->fsync() with range */
#undef HAVE_FSYNC_RANGE
/* fops->fsync() without dentry */
#undef HAVE_FSYNC_WITHOUT_DENTRY
/* fops->fsync() with dentry */
#undef HAVE_FSYNC_WITH_DENTRY
/* blk_disk_ro() is available */
#undef HAVE_GET_DISK_RO
/* Define to 1 if licensed under the GPL */
#undef HAVE_GPL_ONLY_SYMBOLS
/* fops->fallocate() exists */
#undef HAVE_INODE_FALLOCATE
/* insert_inode_locked() is available */
#undef HAVE_INSERT_INODE_LOCKED
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* result=stropts.h Define to 1 if ioctl() defined in <stropts.h> */
#undef HAVE_IOCTL_IN_STROPTS_H
/* Define to 1 if ioctl() defined in <sys/ioctl.h> */
#undef HAVE_IOCTL_IN_SYS_IOCTL_H
/* Define to 1 if ioctl() defined in <unistd.h> */
#undef HAVE_IOCTL_IN_UNISTD_H
/* kernel defines KOBJ_NAME_LEN */
#undef HAVE_KOBJ_NAME_LEN
/* Define if you have libblkid */
#undef HAVE_LIBBLKID
/* Define if you have selinux */
#undef HAVE_LIBSELINUX
/* Define if you have libuuid */
#undef HAVE_LIBUUID
/* Define to 1 if you have the `z' library (-lz). */
#undef HAVE_LIBZ
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* mount_nodev() is available */
#undef HAVE_MOUNT_NODEV
/* sops->nr_cached_objects() exists */
#undef HAVE_NR_CACHED_OBJECTS
/* open_bdev_exclusive() is available */
#undef HAVE_OPEN_BDEV_EXCLUSIVE
/* REQ_SYNC is defined */
#undef HAVE_REQ_SYNC
/* rq_for_each_segment() is available */
#undef HAVE_RQ_FOR_EACH_SEGMENT
/* rq_is_sync() is available */
#undef HAVE_RQ_IS_SYNC
/* set_nlink() is available */
#undef HAVE_SET_NLINK
/* sops->show_options() with dentry */
#undef HAVE_SHOW_OPTIONS_WITH_DENTRY
/* struct super_block has s_shrink */
#undef HAVE_SHRINK
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* truncate_setsize() is available */
#undef HAVE_TRUNCATE_SETSIZE
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define if you have zlib */
#undef HAVE_ZLIB
/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#undef LT_OBJDIR
/* Define to 1 if NPTL threading implementation includes guard area in stack
allocation */
#undef NPTL_GUARD_WITHIN_STACK
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Version number of package */
#undef VERSION
/* Define the project alias string. */
#undef ZFS_META_ALIAS
/* Define the project author. */
#undef ZFS_META_AUTHOR
/* Define the project release date. */
#undef ZFS_META_DATA
/* Define the project license. */
#undef ZFS_META_LICENSE
/* Define the libtool library 'age' version information. */
#undef ZFS_META_LT_AGE
/* Define the libtool library 'current' version information. */
#undef ZFS_META_LT_CURRENT
/* Define the libtool library 'revision' version information. */
#undef ZFS_META_LT_REVISION
/* Define the project name. */
#undef ZFS_META_NAME
/* Define the project release. */
#undef ZFS_META_RELEASE
/* Define the project version. */
#undef ZFS_META_VERSION
#undef PACKAGE
#undef PACKAGE_BUGREPORT
#undef PACKAGE_NAME
#undef PACKAGE_STRING
#undef PACKAGE_TARNAME
#undef PACKAGE_VERSION
#undef STDC_HEADERS
#undef VERSION