2022-04-08 02:07:08 +03:00
|
|
|
libzpool_la_CFLAGS = $(AM_CFLAGS) $(KERNEL_CFLAGS) $(LIBRARY_CFLAGS)
|
|
|
|
libzpool_la_CFLAGS += $(ZLIB_CFLAGS)
|
2010-08-26 22:22:58 +04:00
|
|
|
|
2022-04-08 02:07:08 +03:00
|
|
|
libzpool_la_CPPFLAGS = $(AM_CPPFLAGS) $(FORCEDEBUG_CPPFLAGS)
|
|
|
|
libzpool_la_CPPFLAGS += -I$(srcdir)/include/os/@ac_system_l@/zfs
|
|
|
|
libzpool_la_CPPFLAGS += -DLIB_ZPOOL_BUILD
|
2014-06-10 01:55:31 +04:00
|
|
|
|
2022-04-08 02:07:08 +03:00
|
|
|
lib_LTLIBRARIES += libzpool.la
|
|
|
|
CPPCHECKTARGETS += libzpool.la
|
2018-02-08 19:16:23 +03:00
|
|
|
|
2020-06-25 21:14:54 +03:00
|
|
|
dist_libzpool_la_SOURCES = \
|
2022-04-08 02:07:08 +03:00
|
|
|
%D%/kernel.c \
|
|
|
|
%D%/taskq.c \
|
|
|
|
%D%/util.c
|
2020-06-25 21:14:54 +03:00
|
|
|
|
2014-06-10 01:55:31 +04:00
|
|
|
nodist_libzpool_la_SOURCES = \
|
2022-04-08 02:07:08 +03:00
|
|
|
module/lua/lapi.c \
|
|
|
|
module/lua/lauxlib.c \
|
|
|
|
module/lua/lbaselib.c \
|
|
|
|
module/lua/lcode.c \
|
|
|
|
module/lua/lcompat.c \
|
|
|
|
module/lua/lcorolib.c \
|
|
|
|
module/lua/lctype.c \
|
|
|
|
module/lua/ldebug.c \
|
|
|
|
module/lua/ldo.c \
|
|
|
|
module/lua/lfunc.c \
|
|
|
|
module/lua/lgc.c \
|
|
|
|
module/lua/llex.c \
|
|
|
|
module/lua/lmem.c \
|
|
|
|
module/lua/lobject.c \
|
|
|
|
module/lua/lopcodes.c \
|
|
|
|
module/lua/lparser.c \
|
|
|
|
module/lua/lstate.c \
|
|
|
|
module/lua/lstring.c \
|
|
|
|
module/lua/lstrlib.c \
|
|
|
|
module/lua/ltable.c \
|
|
|
|
module/lua/ltablib.c \
|
|
|
|
module/lua/ltm.c \
|
|
|
|
module/lua/lvm.c \
|
|
|
|
module/lua/lzio.c \
|
|
|
|
\
|
|
|
|
module/os/linux/zfs/abd_os.c \
|
|
|
|
module/os/linux/zfs/arc_os.c \
|
|
|
|
module/os/linux/zfs/trace.c \
|
|
|
|
module/os/linux/zfs/vdev_file.c \
|
|
|
|
module/os/linux/zfs/zfs_debug.c \
|
|
|
|
module/os/linux/zfs/zfs_racct.c \
|
|
|
|
module/os/linux/zfs/zfs_znode.c \
|
|
|
|
module/os/linux/zfs/zio_crypt.c \
|
|
|
|
\
|
|
|
|
module/zcommon/cityhash.c \
|
|
|
|
module/zcommon/zfeature_common.c \
|
|
|
|
module/zcommon/zfs_comutil.c \
|
|
|
|
module/zcommon/zfs_deleg.c \
|
|
|
|
module/zcommon/zfs_fletcher.c \
|
|
|
|
module/zcommon/zfs_fletcher_aarch64_neon.c \
|
|
|
|
module/zcommon/zfs_fletcher_avx512.c \
|
|
|
|
module/zcommon/zfs_fletcher_intel.c \
|
|
|
|
module/zcommon/zfs_fletcher_sse.c \
|
|
|
|
module/zcommon/zfs_fletcher_superscalar.c \
|
|
|
|
module/zcommon/zfs_fletcher_superscalar4.c \
|
|
|
|
module/zcommon/zfs_namecheck.c \
|
|
|
|
module/zcommon/zfs_prop.c \
|
|
|
|
module/zcommon/zpool_prop.c \
|
|
|
|
module/zcommon/zprop_common.c \
|
|
|
|
\
|
|
|
|
module/zfs/abd.c \
|
|
|
|
module/zfs/aggsum.c \
|
|
|
|
module/zfs/arc.c \
|
|
|
|
module/zfs/blkptr.c \
|
|
|
|
module/zfs/bplist.c \
|
|
|
|
module/zfs/bpobj.c \
|
|
|
|
module/zfs/bptree.c \
|
|
|
|
module/zfs/bqueue.c \
|
|
|
|
module/zfs/btree.c \
|
|
|
|
module/zfs/dbuf.c \
|
|
|
|
module/zfs/dbuf_stats.c \
|
|
|
|
module/zfs/ddt.c \
|
|
|
|
module/zfs/ddt_zap.c \
|
|
|
|
module/zfs/dmu.c \
|
|
|
|
module/zfs/dmu_diff.c \
|
|
|
|
module/zfs/dmu_object.c \
|
|
|
|
module/zfs/dmu_objset.c \
|
|
|
|
module/zfs/dmu_recv.c \
|
|
|
|
module/zfs/dmu_redact.c \
|
|
|
|
module/zfs/dmu_send.c \
|
|
|
|
module/zfs/dmu_traverse.c \
|
|
|
|
module/zfs/dmu_tx.c \
|
|
|
|
module/zfs/dmu_zfetch.c \
|
|
|
|
module/zfs/dnode.c \
|
|
|
|
module/zfs/dnode_sync.c \
|
|
|
|
module/zfs/dsl_bookmark.c \
|
|
|
|
module/zfs/dsl_crypt.c \
|
|
|
|
module/zfs/dsl_dataset.c \
|
|
|
|
module/zfs/dsl_deadlist.c \
|
|
|
|
module/zfs/dsl_deleg.c \
|
|
|
|
module/zfs/dsl_destroy.c \
|
|
|
|
module/zfs/dsl_dir.c \
|
|
|
|
module/zfs/dsl_pool.c \
|
|
|
|
module/zfs/dsl_prop.c \
|
|
|
|
module/zfs/dsl_scan.c \
|
|
|
|
module/zfs/dsl_synctask.c \
|
|
|
|
module/zfs/dsl_userhold.c \
|
|
|
|
module/zfs/edonr_zfs.c \
|
|
|
|
module/zfs/fm.c \
|
|
|
|
module/zfs/gzip.c \
|
|
|
|
module/zfs/hkdf.c \
|
|
|
|
module/zfs/lz4.c \
|
|
|
|
module/zfs/lz4_zfs.c \
|
|
|
|
module/zfs/lzjb.c \
|
|
|
|
module/zfs/metaslab.c \
|
|
|
|
module/zfs/mmp.c \
|
|
|
|
module/zfs/multilist.c \
|
|
|
|
module/zfs/objlist.c \
|
|
|
|
module/zfs/pathname.c \
|
|
|
|
module/zfs/range_tree.c \
|
|
|
|
module/zfs/refcount.c \
|
|
|
|
module/zfs/rrwlock.c \
|
|
|
|
module/zfs/sa.c \
|
|
|
|
module/zfs/sha256.c \
|
|
|
|
module/zfs/skein_zfs.c \
|
|
|
|
module/zfs/spa.c \
|
|
|
|
module/zfs/spa_boot.c \
|
|
|
|
module/zfs/spa_checkpoint.c \
|
|
|
|
module/zfs/spa_config.c \
|
|
|
|
module/zfs/spa_errlog.c \
|
|
|
|
module/zfs/spa_history.c \
|
|
|
|
module/zfs/spa_log_spacemap.c \
|
|
|
|
module/zfs/spa_misc.c \
|
|
|
|
module/zfs/spa_stats.c \
|
|
|
|
module/zfs/space_map.c \
|
|
|
|
module/zfs/space_reftree.c \
|
|
|
|
module/zfs/txg.c \
|
|
|
|
module/zfs/uberblock.c \
|
|
|
|
module/zfs/unique.c \
|
|
|
|
module/zfs/vdev.c \
|
|
|
|
module/zfs/vdev_cache.c \
|
|
|
|
module/zfs/vdev_draid.c \
|
|
|
|
module/zfs/vdev_draid_rand.c \
|
|
|
|
module/zfs/vdev_indirect.c \
|
|
|
|
module/zfs/vdev_indirect_births.c \
|
|
|
|
module/zfs/vdev_indirect_mapping.c \
|
|
|
|
module/zfs/vdev_initialize.c \
|
|
|
|
module/zfs/vdev_label.c \
|
|
|
|
module/zfs/vdev_mirror.c \
|
|
|
|
module/zfs/vdev_missing.c \
|
|
|
|
module/zfs/vdev_queue.c \
|
|
|
|
module/zfs/vdev_raidz.c \
|
|
|
|
module/zfs/vdev_raidz_math.c \
|
|
|
|
module/zfs/vdev_raidz_math_aarch64_neon.c \
|
|
|
|
module/zfs/vdev_raidz_math_aarch64_neonx2.c \
|
|
|
|
module/zfs/vdev_raidz_math_avx2.c \
|
|
|
|
module/zfs/vdev_raidz_math_avx512bw.c \
|
|
|
|
module/zfs/vdev_raidz_math_avx512f.c \
|
|
|
|
module/zfs/vdev_raidz_math_powerpc_altivec.c \
|
|
|
|
module/zfs/vdev_raidz_math_scalar.c \
|
|
|
|
module/zfs/vdev_raidz_math_sse2.c \
|
|
|
|
module/zfs/vdev_raidz_math_ssse3.c \
|
|
|
|
module/zfs/vdev_rebuild.c \
|
|
|
|
module/zfs/vdev_removal.c \
|
|
|
|
module/zfs/vdev_root.c \
|
|
|
|
module/zfs/vdev_trim.c \
|
|
|
|
module/zfs/zap.c \
|
|
|
|
module/zfs/zap_leaf.c \
|
|
|
|
module/zfs/zap_micro.c \
|
|
|
|
module/zfs/zcp.c \
|
|
|
|
module/zfs/zcp_get.c \
|
|
|
|
module/zfs/zcp_global.c \
|
|
|
|
module/zfs/zcp_iter.c \
|
|
|
|
module/zfs/zcp_set.c \
|
|
|
|
module/zfs/zcp_synctask.c \
|
|
|
|
module/zfs/zfeature.c \
|
|
|
|
module/zfs/zfs_byteswap.c \
|
|
|
|
module/zfs/zfs_fm.c \
|
|
|
|
module/zfs/zfs_fuid.c \
|
|
|
|
module/zfs/zfs_ratelimit.c \
|
|
|
|
module/zfs/zfs_rlock.c \
|
|
|
|
module/zfs/zfs_sa.c \
|
|
|
|
module/zfs/zil.c \
|
|
|
|
module/zfs/zio.c \
|
|
|
|
module/zfs/zio_checksum.c \
|
|
|
|
module/zfs/zio_compress.c \
|
|
|
|
module/zfs/zio_inject.c \
|
|
|
|
module/zfs/zle.c \
|
|
|
|
module/zfs/zrlock.c \
|
|
|
|
module/zfs/zthr.c
|
2010-08-26 22:22:58 +04:00
|
|
|
|
2012-01-01 03:30:52 +04:00
|
|
|
libzpool_la_LIBADD = \
|
2022-04-08 02:07:08 +03:00
|
|
|
libicp.la \
|
|
|
|
libunicode.la \
|
|
|
|
libnvpair.la \
|
|
|
|
libzstd.la \
|
|
|
|
libzutil.la
|
Clean up lib dependencies
libzutil is currently statically linked into libzfs, libzfs_core and
libzpool. Avoid the unnecessary duplication by removing it from libzfs
and libzpool, and adding libzfs_core to libzpool.
Remove a few unnecessary dependencies:
- libuutil from libzfs_core
- libtirpc from libspl
- keep only libcrypto in libzfs, as we don't use any functions from
libssl
- librt is only used for clock_gettime, however on modern systems that's
in libc rather than librt. Add a configure check to see if we actually
need librt
- libdl from raidz_test
Add a few missing dependencies:
- zlib to libefi and libzfs
- libuuid to zpool, and libuuid and libudev to zed
- libnvpair uses assertions, so add assert.c to provide aok and
libspl_assertf
Sort the LDADD for programs so that libraries that satisfy dependencies
come at the end rather than the beginning of the linker command line.
Revamp the configure tests for libaries to use FIND_SYSTEM_LIBRARY
instead. This can take advantage of pkg-config, and it also avoids
polluting LIBS.
List all the required dependencies in the pkgconfig files, and move the
one for libzfs_core into the latter's directory. Install pkgconfig files
in $(libdir)/pkgconfig on linux and $(prefix)/libdata/pkgconfig on
FreeBSD, instead of /usr/share/pkgconfig, as the more correct location
for library .pc files.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Closes #10538
2020-06-30 20:10:41 +03:00
|
|
|
|
Distributed Spare (dRAID) Feature
This patch adds a new top-level vdev type called dRAID, which stands
for Distributed parity RAID. This pool configuration allows all dRAID
vdevs to participate when rebuilding to a distributed hot spare device.
This can substantially reduce the total time required to restore full
parity to pool with a failed device.
A dRAID pool can be created using the new top-level `draid` type.
Like `raidz`, the desired redundancy is specified after the type:
`draid[1,2,3]`. No additional information is required to create the
pool and reasonable default values will be chosen based on the number
of child vdevs in the dRAID vdev.
zpool create <pool> draid[1,2,3] <vdevs...>
Unlike raidz, additional optional dRAID configuration values can be
provided as part of the draid type as colon separated values. This
allows administrators to fully specify a layout for either performance
or capacity reasons. The supported options include:
zpool create <pool> \
draid[<parity>][:<data>d][:<children>c][:<spares>s] \
<vdevs...>
- draid[parity] - Parity level (default 1)
- draid[:<data>d] - Data devices per group (default 8)
- draid[:<children>c] - Expected number of child vdevs
- draid[:<spares>s] - Distributed hot spares (default 0)
Abbreviated example `zpool status` output for a 68 disk dRAID pool
with two distributed spares using special allocation classes.
```
pool: tank
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
slag7 ONLINE 0 0 0
draid2:8d:68c:2s-0 ONLINE 0 0 0
L0 ONLINE 0 0 0
L1 ONLINE 0 0 0
...
U25 ONLINE 0 0 0
U26 ONLINE 0 0 0
spare-53 ONLINE 0 0 0
U27 ONLINE 0 0 0
draid2-0-0 ONLINE 0 0 0
U28 ONLINE 0 0 0
U29 ONLINE 0 0 0
...
U42 ONLINE 0 0 0
U43 ONLINE 0 0 0
special
mirror-1 ONLINE 0 0 0
L5 ONLINE 0 0 0
U5 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
L6 ONLINE 0 0 0
U6 ONLINE 0 0 0
spares
draid2-0-0 INUSE currently in use
draid2-0-1 AVAIL
```
When adding test coverage for the new dRAID vdev type the following
options were added to the ztest command. These options are leverages
by zloop.sh to test a wide range of dRAID configurations.
-K draid|raidz|random - kind of RAID to test
-D <value> - dRAID data drives per group
-S <value> - dRAID distributed hot spares
-R <value> - RAID parity (raidz or dRAID)
The zpool_create, zpool_import, redundancy, replacement and fault
test groups have all been updated provide test coverage for the
dRAID feature.
Co-authored-by: Isaac Huang <he.huang@intel.com>
Co-authored-by: Mark Maybee <mmaybee@cray.com>
Co-authored-by: Don Brady <don.brady@delphix.com>
Co-authored-by: Matthew Ahrens <mahrens@delphix.com>
Co-authored-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Mark Maybee <mmaybee@cray.com>
Reviewed-by: Matt Ahrens <matt@delphix.com>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #10102
2020-11-14 00:51:51 +03:00
|
|
|
libzpool_la_LIBADD += $(LIBCLOCK_GETTIME) $(ZLIB_LIBS) -ldl -lm
|
Clean up lib dependencies
libzutil is currently statically linked into libzfs, libzfs_core and
libzpool. Avoid the unnecessary duplication by removing it from libzfs
and libzpool, and adding libzfs_core to libzpool.
Remove a few unnecessary dependencies:
- libuutil from libzfs_core
- libtirpc from libspl
- keep only libcrypto in libzfs, as we don't use any functions from
libssl
- librt is only used for clock_gettime, however on modern systems that's
in libc rather than librt. Add a configure check to see if we actually
need librt
- libdl from raidz_test
Add a few missing dependencies:
- zlib to libefi and libzfs
- libuuid to zpool, and libuuid and libudev to zed
- libnvpair uses assertions, so add assert.c to provide aok and
libspl_assertf
Sort the LDADD for programs so that libraries that satisfy dependencies
come at the end rather than the beginning of the linker command line.
Revamp the configure tests for libaries to use FIND_SYSTEM_LIBRARY
instead. This can take advantage of pkg-config, and it also avoids
polluting LIBS.
List all the required dependencies in the pkgconfig files, and move the
one for libzfs_core into the latter's directory. Install pkgconfig files
in $(libdir)/pkgconfig on linux and $(prefix)/libdata/pkgconfig on
FreeBSD, instead of /usr/share/pkgconfig, as the more correct location
for library .pc files.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Closes #10538
2020-06-30 20:10:41 +03:00
|
|
|
|
2020-07-14 22:17:44 +03:00
|
|
|
libzpool_la_LDFLAGS = -pthread
|
|
|
|
|
|
|
|
if !ASAN_ENABLED
|
|
|
|
libzpool_la_LDFLAGS += -Wl,-z,defs
|
|
|
|
endif
|
2012-01-01 03:30:52 +04:00
|
|
|
|
2020-04-14 21:36:28 +03:00
|
|
|
if BUILD_FREEBSD
|
Clean up lib dependencies
libzutil is currently statically linked into libzfs, libzfs_core and
libzpool. Avoid the unnecessary duplication by removing it from libzfs
and libzpool, and adding libzfs_core to libzpool.
Remove a few unnecessary dependencies:
- libuutil from libzfs_core
- libtirpc from libspl
- keep only libcrypto in libzfs, as we don't use any functions from
libssl
- librt is only used for clock_gettime, however on modern systems that's
in libc rather than librt. Add a configure check to see if we actually
need librt
- libdl from raidz_test
Add a few missing dependencies:
- zlib to libefi and libzfs
- libuuid to zpool, and libuuid and libudev to zed
- libnvpair uses assertions, so add assert.c to provide aok and
libspl_assertf
Sort the LDADD for programs so that libraries that satisfy dependencies
come at the end rather than the beginning of the linker command line.
Revamp the configure tests for libaries to use FIND_SYSTEM_LIBRARY
instead. This can take advantage of pkg-config, and it also avoids
polluting LIBS.
List all the required dependencies in the pkgconfig files, and move the
one for libzfs_core into the latter's directory. Install pkgconfig files
in $(libdir)/pkgconfig on linux and $(prefix)/libdata/pkgconfig on
FreeBSD, instead of /usr/share/pkgconfig, as the more correct location
for library .pc files.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
Closes #10538
2020-06-30 20:10:41 +03:00
|
|
|
libzpool_la_LIBADD += -lgeom
|
2020-04-14 21:36:28 +03:00
|
|
|
endif
|
2010-09-05 00:26:23 +04:00
|
|
|
|
2021-04-02 02:53:05 +03:00
|
|
|
libzpool_la_LDFLAGS += -version-info 5:0:0
|
2020-10-31 17:39:58 +03:00
|
|
|
|
2020-01-23 22:01:24 +03:00
|
|
|
if TARGET_CPU_POWERPC
|
2022-04-08 02:07:08 +03:00
|
|
|
module/zfs/libzpool_la-vdev_raidz_math_powerpc_altivec.$(OBJEXT) : CFLAGS += -maltivec
|
|
|
|
module/zfs/libzpool_la-vdev_raidz_math_powerpc_altivec.l$(OBJEXT): CFLAGS += -maltivec
|
2020-01-23 22:01:24 +03:00
|
|
|
endif
|