Fix race between dmu_objset_prefetch() invoked from
zfs_ioc_dataset_list_next() and dsl_dir_destroy_check() indirectly invoked from dmu_recv_existing_end() via dsl_dataset_destroy() by not prefetching temporary clones, as these count as always inconsistent. In addition, do not prefetch hidden datasets at all as we are not going to process these later. Filed as Illumos Bug #1346 PR: kern/157728 Tested by: Borja Marcos <borjam@sarenet.es>, mm Reviewed by: pjd Approved by: re (kib) MFC after: 1 week
This commit is contained in:
parent
bc69c09054
commit
cc82ff1c96
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=224814
@ -1964,7 +1964,8 @@ zfs_ioc_dataset_list_next(zfs_cmd_t *zc)
|
||||
int len = sizeof (zc->zc_name) - (p - zc->zc_name);
|
||||
|
||||
while (dmu_dir_list_next(os, len, p, NULL, &cookie) == 0)
|
||||
(void) dmu_objset_prefetch(zc->zc_name, NULL);
|
||||
if (dataset_name_hidden(zc->zc_name) == B_FALSE)
|
||||
(void) dmu_objset_prefetch(zc->zc_name, NULL);
|
||||
}
|
||||
|
||||
do {
|
||||
|
Loading…
Reference in New Issue
Block a user