Как мне проверить, заблокирован ли каталог в bash?

Мне удалось найти решения только для файлов, а не для каталогов, например lsof . ch flags не имеет опции чтения, поэтому я не знаю, как это сделать.

0
14.01.2016, 20:15
1 ответ

Схема блокировки, используемая для операций с каталогом, основана на двух типах блокировок - на каждый индекс (-> i_mutex) и на файловую систему { {1}} (-> s_vfs_rename_mutex).

При использовании i_mutex для нескольких объектов, не относящихся к каталогу, мы всегда устанавливаем блокировки по порядку, увеличивая адрес. Мы будем вызывать этот порядок "указателя inode" в следующем виде.

Для наших целей все операции делятся на 5 классов:

1) доступ для чтения. Правила блокировки: вызывающий абонент блокирует каталог, к которому мы обращаемся.

2) создание объекта. Правила блокировки: такие же, как указано выше.

3) удаление объекта. Правила блокировки: вызывающий блокирует родителя, находит жертву, блокирует жертву и вызывает метод.

4) rename (), то есть перекрестный каталог , а не . Правила блокировки: вызывающая сторона блокирует родителя и находит источник и цель. Если цель уже существует, заблокируйте ее. Если источник не является каталогом, заблокируйте его. Если это означает, что нам нужно заблокировать оба, заблокируйте их в порядке указателя inode.

5) создание ссылки. Правила блокировки: * заблокировать родителя * проверить, что источник не является каталогом * заблокировать источник * вызвать метод.

6) перекрестное переименование каталогов. Самый хитрый из всей связки. Правила блокировки : * заблокировать файловую систему * заблокировать родителей в порядке «сначала предки». * найти источник и цель. * если старый родитель равен или является потомком цели сбой с -ENOTEMPTY *, если новый родитель равен или является потомком источника сбой с -ELOOP {{1 }} * Если цель существует, заблокируйте ее. Если источник не является каталогом, заблокируйте его . В случае, если это означает, что нам нужно заблокировать и источник, и цель, сделайте это в порядке указателя inode. * вызовите метод.

Вы можете написать сценарий, который может проверять блокировку каталога, используя некоторую информацию из 6 операций над dir.

1
28.01.2020, 02:49

Теги

Похожие вопросы