mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
ZVOL: Unify zvol minors operations and improve error handling
Now zvol minors creation logic is passed thru spa_zvol_taskq, like it is doing for remove/rename zvol minors functions. Appropriate zvol minors creation functions are refactored: - The zvol_create_minor()/zvol_minors_create_recursive() were removed. - The single zvol_create_minors() is added instead. Also, it become possible to collect zvol minors subtasks status, to detect, if some zvol minor subtask is failed in the subtasks chain. The appropriate message is reported to zfs_dbgmsg buffer in this case. Sponsored-by: vStack, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com> Signed-off-by: Fedor Uporov <fuporov.vstack@gmail.com> Closes #17575
This commit is contained in:
+1
-2
@@ -36,8 +36,7 @@
|
||||
#define SPEC_MAXOFFSET_T ((1LL << ((NBBY * sizeof (daddr32_t)) + \
|
||||
DEV_BSHIFT - 1)) - 1)
|
||||
|
||||
extern void zvol_create_minor(const char *);
|
||||
extern void zvol_create_minors_recursive(const char *);
|
||||
extern void zvol_create_minors(const char *);
|
||||
extern void zvol_remove_minors(spa_t *, const char *, boolean_t);
|
||||
extern void zvol_rename_minors(spa_t *, const char *, const char *, boolean_t);
|
||||
|
||||
|
||||
@@ -108,7 +108,6 @@ zvol_state_t *zvol_find_by_name_hash(const char *name,
|
||||
uint64_t hash, int mode);
|
||||
int zvol_first_open(zvol_state_t *zv, boolean_t readonly);
|
||||
uint64_t zvol_name_hash(const char *name);
|
||||
void zvol_remove_minors_impl(const char *name);
|
||||
void zvol_last_close(zvol_state_t *zv);
|
||||
void zvol_insert(zvol_state_t *zv);
|
||||
void zvol_log_truncate(zvol_state_t *zv, dmu_tx_t *tx, uint64_t off,
|
||||
@@ -132,7 +131,7 @@ void zv_request_task_free(zv_request_task_t *task);
|
||||
* platform dependent functions exported to platform independent code
|
||||
*/
|
||||
void zvol_os_free(zvol_state_t *zv);
|
||||
void zvol_os_rename_minor(zvol_state_t *zv, const char *newname);
|
||||
int zvol_os_rename_minor(zvol_state_t *zv, const char *newname);
|
||||
int zvol_os_create_minor(const char *name);
|
||||
int zvol_os_update_volsize(zvol_state_t *zv, uint64_t volsize);
|
||||
boolean_t zvol_os_is_zvol(const char *path);
|
||||
|
||||
Reference in New Issue
Block a user