2013-02-17 16 views
5

stworzyłem aplikację do uruchomienia na celu z jądrem 2.6.10. Folder udostępniony na komputerze z Windows jest zamontowany poprzez komendy:jak wyłączyć buforowanie w CIFS (samba) po stronie klienta w Linuksie

mount -t cifs -o username=xxx,password=xxx,forcedirectio //192.168.170.67/57 /fsRecord 

Jak można zrozumieć z opcją polecenia forcedirectio, chcę wyłączyć buforowanie po stronie klienta. Ale nie mogę.

Ilość wolnej pamięci RAM na dysku docelowym wynosi 40 MB. Kiedy kopiuję plik o wielkości około 10 MB, wielkość wolnego RAM spada do 30 MB.

Jądro 2.6.10 używa cifs.1.28. Ustawiłem również oplockEnabled jako 0 (zarówno w kodzie źródłowym, jak i/proc/fs/cifs/OplockEnabled). Ale to nie zatrzymało buforowania. Jak mogę wyłączyć buforowanie na kliencie CIFs na prawdziwe?

Odpowiedz

4

Być może zbyt późno, ale w Arch to osiągnąć z następujących czynności:

/etc/modprobe.d/cifs.conf 
------------------------- 
# Disable caching and the CIFS oplog for stable NTFS network shares 
options cifs enable_oplocks=0 

install cifs /sbin/modprobe --ignore-install cifs $CMDLINE_OPTS && echo 0 > /proc/fs/cifs/LinuxExtensionsEnabled && echo 0 > /proc/fs/cifs/LookupCacheEnabled 
remove cifs /sbin/modprobe -r cifs 

Oto przydatny funkcja do określenia prawidłowych opcji modułu.

# Shamelessly ripped the Kernel_Modules ArchWiki entry: 
# https://wiki.archlinux.org/index.php?title=Kernel_modules&oldid=286087#Bash_function_to_list_module_parameters 

function aa_mod_parameters() 
{ 
    N=/dev/null; 
    C=`tput op` O=$(echo -en "\n`tput setaf 2`>>> `tput op`"); 
    for mod in $(cat /proc/modules|cut -d" " -f1); 
    do 
     md=/sys/module/$mod/parameters; 
     [[ ! -d $md ]] && continue; 
     m=$mod; 
     d=`modinfo -d $m 2>$N | tr "\n" "\t"`; 
     echo -en "$O$m$C"; 
     [[ ${#d} -gt 0 ]] && echo -n " - $d"; 
     echo; 
     for mc in $(cd $md; echo *); 
     do 
      de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`; 
      echo -en "\t$mc=`cat $md/$mc 2>$N`"; 
      [[ ${#de} -gt 1 ]] && echo -en " - $de"; 
      echo; 
     done; 
    done 
} 

Więcej informacji na temat składni modprobe.d znajduje się pod numerem man 5 modprobe.d.

Dodatkowo, mocowania CIFS respektują opcję cache. Zgodnie z the mount.cifs manual ustawienie cache=none powinno wyłączyć buforowanie, a domyślną wartością jest cache=strict.

Powiązane problemy