30930fba21
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>
302 lines
6.9 KiB
C
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
|