From 6a51851f4d47cb8827cd14477bf0e8ec2c1c1b79 Mon Sep 17 00:00:00 2001 From: wbaumann Date: Sun, 25 Jul 2010 15:34:34 +0000 Subject: [PATCH] option to minimize memory usage --- ChangeLog | 6 +++ NEWS | 8 +++ etc/davfs2.conf | 7 +-- man/davfs2.conf.5 | 12 ++++- man/davfs2.conf.5.pot | 94 ++++++++++++++++++++--------------- man/de/davfs2.conf.5.po | 104 ++++++++++++++++++++++++--------------- man/de/umount.davfs.8.po | 28 +++++------ man/es/davfs2.conf.5.po | 96 +++++++++++++++++++++--------------- man/umount.davfs.8.pot | 28 +++++------ src/cache.c | 72 ++++++++++++++++++++++++++- src/defaults.h | 3 ++ src/mount_davfs.c | 3 ++ src/mount_davfs.h | 1 + 13 files changed, 309 insertions(+), 153 deletions(-) diff --git a/ChangeLog b/ChangeLog index fc5034d..dd3c11f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,12 @@ ChangeLog for davfs2 -------------------- +2010-05-04 Werner Baumann (werner.baumann@onlinehome.de) + * cache.c, defaults.h, mount_davfs.c, mount_davfs.h + davfs2.conf: + Added option to minimize memory usage by recurrently + removing unused nodes. + 2010-05-04 Werner Baumann (werner.baumann@onlinehome.de) * mount_davfs.c, check_fstab: Search fstab additionally for mount point with diff --git a/NEWS b/NEWS index 8841731..bf4371a 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,14 @@ # permitted in any medium without royalty. +What is new in davfs2 NEXT_VERSION +=========================== + +New option 'minimize_mem' to recurrently remove unused nodes. +It is intended for small systems, which may run out of memory +with huge davfs2 file systems. It may slow down davfs2. + + What is new in davfs2 1.4.6 =========================== diff --git a/etc/davfs2.conf b/etc/davfs2.conf index cec4949..c133185 100644 --- a/etc/davfs2.conf +++ b/etc/davfs2.conf @@ -1,8 +1,8 @@ -# davfs2 configuration file 2009-04-12 -# version 9 +# davfs2 configuration file 2010-07-25 +# version 10 # ------------------------------------ -# Copyright (C) 2006, 2007, 2008, 2009 Werner Baumann +# Copyright (C) 2006, 2007, 2008, 2009, 2010 Werner Baumann # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice @@ -63,6 +63,7 @@ # file_refresh 1 # second # delay_upload 10 # gui_optimize 0 +# minimize_mem 0 # Debugging Options # ----------------- diff --git a/man/davfs2.conf.5 b/man/davfs2.conf.5 index 984b105..ac27711 100644 --- a/man/davfs2.conf.5 +++ b/man/davfs2.conf.5 @@ -1,4 +1,4 @@ -.TH @CONFIGFILE@ 5 2009\-04\-13 @PACKAGE_STRING@ +.TH @CONFIGFILE@ 5 2010\-07\-25 @PACKAGE_STRING@ .SH NAME @@ -452,6 +452,16 @@ from all files in a directory with one PROPFIND request. 0 = no, 1 = yes. .br Default: 0 +.TP +.B minimize_mem +Minimize the amount of memory used for file and directory nodes. The list +of nodes will be recurrently scaned and all nodes currently not used will +be removed. It is intended for small systems which might run out of memory +with huge file systems. Local changes of file permissions will be lost and +performance is degraded. +.br +Default: 0 + .SH Debugging Options diff --git a/man/davfs2.conf.5.pot b/man/davfs2.conf.5.pot index 8c5d006..78a7f86 100644 --- a/man/davfs2.conf.5.pot +++ b/man/davfs2.conf.5.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2009-10-18 18:01+0300\n" +"POT-Creation-Date: 2010-07-25 17:31+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,9 +22,9 @@ msgid "@CONFIGFILE@" msgstr "" # type: TH -#: davfs2.conf.5:1 umount.davfs.8:1 +#: davfs2.conf.5:1 #, no-wrap -msgid "2009-04-13" +msgid "2010-07-25" msgstr "" # type: TH @@ -392,7 +392,7 @@ msgid "" msgstr "" # type: TP -#: davfs2.conf.5:191 davfs2.conf.5:505 +#: davfs2.conf.5:191 davfs2.conf.5:515 #, no-wrap msgid "B" msgstr "" @@ -517,7 +517,7 @@ msgstr "" # type: Plain text #: davfs2.conf.5:247 davfs2.conf.5:255 davfs2.conf.5:273 davfs2.conf.5:283 -#: davfs2.conf.5:300 davfs2.conf.5:454 +#: davfs2.conf.5:300 davfs2.conf.5:454 davfs2.conf.5:464 msgid "Default: 0" msgstr "" @@ -927,20 +927,36 @@ msgid "" "files in a directory with one PROPFIND request. 0 = no, 1 = yes." msgstr "" +# type: TP +#: davfs2.conf.5:455 +#, no-wrap +msgid "B" +msgstr "" + +# type: Plain text +#: davfs2.conf.5:462 +msgid "" +"Minimize the amount of memory used for file and directory nodes. The list of " +"nodes will be recurrently scaned and all nodes currently not used will be " +"removed. It is intended for small systems which might run out of memory with " +"huge file systems. Local changes of file permissions will be lost and " +"performance is degraded." +msgstr "" + # type: SH -#: davfs2.conf.5:456 +#: davfs2.conf.5:466 #, no-wrap msgid "Debugging Options" msgstr "" # type: TP -#: davfs2.conf.5:458 +#: davfs2.conf.5:468 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:466 +#: davfs2.conf.5:476 msgid "" "Send debug messages to the syslog daemon. The value tells what kind of " "information shall be logged. The messages are send with facility LOG_DAEMON " @@ -951,7 +967,7 @@ msgid "" msgstr "" # type: Plain text -#: davfs2.conf.5:470 +#: davfs2.conf.5:480 msgid "" "Unlike other options, this option is cumulative. If there are several debug " "entries with different values, all of them will be applied. Also debug " @@ -960,171 +976,171 @@ msgid "" msgstr "" # type: Plain text -#: davfs2.conf.5:473 +#: davfs2.conf.5:483 msgid "" "B Debug messages let the log-files grow quickly. Never use this " "option in normal operation of mount.davfs." msgstr "" # type: Plain text -#: davfs2.conf.5:475 +#: davfs2.conf.5:485 msgid "Default: no debugging messages" msgstr "" # type: TP -#: davfs2.conf.5:476 +#: davfs2.conf.5:486 #, no-wrap msgid "B" msgstr "" # type: TP -#: davfs2.conf.5:478 +#: davfs2.conf.5:488 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 msgid "Command line and configuration options." msgstr "" # type: TP -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 msgid "Upcalls from the kernel file system." msgstr "" # type: TP -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 msgid "Cache operations like adding and removing nodes." msgstr "" # type: TP -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 msgid "HTTP headers." msgstr "" # type: TP -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 msgid "Parsing of the XML-body of WebDAV-requests." msgstr "" # type: TP -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 msgid "Negotiation of authentication." msgstr "" # type: TP -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 msgid "Information about locks." msgstr "" # type: TP -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 msgid "TLS/SSL related stuff like certificates." msgstr "" # type: TP -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:505 +#: davfs2.conf.5:515 msgid "Complete body of HTTP-responses." msgstr "" # type: Plain text -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 msgid "" "Also print confidential information, which is usually omitted or obscured." msgstr "" # type: TP -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 #, no-wrap msgid "B" msgstr "" # type: Plain text -#: davfs2.conf.5:511 +#: davfs2.conf.5:521 msgid "Includes config, kernel, cache and http." msgstr "" # type: SH -#: davfs2.conf.5:514 mount.davfs.8:532 umount.davfs.8:79 +#: davfs2.conf.5:524 mount.davfs.8:532 umount.davfs.8:79 #, no-wrap msgid "AUTHORS" msgstr "" # type: Plain text -#: davfs2.conf.5:518 +#: davfs2.conf.5:528 msgid "" "This man page was written by by Werner Baumann Ewerner." "baumann@onlinehome.deE." msgstr "" # type: SH -#: davfs2.conf.5:520 mount.davfs.8:549 umount.davfs.8:84 +#: davfs2.conf.5:530 mount.davfs.8:549 umount.davfs.8:84 #, no-wrap msgid "DAVFS2 HOME" msgstr "" # type: Plain text -#: davfs2.conf.5:523 mount.davfs.8:552 umount.davfs.8:87 +#: davfs2.conf.5:533 mount.davfs.8:552 umount.davfs.8:87 msgid "@PACKAGE_BUGREPORT@" msgstr "" # type: SH -#: davfs2.conf.5:525 mount.davfs.8:554 umount.davfs.8:89 +#: davfs2.conf.5:535 mount.davfs.8:554 umount.davfs.8:89 #, no-wrap msgid "SEE ALSO" msgstr "" # type: Plain text -#: davfs2.conf.5:531 +#: davfs2.conf.5:541 msgid "" "B<@PROGRAM_NAME@>(8), B(8), B(8), B(8), " "B(5)" diff --git a/man/de/davfs2.conf.5.po b/man/de/davfs2.conf.5.po index 76956d7..d48a995 100644 --- a/man/de/davfs2.conf.5.po +++ b/man/de/davfs2.conf.5.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: davfs2 1.4.0\n" -"POT-Creation-Date: 2009-10-18 18:01+0300\n" -"PO-Revision-Date: 2009-06-12 12:25+0200\n" +"POT-Creation-Date: 2010-07-25 17:31+0300\n" +"PO-Revision-Date: 2010-07-25 17:32+0200\n" "Last-Translator: Werner Baumann \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -21,10 +21,10 @@ msgid "@CONFIGFILE@" msgstr "@CONFIGFILE@" # type: TH -#: davfs2.conf.5:1 umount.davfs.8:1 +#: davfs2.conf.5:1 #, no-wrap -msgid "2009-04-13" -msgstr "2009-04-13" +msgid "2010-07-25" +msgstr "2010-07-25" # type: TH #: davfs2.conf.5:1 mount.davfs.8:1 umount.davfs.8:1 @@ -480,7 +480,7 @@ msgstr "" "I<@SYS_CONF_DIR@/@CERTS_DIR@/@CLICERTS_DIR@> nach ihr gesucht." # type: TP -#: davfs2.conf.5:191 davfs2.conf.5:505 +#: davfs2.conf.5:191 davfs2.conf.5:515 #, no-wrap msgid "B" msgstr "B" @@ -628,7 +628,7 @@ msgstr "" # type: Plain text #: davfs2.conf.5:247 davfs2.conf.5:255 davfs2.conf.5:273 davfs2.conf.5:283 -#: davfs2.conf.5:300 davfs2.conf.5:454 +#: davfs2.conf.5:300 davfs2.conf.5:454 davfs2.conf.5:464 msgid "Default: 0" msgstr "Voreingestellt: 0" @@ -1141,20 +1141,42 @@ msgstr "" "B<@PROGRAM_NAME@> diese Abfrage für alle Dateien eines Verzeichnisses mit " "einem PROPFIND-Request zu erledigen. 0 = nein, 1 = ja." +# type: TP +#: davfs2.conf.5:455 +#, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: davfs2.conf.5:462 +msgid "" +"Minimize the amount of memory used for file and directory nodes. The list of " +"nodes will be recurrently scaned and all nodes currently not used will be " +"removed. It is intended for small systems which might run out of memory with " +"huge file systems. Local changes of file permissions will be lost and " +"performance is degraded." +msgstr "" +"Minimiert den Hauptspeicher, der für Datei- und Verzeichnis-Knoten genutzt " +"wird. Dazu wird die Liste der Knoten regelmäßig durchsucht und derzeit nicht " +"bnötigte Knoten entfernt. Die Option ist für kleine System gedacht, bei " +"denen der Hauptspeicher sonst für große davfs2-Dateisystem nicht ausreicht. " +"Das Dateisystem wird dadurch etwas langsamer und lokale Änderungen der " +"Dateirchte gehen verloren." + # type: SH -#: davfs2.conf.5:456 +#: davfs2.conf.5:466 #, no-wrap msgid "Debugging Options" msgstr "Debugging Optionen" # type: TP -#: davfs2.conf.5:458 +#: davfs2.conf.5:468 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:466 +#: davfs2.conf.5:476 msgid "" "Send debug messages to the syslog daemon. The value tells what kind of " "information shall be logged. The messages are send with facility LOG_DAEMON " @@ -1171,7 +1193,7 @@ msgstr "" "hängt von der Neon-Bibliothek ab." # type: Plain text -#: davfs2.conf.5:470 +#: davfs2.conf.5:480 msgid "" "Unlike other options, this option is cumulative. If there are several debug " "entries with different values, all of them will be applied. Also debug " @@ -1184,7 +1206,7 @@ msgstr "" "angewandt." # type: Plain text -#: davfs2.conf.5:473 +#: davfs2.conf.5:483 msgid "" "B Debug messages let the log-files grow quickly. Never use this " "option in normal operation of mount.davfs." @@ -1193,143 +1215,143 @@ msgstr "" "Verwende die Option niemals im normalen Betrieb." # type: Plain text -#: davfs2.conf.5:475 +#: davfs2.conf.5:485 msgid "Default: no debugging messages" msgstr "Voreinstellung: keine Debug-Meldungen." # type: Plain text -#: davfs2.conf.5:476 +#: davfs2.conf.5:486 #, no-wrap msgid "B" msgstr "B" # type: TP -#: davfs2.conf.5:478 +#: davfs2.conf.5:488 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 msgid "Command line and configuration options." msgstr "Kommando-Zeile und Kofigurationsoptionen." # type: TP -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 msgid "Upcalls from the kernel file system." msgstr "Anfragen vom Kernel-Dateisystem." # type: TP -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 msgid "Cache operations like adding and removing nodes." msgstr "" "Cache-Operationen wie das Erzeugen und Löschen von Dateien und " "Verzeichnissen." # type: TP -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 msgid "HTTP headers." msgstr "HTTP-Header." # type: TP -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 msgid "Parsing of the XML-body of WebDAV-requests." msgstr "Analysieren von XML-Daten in WebDAV-Anfragen." # type: TP -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 msgid "Negotiation of authentication." msgstr "Aushandeln der Authentifizierung." # type: TP -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 msgid "Information about locks." msgstr "Informationen über Sperren." # type: TP -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 msgid "TLS/SSL related stuff like certificates." msgstr "TLS/SSL-Informatinen, z.B. Zertifikate." # type: TP -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:505 +#: davfs2.conf.5:515 msgid "Complete body of HTTP-responses." msgstr "Der komplette Datenteil von HTTP-Antworten." # type: Plain text -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 msgid "" "Also print confidential information, which is usually omitted or obscured." msgstr "" "Gib auch vertrauliche Daten aus, die normalerweise weg gelassen werden." # type: TP -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:511 +#: davfs2.conf.5:521 msgid "Includes config, kernel, cache and http." msgstr "Beinhaltet config, kernel, cache und http." # type: SH -#: davfs2.conf.5:514 mount.davfs.8:532 umount.davfs.8:79 +#: davfs2.conf.5:524 mount.davfs.8:532 umount.davfs.8:79 #, no-wrap msgid "AUTHORS" msgstr "AUTOREN" # type: Plain text -#: davfs2.conf.5:518 +#: davfs2.conf.5:528 msgid "" "This man page was written by by Werner Baumann Ewerner." "baumann@onlinehome.deE." @@ -1338,24 +1360,24 @@ msgstr "" "geschrieben." # type: SH -#: davfs2.conf.5:520 mount.davfs.8:549 umount.davfs.8:84 +#: davfs2.conf.5:530 mount.davfs.8:549 umount.davfs.8:84 #, no-wrap msgid "DAVFS2 HOME" msgstr "DAVFS2 HOME" # type: TH -#: davfs2.conf.5:523 mount.davfs.8:552 umount.davfs.8:87 +#: davfs2.conf.5:533 mount.davfs.8:552 umount.davfs.8:87 msgid "@PACKAGE_BUGREPORT@" msgstr "@PACKAGE_BUGREPORT@" # type: SH -#: davfs2.conf.5:525 mount.davfs.8:554 umount.davfs.8:89 +#: davfs2.conf.5:535 mount.davfs.8:554 umount.davfs.8:89 #, no-wrap msgid "SEE ALSO" msgstr "SIEHE AUCH" # type: Plain text -#: davfs2.conf.5:531 +#: davfs2.conf.5:541 msgid "" "B<@PROGRAM_NAME@>(8), B(8), B(8), B(8), " "B(5)" diff --git a/man/de/umount.davfs.8.po b/man/de/umount.davfs.8.po index 1fe63fb..61d1f04 100644 --- a/man/de/umount.davfs.8.po +++ b/man/de/umount.davfs.8.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: davfs2 1.4.0\n" -"POT-Creation-Date: 2009-04-27 18:47+0300\n" +"POT-Creation-Date: 2010-07-25 17:24+0300\n" "PO-Revision-Date: 2009-04-27 18:49+0200\n" "Last-Translator: Werner Baumann \n" "Language-Team: \n" @@ -14,12 +14,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -# type: TH -#: davfs2.conf.5:1 mount.davfs.8:1 umount.davfs.8:1 -#, no-wrap -msgid "2009-04-13" -msgstr "2009-04-13" - # type: TH #: davfs2.conf.5:1 mount.davfs.8:1 umount.davfs.8:1 #, no-wrap @@ -39,24 +33,24 @@ msgid "DESCRIPTION" msgstr "BESCHREIBUNG" # type: SH -#: davfs2.conf.5:501 mount.davfs.8:513 umount.davfs.8:79 +#: davfs2.conf.5:524 mount.davfs.8:532 umount.davfs.8:79 #, no-wrap msgid "AUTHORS" msgstr "AUTOREN" # type: SH -#: davfs2.conf.5:507 mount.davfs.8:530 umount.davfs.8:84 +#: davfs2.conf.5:530 mount.davfs.8:549 umount.davfs.8:84 #, no-wrap msgid "DAVFS2 HOME" msgstr "DAVFS2 HOME" # type: TH -#: davfs2.conf.5:510 mount.davfs.8:533 umount.davfs.8:87 +#: davfs2.conf.5:533 mount.davfs.8:552 umount.davfs.8:87 msgid "@PACKAGE_BUGREPORT@" msgstr "@PACKAGE_BUGREPORT@" # type: SH -#: davfs2.conf.5:512 mount.davfs.8:535 umount.davfs.8:89 +#: davfs2.conf.5:535 mount.davfs.8:554 umount.davfs.8:89 #, no-wrap msgid "SEE ALSO" msgstr "SIEHE AUCH" @@ -111,19 +105,19 @@ msgid "Print a help message." msgstr "Zeige einen Hilfe-Text an." # type: SH -#: mount.davfs.8:344 umount.davfs.8:67 +#: mount.davfs.8:361 umount.davfs.8:67 #, no-wrap msgid "FILES" msgstr "DATEIEN" # type: TP -#: mount.davfs.8:405 umount.davfs.8:69 +#: mount.davfs.8:422 umount.davfs.8:69 #, no-wrap msgid "I<@SYS_RUN@>" msgstr "I<@SYS_RUN@>" # type: SH -#: mount.davfs.8:508 umount.davfs.8:74 +#: mount.davfs.8:525 umount.davfs.8:74 #, no-wrap msgid "BUGS" msgstr "FEHLER" @@ -134,6 +128,12 @@ msgstr "FEHLER" msgid "u@PROGRAM_NAME@" msgstr "u@PROGRAM_NAME@" +# type: TH +#: umount.davfs.8:1 +#, no-wrap +msgid "2009-04-13" +msgstr "2009-04-13" + # type: Plain text #: umount.davfs.8:6 msgid "u@PROGRAM_NAME@ - Umount-helper to unmount a @PACKAGE@ file system" diff --git a/man/es/davfs2.conf.5.po b/man/es/davfs2.conf.5.po index 741c615..defbb91 100644 --- a/man/es/davfs2.conf.5.po +++ b/man/es/davfs2.conf.5.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: davfs2.conf.5\n" -"POT-Creation-Date: 2009-10-18 18:01+0300\n" +"POT-Creation-Date: 2010-07-25 17:31+0300\n" "PO-Revision-Date: 2007-04-26 01:24-0300\n" "Last-Translator: Luciano Bello \n" "Language-Team: Español \n" @@ -23,9 +23,9 @@ msgid "@CONFIGFILE@" msgstr "@CONFIGFILE@" # type: TH -#: davfs2.conf.5:1 umount.davfs.8:1 -#, no-wrap -msgid "2009-04-13" +#: davfs2.conf.5:1 +#, fuzzy, no-wrap +msgid "2010-07-25" msgstr "2009-04-13" # type: TH @@ -463,7 +463,7 @@ msgstr "" "I<@SYS_CONF_DIR@/@CERTS_DIR@/@CLICERTS_DIR@> serán buscados." # type: TP -#: davfs2.conf.5:191 davfs2.conf.5:505 +#: davfs2.conf.5:191 davfs2.conf.5:515 #, no-wrap msgid "B" msgstr "B" @@ -613,7 +613,7 @@ msgstr "" # type: Plain text #: davfs2.conf.5:247 davfs2.conf.5:255 davfs2.conf.5:273 davfs2.conf.5:283 -#: davfs2.conf.5:300 davfs2.conf.5:454 +#: davfs2.conf.5:300 davfs2.conf.5:454 davfs2.conf.5:464 msgid "Default: 0" msgstr "Predeterminado: 0" @@ -1076,20 +1076,36 @@ msgstr "" "intentará obtener esta información de todos los archivos en un directorio " "con un único pedido PROPFIND. 0 = no, 1 = sí." +# type: TP +#: davfs2.conf.5:455 +#, fuzzy, no-wrap +msgid "B" +msgstr "B" + +# type: Plain text +#: davfs2.conf.5:462 +msgid "" +"Minimize the amount of memory used for file and directory nodes. The list of " +"nodes will be recurrently scaned and all nodes currently not used will be " +"removed. It is intended for small systems which might run out of memory with " +"huge file systems. Local changes of file permissions will be lost and " +"performance is degraded." +msgstr "" + # type: SH -#: davfs2.conf.5:456 +#: davfs2.conf.5:466 #, fuzzy, no-wrap msgid "Debugging Options" msgstr "Opciones Generales" # type: TP -#: davfs2.conf.5:458 +#: davfs2.conf.5:468 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:466 +#: davfs2.conf.5:476 msgid "" "Send debug messages to the syslog daemon. The value tells what kind of " "information shall be logged. The messages are send with facility LOG_DAEMON " @@ -1100,7 +1116,7 @@ msgid "" msgstr "" # type: Plain text -#: davfs2.conf.5:470 +#: davfs2.conf.5:480 msgid "" "Unlike other options, this option is cumulative. If there are several debug " "entries with different values, all of them will be applied. Also debug " @@ -1109,148 +1125,148 @@ msgid "" msgstr "" # type: Plain text -#: davfs2.conf.5:473 +#: davfs2.conf.5:483 msgid "" "B Debug messages let the log-files grow quickly. Never use this " "option in normal operation of mount.davfs." msgstr "" # type: Plain text -#: davfs2.conf.5:475 +#: davfs2.conf.5:485 msgid "Default: no debugging messages" msgstr "" # type: Plain text -#: davfs2.conf.5:476 +#: davfs2.conf.5:486 #, no-wrap msgid "B" msgstr "" # type: TP -#: davfs2.conf.5:478 +#: davfs2.conf.5:488 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 #, fuzzy msgid "Command line and configuration options." msgstr "B" # type: TP -#: davfs2.conf.5:481 +#: davfs2.conf.5:491 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 msgid "Upcalls from the kernel file system." msgstr "" # type: TP -#: davfs2.conf.5:484 +#: davfs2.conf.5:494 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 msgid "Cache operations like adding and removing nodes." msgstr "" # type: TP -#: davfs2.conf.5:487 +#: davfs2.conf.5:497 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 msgid "HTTP headers." msgstr "" # type: TP -#: davfs2.conf.5:490 +#: davfs2.conf.5:500 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 msgid "Parsing of the XML-body of WebDAV-requests." msgstr "" # type: TP -#: davfs2.conf.5:493 +#: davfs2.conf.5:503 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 msgid "Negotiation of authentication." msgstr "" # type: TP -#: davfs2.conf.5:496 +#: davfs2.conf.5:506 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 msgid "Information about locks." msgstr "" # type: TP -#: davfs2.conf.5:499 +#: davfs2.conf.5:509 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 msgid "TLS/SSL related stuff like certificates." msgstr "" # type: TP -#: davfs2.conf.5:502 +#: davfs2.conf.5:512 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:505 +#: davfs2.conf.5:515 msgid "Complete body of HTTP-responses." msgstr "" # type: Plain text -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 msgid "" "Also print confidential information, which is usually omitted or obscured." msgstr "" # type: TP -#: davfs2.conf.5:508 +#: davfs2.conf.5:518 #, no-wrap msgid "B" msgstr "B" # type: Plain text -#: davfs2.conf.5:511 +#: davfs2.conf.5:521 msgid "Includes config, kernel, cache and http." msgstr "" # type: SH -#: davfs2.conf.5:514 mount.davfs.8:532 umount.davfs.8:79 +#: davfs2.conf.5:524 mount.davfs.8:532 umount.davfs.8:79 #, no-wrap msgid "AUTHORS" msgstr "AUTORES" # type: Plain text -#: davfs2.conf.5:518 +#: davfs2.conf.5:528 msgid "" "This man page was written by by Werner Baumann Ewerner." "baumann@onlinehome.deE." @@ -1259,24 +1275,24 @@ msgstr "" "baumann@onlinehome.deE." # type: SH -#: davfs2.conf.5:520 mount.davfs.8:549 umount.davfs.8:84 +#: davfs2.conf.5:530 mount.davfs.8:549 umount.davfs.8:84 #, no-wrap msgid "DAVFS2 HOME" msgstr "DAVFS2 HOME" # type: TH -#: davfs2.conf.5:523 mount.davfs.8:552 umount.davfs.8:87 +#: davfs2.conf.5:533 mount.davfs.8:552 umount.davfs.8:87 msgid "@PACKAGE_BUGREPORT@" msgstr "@PACKAGE_BUGREPORT@" # type: SH -#: davfs2.conf.5:525 mount.davfs.8:554 umount.davfs.8:89 +#: davfs2.conf.5:535 mount.davfs.8:554 umount.davfs.8:89 #, no-wrap msgid "SEE ALSO" msgstr "VER TAMBIÉN" # type: Plain text -#: davfs2.conf.5:531 +#: davfs2.conf.5:541 msgid "" "B<@PROGRAM_NAME@>(8), B(8), B(8), B(8), " "B(5)" diff --git a/man/umount.davfs.8.pot b/man/umount.davfs.8.pot index cf383b8..7f0b81a 100644 --- a/man/umount.davfs.8.pot +++ b/man/umount.davfs.8.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2009-04-27 18:47+0300\n" +"POT-Creation-Date: 2010-07-25 17:24+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -15,12 +15,6 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING" -# type: TH -#: davfs2.conf.5:1 mount.davfs.8:1 umount.davfs.8:1 -#, no-wrap -msgid "2009-04-13" -msgstr "" - # type: TH #: davfs2.conf.5:1 mount.davfs.8:1 umount.davfs.8:1 #, no-wrap @@ -40,24 +34,24 @@ msgid "DESCRIPTION" msgstr "" # type: SH -#: davfs2.conf.5:501 mount.davfs.8:513 umount.davfs.8:79 +#: davfs2.conf.5:524 mount.davfs.8:532 umount.davfs.8:79 #, no-wrap msgid "AUTHORS" msgstr "" # type: SH -#: davfs2.conf.5:507 mount.davfs.8:530 umount.davfs.8:84 +#: davfs2.conf.5:530 mount.davfs.8:549 umount.davfs.8:84 #, no-wrap msgid "DAVFS2 HOME" msgstr "" # type: Plain text -#: davfs2.conf.5:510 mount.davfs.8:533 umount.davfs.8:87 +#: davfs2.conf.5:533 mount.davfs.8:552 umount.davfs.8:87 msgid "@PACKAGE_BUGREPORT@" msgstr "" # type: SH -#: davfs2.conf.5:512 mount.davfs.8:535 umount.davfs.8:89 +#: davfs2.conf.5:535 mount.davfs.8:554 umount.davfs.8:89 #, no-wrap msgid "SEE ALSO" msgstr "" @@ -110,19 +104,19 @@ msgid "Print a help message." msgstr "" # type: SH -#: mount.davfs.8:344 umount.davfs.8:67 +#: mount.davfs.8:361 umount.davfs.8:67 #, no-wrap msgid "FILES" msgstr "" # type: TP -#: mount.davfs.8:405 umount.davfs.8:69 +#: mount.davfs.8:422 umount.davfs.8:69 #, no-wrap msgid "I<@SYS_RUN@>" msgstr "" # type: SH -#: mount.davfs.8:508 umount.davfs.8:74 +#: mount.davfs.8:525 umount.davfs.8:74 #, no-wrap msgid "BUGS" msgstr "" @@ -133,6 +127,12 @@ msgstr "" msgid "u@PROGRAM_NAME@" msgstr "" +# type: TH +#: umount.davfs.8:1 +#, no-wrap +msgid "2009-04-13" +msgstr "" + # type: Plain text #: umount.davfs.8:6 msgid "u@PROGRAM_NAME@ - Umount-helper to unmount a @PACKAGE@ file system" diff --git a/src/cache.c b/src/cache.c index 97a3a94..813c30f 100644 --- a/src/cache.c +++ b/src/cache.c @@ -168,6 +168,13 @@ static time_t delay_upload; GET If-Modified-Since for single files. */ static int gui_optimize; +/* Remove nodes that are currently not needed to minimize memory usage. */ +static int minimize_mem; + +/* When to next run minimize_tree. 0 means to not run minimize_tree. + Must be updated when a node is created. */ +static time_t next_minimize; + /* Time interval to wait, before a directory is updated. Usually equal to dir_refresh, but will be varied in case the connection timed out.*/ static time_t retry; @@ -276,6 +283,9 @@ get_upload_time(dav_node *node) return item->save_at; } +static void +minimize_tree(dav_node *node, int rm_dir); + static int move_dir(dav_node *src, dav_node *dst, dav_node *dst_parent, const char *dst_name); @@ -604,6 +614,7 @@ dav_init_cache(const dav_args *args, const char *mpoint) file_refresh = args->file_refresh; delay_upload = args->delay_upload; gui_optimize = args->gui_optimize; + minimize_mem = args->minimize_mem; retry = dir_refresh; min_retry = args->retry; max_retry = args->max_retry; @@ -648,6 +659,7 @@ dav_init_cache(const dav_args *args, const char *mpoint) backup->mode = S_IFDIR | S_IRWXU; clean_cache(); + next_minimize = 0; int ret = update_directory(root, 0); if (ret == EAGAIN) { @@ -750,6 +762,14 @@ dav_tidy_cache(void) if (cache_size > max_cache_size) resize_cache(); + if (minimize_mem && next_minimize && time(NULL) > next_minimize) { + next_minimize = 0; + minimize_tree(root, 0); + if (debug) + syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), + "minimize_tree: %llu nodes remaining", fs_stat->files); + } + static dav_node_list_item *item = NULL; dav_node_list_item *next_item = changed; @@ -1845,6 +1865,53 @@ delete_tree(dav_node *node) } +/* Removes nodes that are currently not needed to minimize + memory usage. + Nodes are not needed if + - a file node is without cached file and its parent directory + has not been updated within file_refresh seconds + - a dir node has no childs and has not been updated within + file_refresh seconds. + rm_dir : if node is a directory only remove it if rm_ dir = 1. */ +static void +minimize_tree(dav_node *node, int rm_dir) +{ + if (node == backup) return; + + if (is_dir(node)) { + + int rm = (time(NULL) > (node->utime + file_refresh)); + dav_node *child = node->childs; + while (child) { + dav_node *next = child->next; + if (rm || is_dir(child)) + minimize_tree(child, rm); + child = next; + } + if (!node->childs && node != root && node != backup) { + if (rm && rm_dir) { + remove_from_tree(node); + remove_from_table(node); + delete_node(node); + *flush = 1; + } else if (node->utime + && (!next_minimize + || (node->utime + file_refresh) < next_minimize)) { + next_minimize = node->utime + file_refresh; + } + } + + } else if (!is_cached(node) && !is_locked(node) && !is_created(node)) { + + remove_from_tree(node); + remove_from_table(node); + delete_node(node); + *flush = 1; + + } +} + + /* Moves directory src to dst using WebDAV method MOVE. */ static int move_dir(dav_node *src, dav_node *dst, dav_node *dst_parent, @@ -2068,6 +2135,9 @@ new_node(dav_node *parent, mode_t mode) syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "new node: %p->%p", node->parent, node); fs_stat->files++; + if (!next_minimize) + next_minimize = node->atime + file_refresh; + return node; } @@ -2176,7 +2246,7 @@ remove_node(dav_node *node) If there are inconsistencies between the information from the server and the locally stored state, the local information is updated. Backups are created if necessary. - This will only be done if the utime of dear is reached, otherwise this + This will only be done if the utime of dir is reached, otherwise this function will do nothing. utime and retry will be updated. If the contents or the mtime of the dir has changed, the dir-cache-file diff --git a/src/defaults.h b/src/defaults.h index 7afd308..c95d5d6 100644 --- a/src/defaults.h +++ b/src/defaults.h @@ -101,6 +101,9 @@ May be overridden by system config file and user config file. */ #define DAV_GUI_OPTIMIZE 0 +/* Remove nodes that are currently not needed to minimize memory usage. */ +#define DAV_MINIMIZE_MEM 0 + /* HTTP */ /*======*/ diff --git a/src/mount_davfs.c b/src/mount_davfs.c index a04b55e..c8664cc 100644 --- a/src/mount_davfs.c +++ b/src/mount_davfs.c @@ -1817,6 +1817,7 @@ new_args(void) args->file_refresh = DAV_FILE_REFRESH; args->delay_upload = DAV_DELAY_UPLOAD; args->gui_optimize = DAV_GUI_OPTIMIZE; + args->minimize_mem = DAV_MINIMIZE_MEM; args->debug = 0; args->neon_debug = 0; @@ -2272,6 +2273,8 @@ read_config(dav_args *args, const char * filename, int system) args->delay_upload = arg_to_int(parmv[1], 10, parmv[0]); } else if (strcmp(parmv[0], "gui_optimize") == 0) { args->gui_optimize = arg_to_int(parmv[1], 10, parmv[0]); + } else if (strcmp(parmv[0], "minimize_mem") == 0) { + args->minimize_mem = arg_to_int(parmv[1], 10, parmv[0]); } else if (strcmp(parmv[0], "debug") == 0) { args->debug |= debug_opts(parmv[1]); args->neon_debug |= debug_opts_neon(parmv[1]); diff --git a/src/mount_davfs.h b/src/mount_davfs.h index a016072..4b8a2b9 100644 --- a/src/mount_davfs.h +++ b/src/mount_davfs.h @@ -95,6 +95,7 @@ typedef struct { time_t file_refresh; /* User config file, system config file */ int delay_upload; /* User config file, system config file */ int gui_optimize; /* User config file, system config file */ + int minimize_mem; /* User config file, system config file */ /* Debugging */ int debug; /* User config file, system config file */ int neon_debug; /* User config file, system config file */