mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-27 11:29:36 +03:00
Add tunable to ignore hole_birth
Adds a module option which disables the hole_birth optimization which has been responsible for several recent bugs, including issue #4050. Original-patch: https://gist.github.com/pcd1193182/2c0cd47211f3aee623958b4698836c48 Signed-off-by: Rich Ercolani <rincebrain@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #4833
This commit is contained in:
parent
e35c5a8265
commit
6d836e6f8b
@ -24,6 +24,19 @@ Description of the different parameters to the ZFS module.
|
|||||||
.sp
|
.sp
|
||||||
.LP
|
.LP
|
||||||
|
|
||||||
|
.sp
|
||||||
|
.ne 2
|
||||||
|
.na
|
||||||
|
\fBignore_hole_birth\fR (int)
|
||||||
|
.ad
|
||||||
|
.RS 12n
|
||||||
|
When set, the hole_birth optimization will not be used, and all holes will
|
||||||
|
always be sent on zfs send. Useful if you suspect your datasets are affected
|
||||||
|
by a bug in hole_birth.
|
||||||
|
.sp
|
||||||
|
Use \fB1\fR for on and \fB0\fR (default) for off.
|
||||||
|
.RE
|
||||||
|
|
||||||
.sp
|
.sp
|
||||||
.ne 2
|
.ne 2
|
||||||
.na
|
.na
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
#include <sys/zfeature.h>
|
#include <sys/zfeature.h>
|
||||||
|
|
||||||
int32_t zfs_pd_bytes_max = 50 * 1024 * 1024; /* 50MB */
|
int32_t zfs_pd_bytes_max = 50 * 1024 * 1024; /* 50MB */
|
||||||
|
int32_t ignore_hole_birth = 0;
|
||||||
|
|
||||||
typedef struct prefetch_data {
|
typedef struct prefetch_data {
|
||||||
kmutex_t pd_mtx;
|
kmutex_t pd_mtx;
|
||||||
@ -251,7 +252,7 @@ traverse_visitbp(traverse_data_t *td, const dnode_phys_t *dnp,
|
|||||||
*
|
*
|
||||||
* Note that the meta-dnode cannot be reallocated.
|
* Note that the meta-dnode cannot be reallocated.
|
||||||
*/
|
*/
|
||||||
if ((!td->td_realloc_possible ||
|
if (!ignore_hole_birth && (!td->td_realloc_possible ||
|
||||||
zb->zb_object == DMU_META_DNODE_OBJECT) &&
|
zb->zb_object == DMU_META_DNODE_OBJECT) &&
|
||||||
td->td_hole_birth_enabled_txg <= td->td_min_txg)
|
td->td_hole_birth_enabled_txg <= td->td_min_txg)
|
||||||
return (0);
|
return (0);
|
||||||
@ -727,4 +728,7 @@ EXPORT_SYMBOL(traverse_pool);
|
|||||||
|
|
||||||
module_param(zfs_pd_bytes_max, int, 0644);
|
module_param(zfs_pd_bytes_max, int, 0644);
|
||||||
MODULE_PARM_DESC(zfs_pd_bytes_max, "Max number of bytes to prefetch");
|
MODULE_PARM_DESC(zfs_pd_bytes_max, "Max number of bytes to prefetch");
|
||||||
|
|
||||||
|
module_param(ignore_hole_birth, int, 0644);
|
||||||
|
MODULE_PARM_DESC(ignore_hole_birth, "Ignore hole_birth txg for send");
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user