MCPcopy Create free account
hub / github.com/F-Stack/f-stack / zvol_check_volblocksize

Function zvol_check_volblocksize

freebsd/contrib/openzfs/module/zfs/zvol.c:380–412  ·  view source on GitHub ↗

* Sanity check volume block size. */

Source from the content-addressed store, hash-verified

378 * Sanity check volume block size.
379 */
380int
381zvol_check_volblocksize(const char *name, uint64_t volblocksize)
382{
383 /* Record sizes above 128k need the feature to be enabled */
384 if (volblocksize > SPA_OLD_MAXBLOCKSIZE) {
385 spa_t *spa;
386 int error;
387
388 if ((error = spa_open(name, &spa, FTAG)) != 0)
389 return (error);
390
391 if (!spa_feature_is_enabled(spa, SPA_FEATURE_LARGE_BLOCKS)) {
392 spa_close(spa, FTAG);
393 return (SET_ERROR(ENOTSUP));
394 }
395
396 /*
397 * We don't allow setting the property above 1MB,
398 * unless the tunable has been changed.
399 */
400 if (volblocksize > zfs_max_recordsize)
401 return (SET_ERROR(EDOM));
402
403 spa_close(spa, FTAG);
404 }
405
406 if (volblocksize < SPA_MINBLOCKSIZE ||
407 volblocksize > SPA_MAXBLOCKSIZE ||
408 !ISP2(volblocksize))
409 return (SET_ERROR(EDOM));
410
411 return (0);
412}
413
414/*
415 * Set ZFS_PROP_VOLBLOCKSIZE set entry point.

Callers 1

zfs_ioc_createFunction · 0.85

Calls 3

spa_openFunction · 0.85
spa_feature_is_enabledFunction · 0.85
spa_closeFunction · 0.85

Tested by

no test coverage detected