Make zvol_remove_link() print a more useful error message
[zfs.git] / ChangeLog
index 8a74328..e89461c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,465 @@
+2010-08-13 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.5.0
+
+       * : The ChangeLog is being retired.  Please use the git commit
+       logs for a full records of changes: 'git log --no-merges'
+
+2010-05-21 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.9 - Use 'git log --no-merges' for full change log.
+
+        * : Build system improvements:
+       - Added support for the 'make -s' silent build option.
+       - Allow zfs_config.h to be included by dependent packages.
+       - Minor spec file updates.
+       - Minor build system message updates.
+
+       * : Topic branch cleanup.  Several old branches were removed and
+       numerous hunks which were accidentaly commited to incorrect topic
+       branches in the past were relocated to the correct topic branch.
+
+       * *.c, *.h, *.sh, AUTHORS, COPYING, COPYRIGHT, DISCLAIMER, README:
+       Added standard header to source files which includes the copyright,
+       license, and author information.  Additionally, updated the listed
+       top level files to the latest versions.
+
+       * cmd/zpool/zpool_vdev.c: Check all partitions with check_file()
+       even when no libblkid is found.  This oversight would result in
+       ZFS not detecting existing filesystems on partitions.
+
+       * module/zfs/fm.c, module/zfs/zfs_fm, libzfs/libzfs_pool.c:
+       Added zevents which are similar to Solaris FMA support.  The
+       existing FMA and sysevent call points in ZFS were unified in
+       to a single event type and used to create a user space visible
+       event notification system under Linux.  The new 'zpool events'
+       command can be used to show all recent ZFS events.
+
+       * module/zfs/spa.c, module/zfs/zil.c: Suppress large memory
+       allocation warnings for two particular kmem_alloc()'s.  For
+       now we can live with them as is but long term a way should be
+       found to perform small allocations or use the vmem based slab.
+
+       * module/zfs/zvol.c: Recreate volume and snapshot /dev links during
+       module load.  Links in /dev for volumes/snapshots were only being
+       created at volume/snapshot creation time.  Those links are now also
+       created dynamically at module load time based on the spa config.
+
+       * module/zfs/zvol.c, module/zfs/include/sys/blkdev.h: The handler
+       zvol_request() should use the unlocked version of blk_end_request()
+       to avoid a deadlock in the ZVOL.
+
+2010-03-11 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.8 - Use 'git log --no-merges' for full change log.
+
+       * : Build system improvements:
+       - Remove Module.markers and Module.symver{s} in clean target.
+       - Improved kernel source detection when none specified.
+       - Fix RPM definitions for the unknown distro/installation.
+       - Check for spl in ../spl if not found in install path.
+       - Include all headers regardless of depth in packages.
+       - Allow recursive configure/make.
+
+       * lib/libzpool/kernel.c: Fixed several zdb bugs when opening a pool
+       - zdb wasn't getting the correct device size when the vdev is a
+         block device.  In Solaris, fstat64() returns the device size but
+         in Linux an ioctl() is needed.
+       - make sure that we don't try to open a block device in write mode
+         from userspace.  This shouldn't happen, because zdb opens devices
+         in read-only mode, and ztest only uses files.
+
+       * lib/libspl/include/umem.h: Add umem_alloc_aligned() and honor
+       cache_align field for umem cache.  Under linux we open block devices
+       with O_DIRECT which means we must provide aligned memory buffers.
+
+       * lib/libzpool/kernel.c: Fix some incorrect error handling.  In
+       vn_open(), if fstat64() returned an error, the real errno was being
+       obscured by calling close().
+
+       * scripts/*: Fix scripts to work when invoked from other directories.
+
+       * module/zfs/arc.c: Fix struct ht_lock padding in arc.c.
+
+       * lib/libefi/include/sys/uuid.h: Fix duplicate uuid_t typedef.
+
+       * module/zfs/txg.c: Use CPU percentages for number of commit cb
+       threads.  This doesn't change number of threads in the kernel, but it
+       reduces number of threads in ztest (important due to 32-bit address
+       limitations).
+
+       * cmd/ztest/ztest.c: Clean up emulation of kernel threads in
+       userspace.  Updated to use pthread thread specific data rather than
+       keeping a global list.  This also fixes at least one easily
+       reproducible crash in ztest
+
+       * META, config/kernel.m4: Add configure check for kernel build
+       options which are incompatible with the license.  If your building
+       against a kernel deemed incompatible configure will fail and
+       suggest how you should rebuild your kernel.
+
+       * config/kernel-fmode-t.m4: Linux 2.6.28 compat, add a check for the
+       fmode_t type.  This typedef first appears in 2.6.28 kernels as part
+       of some block device operation reworking.
+
+       * module/zfs/dmu_send.c: No inline to keep dmu_recv_stream() stack
+       frame less than 1024 bytes.  Recent builds against 2.6.31 flagged
+       dmu_recv_stream() as stack heavy.  Further analysis of this function
+       should be performed to further reduce its stack usage.
+
+       * scripts/common.sh: Split the udev rule from a specific configuration
+       by providing a generic 60-zpool.rules file which uses a small helper
+       util 'zpool_id' to parse a configuration file by default located in
+       /etc/zfs/zdev.conf.  The helper script maps a by-path udev name to a
+       more friendly name of <channel><rank> for large configurations.
+
+       Additionally, when running zpool-create.sh in-tree it will no longer
+       use udev because we would have to copy certain helper scripts in to
+       the installed system.  To avoid this the config file in simply
+       parsed and symlinks are created in your working tree.  The script
+       will use udev if it as run as part of an installed zfs-test package.
+
+       * module/zfs/zvol.c: Use check_disk_change() instead of
+       revalidate_disk().  For 2.6.27 kernels are earlier revalidate_disk()
+       was not available.  However, check_disk_change() has been available
+       for far longer and will properly inform the kernel of the volume
+       change for both older and newer kernels.
+
+       * module/zfs/dmu.c: Fixed incorrect ASSERT3S() added by ZVOL.
+
+       * module/zfs/vdev_raidz.c, module/zfs/zvol.c: Minor fixes for 32-bit.
+
+       * scripts/zfs-update.sh, man/man8/*: Added man pages based on the
+       latest documentation and modified zfs-update.sh script to update them.
+
+       * .gitignore: Updated .gitignore rules to exclude build products.
+
+2009-11-24 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.7 - Use 'git log --no-merges' for full change log.
+
+       * module/zcommon/include/sys/fs/zfs.h, module/zfs/include/sys/blkdev.h,
+         module/zfs/include/sys/dmu.h, module/zfs/dmu.c,
+         module/zfs/include/sys/zvol.h, module/zfs/zvol.c,
+         module/zfs/zfs_ioctl.c:
+       Added the ZVOL block device, with the addition of the ZVOL real ZFS
+       based block devices are available and can be compared head to head
+       with Linux's MD and LVM block drivers.  The Linux ZVOL has not yet
+       had any performance work done but from a user perspective it should
+       be functionally complete and behave like any other Linux block device.
+       The ZVOL has so far been tested using zconfig.sh on the following
+       x86_64 based platforms: FC11, CHAOS4, RHEL5, RHEL6, and SLES11.
+       However, more testing is required to ensure everything is working
+       as designed.
+
+       * scripts/udev-rules/99-zpool.rules.promise,
+         scripts/zpool-config/promise-raid0-1x16.sh,
+         scripts/zpool-config/promise-raid10-8x2.sh,
+         scripts/zpool-config/promise-raidz-2x8.sh,
+         scripts/zpool-config/promise-raidz2-2x8.sh:
+       Additional test configurations for a small 16 drive JBOD.
+
+       * module/zfs/arc.c: Linux 2.6.31 compat, mutexes can now exceed 64
+       bytes depending on the the kernel build options.  To account for
+       this increase the pad size to 256 bytes.
+
+       * module/zfs/vdev_disk.c: Linux 2.6.31 compat, to get the hard
+       sector size use bdev_logical_block_size() this function replaces
+       bdev_hardsect_size().
+
+       * module/zfs/zfs_rlock.c: Prevent gcc uninit compiler warning in
+       zfs_range_unlock_reader().
+
+       * Makefile.am: Ensure *.order and *.markers build products are
+       removed by distclean rule.
+
+2009-11-02 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.6 - Use 'git log --no-merges' for full change log.
+
+       * Rebased to ZFS b121 from OpenSolaris.
+
+       * module/zfs/vdev_disk.c: Finally a feature complete implementation:
+       - Handle dynamic bio merge_bdev limitations when constructing the
+       bio set associated with a dio.  This previously prevented us from
+       layering cleanly on the md and dm virtual devices.
+       - Removed hard coded 512 byte sector size.
+       - Correctly determine the device size when using a partition.
+       - Hold and extra dio reference when submitting bio's using
+       bio_submit() to prevent a completion race.
+
+       * lib/libefi/*: Added fully function libefi library from Solaris.
+       This allows us to properly create and access GPT style partition
+       tables which are used when a whole device is added to a zpool.
+
+       * cmd/zpool/zpool_vdev.c: Fully integrated zpool with Linux package
+       libblkid.  This allows zpool to identify existing devices of
+       various types to prevent devices from accidentally being used.  When
+       given a whole device with a GPT partition table all partitions will
+       be checked for existing filesystems.  At the moment MBR style
+       partition tables cannot be check and the force option must be used.
+
+       * cmd/zpool/zpool_vdev.c: Solaris devid support has been removed in
+       favor of Linux's udev.  This means that a zpool device will always be
+       opened using the path provided at configuration time.  This may
+       initially seem limiting but it has certain advantages:
+       - When creating a zpool where the physical location of the device
+       is NOT import simply create the pool using the /dev/disk/by-id paths.
+       This will ensure that regardless of physical location the device
+       will be properly located.
+       - When creating a zpool where the physical location of the device
+       is important use the /dev/disk/by-path paths.  This will ensure that
+       devices are never accidentally detected and used in an incorrect
+       location which would compromise the redundancy of the system.
+       - Ever better you can create use your own udev rules file to setup
+       any mapping and naming convention you desire.  One example of a
+       custom rule is to map physical device locations using grid with
+       numbers are letter for coordinates.  Each letter might represent
+       a specific bus/channel and each number a specific device.  For large
+       configurations this provides an easy way to identify devices.
+
+       * module/zpios/zpios.c: Update to use kobject_set_name() for
+       increased portability.
+
+       * modules/*/*: Update module init/exit access points to use
+       spl_module_{init,exit}() macro API.  This ensures the cwd is
+       immediately set to '/' and may be leveraged latter for any
+       additional module setup/cleanup which is required.
+
+       * cmd/ztest/ztest.c: Check ftrucate() return code to prevent
+       warnings when --fortify-source options is used in rpm builds.
+
+       * config/Rules.am: Set DEBUG/NDEBUG globally when building user
+       space components.
+
+       * scripts/zconfig.sh: Initial hook for running additional sanity
+       tests are part of 'make check'.  Currently, there are only two
+       tests which do some basic configuration checking but they should
+       be extended as much as possible to prevent regressions.  Tests
+       should also all be written so they run entirely in-tree.
+
+       * scripts/zpios-sanity.sh: Initial hook for validating real IO
+       using all block devices and all raid configurations.  Supported
+       device types include scsi, ide, md, dm, ram, loop, and file. 
+       Supported raid types include raid0, raid10, raidz, and raidz2.
+
+       * scripts/zpool-config/*: Update dragon and x4550 configs to use
+       custom udev rules file with <A-Z><1-N> naming convention.  Add
+       configs for md, dm, and ram block devices to verify functionality.
+
+       * zfs-test.spec.in: Added zfs-test package which extends the existing
+       in-tree test infrastructure such that it can be run as part of an
+       installed package.  This simplifies the testing of tagged releases.
+
+       * zfs-modules.spec.in: Various spec file tweaks for the supported
+       distros: RHEL5, RHEL6, SLES10, SLES11, Chaos4, Fedora 11.
+
+2009-08-04 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.5 - Use 'git log --no-merges' for full change log.
+
+       * FC11 and SLES11 support: This includes all compatibility changes
+       to support 2.6.29 based kernels and the required build system
+       improvements.
+       * lib/libspl/asm-generic/atomic.c: Generic user space atomic support.
+       * module/zpios/zpios.c: Register a basic compat ioctl handler for
+       32-bit user vs 64-bit kernel compatibility.  This is the default
+       build environment for all 64-bit SLES systems.  Additionally
+       replace the use of 'struct timespec' which uses longs internally
+       and is therefore different sizes on 32-bit vs 64-bit objects with
+       'struct zpios_timespec_t'.a
+       * config/kernel.m4: Check arch/default path when detecting kernel
+       objects under SLES.  We still preferentially use arch/arch if
+       available but if that fails it is acceptable to use default.
+       * config/kernel.m4: Remove LINUXINCLUDE from autoconf wrapper.
+       This breaks the 2.6.28+ kernels build system, all kernel build systems
+       at least post 2.6.16 will set this properly so we should not.
+       * lib/libspl/include/assert.h: Add ASSERTV macro to simplify removing
+       variables (the V in ASSERTV) which are only used in ASSERT().
+       Also revert all previously modified ASSERT()s to their original
+       definitions and use the ASSERTV macro to handle unused variables.
+       * module/zpios/zpios.c: Use spl device interfaces for portability.
+       * scripts/common.sh: The losetup -f option is unavailable for
+       SLES10 use the unused_loop_device() common function.  Additionally
+       LOSETUP is now used to portably reference the losetup binary.
+       * module/zfs/vdev_disk.c: Unused destroy_dirty_buffers arg removed.
+       * module/zfs/vdev_disk.c: BIO_RW_SYNC renamed to BIO_RW_SYNCIO.
+       * module/zfs/vdev_disk.c: open/close_bdev_excl() renamed to
+       open/close_bdev_exclusive().
+       * module/zfs/vdev_disk.c: Empty write barriers are supported as of
+       linux 2.6.24 and are now used to implement DKIOCFLUSHWRITECACHE.
+       * module/zfs/vdev_disk.c: The bi_end_io API changes make partial
+       IO's impossible handle this case cleanly.
+       * module/zfs/vdev_disk.c: BIO_RW_FAILFAST replaced with
+       BIO_RW_FAILFAST_{DEV|_TRANSPORT|_DRIVER}, use the legacy
+       BIO_RW_FAILFAST flag if it exists for now.
+       * module/zfs/dmu_objset.c, module/zfs/spa_history.c: Excessively
+       large stack frames (>2048) were detected in dmu_objset_snapshot()
+       and spa_history_log() and were reduced by allocating from the heap.
+
+       * Rebased to ZFS b117 from OpenSolaris:
+       * module/zfs/dmu.c: Update zerocopy patch to be consistent with
+       new flags arg passed to dmu_read().
+       * module/zpios/zpios.c: Update zpios to be aware of the new flags
+       argument available in dmu_read().  Additionally add a zpios command
+       line flag to set the DMU_READ_NO_PREFETCH flag for a test.
+       * module/zfs/include/sys/zfs_context.h: Wrap new sysevent includes
+       until sysevent or something like it is implemented.
+       * module/zfs/zfs_ioctl.c: Wrap all the ACL interfaces with HAVE_ZPL.
+       They are integrated with the vfs layer which is not yet supported.
+       * module/zcommon/zfs_prop.c: Export new quota related symbols.
+       * lib/libzfs/libzfs_util.c: Increase buffer size for nvlist which
+       is needed for large configurations.
+
+       * Bug fixes:
+       * lib/libspl/include/sys/zfs_debug.h: Removed duplicate file.
+       * lib/libspl/include/sys/isa_defs.h: Fixed missing macro definitions
+       for little endian and big endian.
+       * cmd/zpios/zpios_main.c: Pretty-up the zpios 'make check' output.
+       * module/zfs/vdev_disk.c: Honor spa_mode() when opening block devs.
+       * module/zfs/vdev_disk.c: Initial error handling added to
+       vdev_disk_io_done() to revalidate the media on EIO.
+       * lib/libzfs/libzfs_util.c: Fix an accidentally introduced formatting
+       issue in zfs_nicenum() output.
+       
+2009-07-02 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.4 - Use 'git log --no-merges' for full change log.
+
+       * : Generic distro friendly build system / packaging improvements
+       for RPM based distros including CHAOS, RHEL, Fedora, and SLES.
+
+       These changes bring the zfs-0.4.4 tree in to compliance with
+       the spl-0.4.4 packaging changes.  The bottom line is 2 source
+       rpms and 4 binary rpms will now be generated when creating
+       packages there will be:
+
+       zfs-<version>.src.rpm
+       - Fully rebuildable source rpm for libzfs and utils.
+       zfs-modules-<version>.src.rpm
+       - Fully rebuildable source rpm for kernel modules.
+
+       zfs-<version>.<arch>.rpm
+       - Binary rpm for libzfs and utils.  The utils in this package are
+         compatible with all zfs-module rpms of the same version.
+       zfs-devel-<version>.<arch>.rpm
+       - Binary rpm containing headers for building against libzfs libraries.
+
+       zfs-modules-<verion>-<kernel>.arch.rpm
+       - Binary rpm containing the kernel modules for a specific kernel build.
+         The package name contains the kernel version and you should have one
+         of these packages installed to match every kernel on your system.
+       zfs-modules-devel-<verion>-<kernel>.arch.rpm
+       - Binary rpm containing development header and module symbols needed
+         for building additional kernel modules which are dependent on the
+         zfs module stack.
+
+       * : SLES9/10 distro support added: Several significant updates to
+       the build system were required to support this including:
+
+       - Autoconf macros updated to be aware of the standard install
+       locations for SLES kernel sources and build objects.  Additionally
+       changes were made to support multiple names for Module{s}.symvers.
+       - By default on SLES all user space builds are 32-bit even on
+       64-bit arches.  This means we need to be careful to pass -m64 in
+       the autoconf checks which probe the kernel.  Additionally, 
+       ioctl_compat handles still need to be added so 32-bit user
+       binarys can perform ioctls with the 64-bit kernel.
+
+       * : Powerpc64 support added:
+
+       - 64-bit user space atomic support for power64 was obtained from
+       an old version of OpenSolaris which offered minimal powerpc support.
+       The atomic support is not 100% fully implemented but it's a good
+       first step towards cleanly supporting the architecture.
+       - Added powerpc ISA type.
+       - Explicitly use signed char for portability.  On x86/x86_64
+       systems the default char type is signed, on ppc/ppc64 systems
+       the default char type is unsigned.
+       - Core target arch support for conditional compilation of SUBDIRs.
+       Required by libspl for its arch specific atomic implementations.
+
+       * COPYRIGHT: Readded accidentally dropped COPYRIGHT, it just
+       references the OPENSOLARIS.LICENSE which was still in the project.
+
+       * module/zfs/dmu_tx.c: Add EXPORT_SYMBOL(dmu_tx_callback_register).
+
+       * config/user-zlib.m4: Add basic zlib autoconf check for user space.
+
+2009-03-20 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.3 - Use 'git log --no-merges' for full change log.
+
+       * : Rebased to ZFS b108 from OpenSolaris
+
+       * configure.ac, *Makefile.am: Build system update.  This includes
+       resolving various build issues and adding support for the remaining
+       common build targets.  Available targets now include:
+
+       - make all        # Build everything
+       - make install    # Install everything
+       - make clean      # Clean up build products
+       - make distclean  # Clean up everything
+       - make dist       # Create package tarball
+       - make srpm       # Create package source RPM
+       - make rpm        # Create package binary RPMs
+       - make tags       # Create ctags and etags for everything
+
+       Extra care was taken to ensure that the source RPMs are fully
+       rebuildable against Fedora/RHEL/Chaos kernels.  To build binary
+       RPMs from the source RPM for your system simply run:
+
+       rpmbuild --rebuild zfs-x.y.z-1.src.rpm
+
+       This will produce two binary RPMs with correct 'requires'
+       dependencies for your kernel.  One will contain all zfs modules
+       and support utilities, the other is a devel package for compiling
+       additional kernel modules which are dependent on the zfs.
+
+       zfs-x.y.z-1_<kernel version>.x86_64.rpm
+       zfs-devel-x.y.2-1_<kernel version>.x86_64.rpm
+
+       * config/kernel.m4, config/Rules.am: Removed the build options
+       -Wno-unused -Wno-missing -Wno-unused -Wno-parentheses and
+       -Wno-unknown-pragmas.  All upstream warnings which were being
+       suppressed by these options are now handled in the matching
+       gcc-* topic branch.
+
+       * zpios: Various zpios and test infrastructure improvements.
+
+       * feature-commit-cb: New feature commit callbacks.
+
+       * : Various bug fixes which are more clearly detailed in the
+       git commit logs.  For a detailed summary of changes post version
+       0.4.2, check out the 'top' topic branch and view the commit logs.
+
+       git checkout top
+       git log --no-merges -53
+
+2009-02-05 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.2
+
+       * lib/libzfs/libzfs_util.c: Remove mknod() this is now handled by
+       by the SPL with an upcall even without GPL-only symbols.
+
+       * module/zfs/vdev_diskc: Updated linux vdev_disk interfaces to issue
+       multiple bios if needed due to the maximum request size being smaller
+       than the request size passed down from the spa.
+
+       * scripts/zpool-config/lo-*: Add loopback based test configs.
+
+2009-01-21 Brian Behlendorf <behlendorf1@llnl.gov>
+
+       * : Tag zfs-0.4.1
+
+       * : Rebased to ZFS b105 from OpenSolaris
+
+       * : Restructured project and build system to more closely
+       mirror the code organization used in OpenSolaris.  This
+       allows us minimize the changes to upstream source needed,
+       and allows concurrent user+kernel space builds of all components.
+
 2008-11-19 Brian Behlendorf <behlendorf1@llnl.gov>
 
        * : Tag zfs-0.4.0
        - Minor build system improvements
        - Minor script improvements
        - Create a full copy and not a link tree with quilt
-       - KPIOS_MAJOR changed from 231 to 232
+       - ZPIOS_MAJOR changed from 231 to 232
        - BIO_RW_BARRIER flag removed from IO request
 
 2008-06-30 Brian Behlendorf <behlendorf1@llnl.gov>