Linux: increase max nvlist_src size

On Linux increase the maximum allowed size of the src nvlist which
can be passed to the /dev/zfs ioctl.  Originally, this was set
to a maximum of KMALLOC_MAX_SIZE (4M) because it was kmalloc'd.
Since that time it's been converted to a vmalloc so that's no
longer a hard limit, and it's desirable for `zfs send/recv` to
allow larger nvlists so more snapshots can be sent at once.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #6572
Closes #11638
This commit is contained in:
Brian Behlendorf 2021-02-24 09:57:18 -08:00 committed by GitHub
parent f01eaed455
commit 1dfc82a14e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 2 deletions

View File

@ -1238,7 +1238,7 @@ amount of memory. When the limit is exceeded, the ioctl fails with EINVAL and a
description of the error is sent to the zfs-dbgmsg log. This parameter should description of the error is sent to the zfs-dbgmsg log. This parameter should
not need to be touched under normal circumstances. On FreeBSD, the default is not need to be touched under normal circumstances. On FreeBSD, the default is
based on the system limit on user wired memory. On Linux, the default is based on the system limit on user wired memory. On Linux, the default is
\fBKMALLOC_MAX_SIZE\fR . \fB128MB\fR.
.sp .sp
Default value: \fB0\fR (kernel decides) Default value: \fB0\fR (kernel decides)
.RE .RE

View File

@ -209,7 +209,7 @@ zfs_max_nvlist_src_size_os(void)
if (zfs_max_nvlist_src_size != 0) if (zfs_max_nvlist_src_size != 0)
return (zfs_max_nvlist_src_size); return (zfs_max_nvlist_src_size);
return (KMALLOC_MAX_SIZE); return (MIN(ptob(zfs_totalram_pages) / 4, 128 * 1024 * 1024));
} }
void void