Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6441 - Не работает ограничение на число процессов, работающих с файлом   Make a simular bug
Summary: Не работает ограничение на число процессов, работающих с файлом
Status: CLOSED FIXED
Alias: None
Product: CIFS@Etersoft
Classification: Продукты (Products)
Component: блокировки файлов и доступ (show other bugs)
Version: не указана
Hardware: PC Linux
: P4 normal
Target Milestone: ---
Assignee: Александр Морозов
QA Contact: Александр Морозов
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 3043
  Show dependency treegraph
 
In work:
Reported: 2010-11-12 18:12 MSK by Александр Морозов
Modified: 2011-07-12 19:42 MSK (History)
1 user (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Морозов 2010-11-12 18:12:42 MSK
Создал пять wineprefix`ов, с помощью такого скрипта запускаю пять процессов, открывающих один файл на CIFS-разделе:

#! /bin/sh
xterm -e 'WINEPREFIX="${HOME}/.wine" wine open_file.exe' &
xterm -e 'WINEPREFIX="${HOME}/wine_test_2" wine open_file_2.exe' &
xterm -e 'WINEPREFIX="${HOME}/wine_test_3" wine open_file_3.exe' &
xterm -e 'WINEPREFIX="${HOME}/wine_test_4" wine open_file_4.exe' &
xterm -e 'WINEPREFIX="${HOME}/wine_test_5" wine open_file_5.exe' &
echo -n "Enter smth:"
read
WINEPREFIX="${HOME}/.wine" wineserver -k
WINEPREFIX="${HOME}/wine_test_2" wineserver -k
WINEPREFIX="${HOME}/wine_test_3" wineserver -k
WINEPREFIX="${HOME}/wine_test_4" wineserver -k
WINEPREFIX="${HOME}/wine_test_5" wineserver -k

open_file.c:
#include <windows.h>
#include <stdio.h>

int main()
{
    FILE *f = fopen("test", "w+");
    printf("opening \"test\": %s\n", f ? "ok" : "failed");
    SuspendThread(GetCurrentThread());
}

В лицензии:
TYPE_LICENSE=Terminal
COUNT_LICENSE=3
Но при этом файл может быть успешно открыт и больше чем тремя процессами (четырьмя или пятью, когда как).
На NFS ограничение на число файлов работает.

etercifs-4.5.3-alt1
2.6.32-std-def-alt16 #1 SMP
wine-etersoft-sql-1.0.12-alt14.1
wine-etersoft-1.0.12-alt7.25
Comment 1 Александр Морозов 2010-11-12 18:21:54 MSK
На CIFS F_GETLK вместо pid процесса, установившего блокировку, возвращает pid процесса, выполняющего F_GETLK. Есть тест: cifs/getlk.c в репозитории git.office:/projects/wine-etersoft-devel.git
Comment 2 Pavel Shilovsky 2010-11-12 19:20:35 MSK
Это известная проблема и средствами CIFS её решить нельзя из-за ограничений самого протокола. Нужен какой-то другой механизм без использования поля pid в возвращаемой структуре GET_LK.
Comment 3 Александр Морозов 2010-12-02 21:33:59 MSK
Сделал, чтобы в set_concurlock не использовалось F_GETLK. Изменения внесены в открытую (отправлены патчи в wine-patches-test) и закрытую части.
Comment 4 Александр Морозов 2011-07-12 19:38:54 MSK
> В лицензии:
> TYPE_LICENSE=Terminal
> COUNT_LICENSE=3
Успешно открываются только 3 файла.

Клиент: Debian 5.0.6 x64(fixed) в vbox
etercifs              4.5.5-eter3debian
2.6.26-2-amd64 #1 SMP
wine-etersoft-network 1.0.12-eter18debian
wine-etersoft         1.0.12-eter8.14debian

Сервер: cellar
2.6.32-ovz-el-alt25 #1 SMP
samba-3.5.9-alt1