Показать сообщение отдельно
  #21  
Старый 06.05.2019, 16:12
Jurij Ivliev
Guest
 
Сообщений: n/a
По умолчанию Re: parallel mounting for ZFS filesystem

Jurij Ivliev написал(а) к Slawa Olhovchenkov в May 19 15:00:39 по местному времени:

From: Jurij Ivliev <ii@any.com.ru>

Нi, Slawa!

On Mon, 06 May 2019 14:16:20 +0300,
Slawa Olhovchenkov <Slawa.Olhovchenkov@f500.n5030.z2.fidonet.org> wrote:
JI>> А вот код, который отвечает за порядок монтирования, имеется.
JI>> И до сих пор работает исправно.
JI>> cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c, функция
JI>> static int mountpoint_cmp(void const a, void const b);
JI>> используется для сравнения в qsort по списку датасетов, кандидатов
JI>> на монтирование.
SO> мне лень отматывать и смотреть что конкретно у тебя, но если встречается
SO> ситуация типа
SO> pool1/a => X/a
SO> pool1/a/b/c => X/a/b/c
SO> pool2/a
SO> pool2/a/b => X/a/b
то по логике, заложенной в mountpoint_cmp(), получается такой порядок:
pool1/a => X/a
pool2/a
pool2/a/b => X/a/b
pool1/a/b/c => X/a/b/c
(предполагается, что для pool2/a установлен mountpoint=X/a и canmount=off).
То есть при однопотоке всё смонтируется как ожидается (если я правильно
понял ожидания).

SO> то вообще говоря результат представляется неопределенным и даже в случае
SO> однопоточного монтирования зависящим от порядка монтирования самих пулов
SO> pool1/pool2 и pool2/pool1 дадут разные результаты.
Вот тут не понял. Что такое "монтирования самих пулов"?
Насколько я понимаю открытие пулов и монтирование датасетов - последовательные
действия. То есть сначала подключаются все известные пулы, а затем
с них скопом монтируется всё, что должно смонтироваться.
--- ifmail v.2.15dev5.4
Ответить с цитированием