Go to file
Ned Bass 4cfc086e4d receive_freeobjects() skips freeing some objects
When receiving a FREEOBJECTS record, receive_freeobjects()
incorrectly skips a freed object in some cases. Specifically, this
happens when the first object in the range to be freed doesn't exist,
but the second object does. This leaves an object allocated on disk
on the receiving side which is unallocated on the sending side, which
may cause receiving subsequent incremental streams to fail.

The bug was caused by an incorrect increment of the object index
variable when current object being freed doesn't exist.  The
increment is incorrect because incrementing the object index is
handled by a call to dmu_object_next() in the increment portion of
the for loop statement.

Add test case that exposes this bug.

Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Giuseppe Di Natale <dinatale2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ned Bass <bass6@llnl.gov>
Closes #6694
Closes #6695
2017-10-16 10:57:55 -07:00
.github Correct cppcheck errors (#6662) 2017-09-20 12:59:21 -07:00
cmd Improved dnode allocation and dmu_hold_impl() (#6611) 2017-09-13 15:46:15 -07:00
config Linux 4.14 compat: IO acct, global_page_state, etc (#6655) 2017-09-19 14:24:34 -07:00
contrib dracut: Install commands required for vdev_id 2017-08-07 09:37:30 -07:00
etc Disable mount(8) canonical paths in do_mount() 2017-08-21 16:46:55 -07:00
include Scale the dbuf cache with arc_c 2017-10-16 10:57:54 -07:00
lib Correct cppcheck errors (#6662) 2017-09-20 12:59:21 -07:00
man vdev_id: implement slot numbering by port id 2017-08-21 16:41:22 -07:00
module receive_freeobjects() skips freeing some objects 2017-10-16 10:57:55 -07:00
rpm Tag zfs-0.7.2 2017-09-22 11:14:01 -07:00
scripts Fix volume WR_INDIRECT log replay (#6620) 2017-09-13 16:04:16 -07:00
tests receive_freeobjects() skips freeing some objects 2017-10-16 10:57:55 -07:00
udev Fix spelling 2017-01-03 11:31:18 -06:00
.gitignore Improve gitignore 2017-05-25 10:14:13 -07:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
AUTHORS Add a missing > to AUTHORS 2014-09-02 14:18:53 -07:00
autogen.sh build: do not call boilerplate ourself 2013-04-02 10:55:20 -07:00
configure.ac Add zgenhostid utility script 2017-07-25 13:22:03 -04:00
copy-builtin Allow c99 when building ZFS in the kernel tree 2017-03-27 12:31:15 -07:00
COPYRIGHT Update ZED copyright boilerplate 2015-05-11 15:07:00 -07:00
DISCLAIMER Fix minor typos and update marketing copy. 2013-03-21 12:51:06 -07:00
Makefile.am Correct cppcheck errors (#6662) 2017-09-20 12:59:21 -07:00
META Tag zfs-0.7.2 2017-09-22 11:14:01 -07:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
README.markdown Add CONTRIBUTING information and templates 2016-12-09 12:48:12 -07:00
TEST Retire filebench testing 2017-06-01 06:24:28 -07:00
zfs-script-config.sh.in zpool iostat/status -c improvements 2017-06-05 10:52:15 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

ZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the Illumos community.

ZFS on Linux, which is also known as ZoL, is currently feature complete. It includes fully functional and stable SPA, DMU, ZVOL, and ZPL layers. And it's native!

Official Resources

Installation

Full documentation for installing ZoL on your favorite Linux distribution can be found at our site.

Contribute & Develop

We have a separate document with contribution guidelines.