Portál AbcLinuxu, 6. května 2025 09:18
soffice
wrapperu zakomentovana) nastavena na hodnotu 1, bude soffice.bin provadet advisory locking. Ted jsem to zkousel a funguje to i pres sambu.
Seznam zamcenych souboru si na SMB serveru muzete overit prikazem smbstatus -v -B
.
23105 DENY_NONE 0x3 RDWR NONE /volume03/pokus1000.xls Fri Jun 17 15:04:11 2005 23103 DENY_NONE 0x3 RDWR NONE /volume03/pokus1000.xls Fri Jun 17 15:03:52 2005Tohle neni normalni. smbd si udrzuje vlastni seznam zamku (kvuli oplocks apod.) a vam pise, ze pridelila zamek obema procesum. Odtrasujte si systemova volani aplikace (OOo), jestli pozadaji oba procesy o vytvoreni zamku. Ten druhy, by mel byt odmitnut. Co se tyce distribuce, tak to by melo byt irelevantni, protoze jadro (tj. smb klient) i smbd (tj. server) jsou "vanilkovy" (nehlede na to, ze oba dva systemy maji s puvodni distribuci spolecnou snad jen glibc a gcc).
strace -f soffice 2>/tmp/soffice.strace
. Pak si v /tmp/soffice.strace najdete retezec obsahujici nazev vasecho pokusneho souboru. Funkce open() vrati deskriptor, OOo se pak pokousi zamknout soubor funkci fcntl64(). Pokud skonci chybou, zamknuti selhalo a OOo soubor znovuotevre jen pro cteni.
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
extern int errno;
int main(int argc, char **argv) {
int fd;
struct flock lock;
int i;
if (argc < 2) {
fprintf(stderr, "Chybi jmeno souboru, ktery mam zamknout\n");
exit(1);
}
if (-1 == (fd=open(argv[1], O_RDWR))) {
fprintf(stderr, "Nemohu otevrit soubor %s: %s\n", argv[1],
strerror(errno));
exit(2);
}
lock.l_type=F_WRLCK;
lock.l_whence=SEEK_SET;
lock.l_start=0;
lock.l_len=0;
if (-1==fcntl(fd, F_SETLK, &lock)) {
fprintf(stderr, "Nemohu zamknout soubor pro zapis: %s\n",
strerror(errno));
close(fd);
exit(3);
} else {
printf("Soubor jsem zamknul.\n");
}
printf("Pro pokracovani zmackni enter...");
getc(stdin);
printf("\nZaviram soubor.\n");
close(fd);
return(0);
}
[global] workgroup = PRIVAT netbios name = ROUTER unix charset = UTF8 display charset = UTF8 unix extensions = yes encrypt passwords = yes client plaintext auth = no browseable = yes [privat] path = /mnt/pub comment = Data storage read only = no user = privat browseable = yes create mask = 0770 force create mode = 0660 directory mask = 0770 force directory mode = 0770Klient je SuSE-9.1, jadro vanila 2.6.12, vanilla samba-3.0.10, smb.conf:
[global] workgroup = PRIVAT os level = 2 time server = yes unix charset = UTF8 display charset = UTF8 unix extensions = yes encrypt passwords = yes log level = 1 syslog = 0 printing = CUPS printcap name = CUPS socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY wins support = noKlient pripojuje smb export pres automounter jako
routersmb -fstype=smbfs,user,rw,username=privat,password=XXX,uid=502,gid=100,fmask=0770 ://router/privatOOo-1.1.4 Jestli chcete, muzu vam mailem poslat configuracni soubory obou jader.
routersmb -fstype=smbfs,user,rw,username=privat,password=XXX,uid=502,gid=100,fmask=0770 ://router/privatco je routersmb a kde zapisujete miesto pripojenia
mount -t smbfs -o user,rw,username=privat,password=XXX,uid=502,gid=100,fmask=0770 //router/privat routersmb
Mandatory locking (Non-POSIX.) The above record locks may be either advi- sory or mandatory, and are advisory by default. To make use of mandatory locks, mandatory locking must be enabled (using the "-o mand" option to mount(8)) for the file sys- tem containing the file to be locked and enabled on the file itself (by disabling group execute permission on the file and enabling the set-GID permission bit). Advisory locks are not enforced and are useful only between cooperating processes. Mandatory locks are enforced for all processes.
mount -t smbfs -o rw,username=tenky_klient,password=tenky_klient,fmask=0770,dmask=0770,uid=501,gid=501 //localhost/USERS /smb/share-Park
v kombinacii :
SAL_ENABLE_FILE_LOCKING=1
export SAL_ENABLE_FILE_LOCKING
A po tomto pripojeni mi zacalo korektne zamykanie medzi win a lin klientami (xls a doc). a subor otvoril lin-client a potom win-klient tak win ho mal na citanie a ked to bolo naopak tak tiez to bolo ok. uvidim ako sa to zachova ak tam vbehne dalsi lin-klient
zatial som to testoval medzi jednym win a lin klientom. zacnem to testovat plosne.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.