Arnt Gulbrandsen wrote:
IIRC zfs doesn't flush the cache, it sets the writethrough/writeback
mode at boot/disk insertion time and then manages its own write cache
well well enough to get fast fsync() without relying on the disk's cache.
I believe that's (nearly) the behaviour if it thinks its sharing the
disk - it leaves the write model alone. If it thinks it owns the whole
disk it will enable wrate caching and do appropriate flushing, unless
you tell it not to.
See
http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide
(Storage Pools) and http://en.wikipedia.org/wiki/ZFS (Additional
Capabilities).
Note sure why I seem to have warning-as-error set for jam, which I
just
installed.
That's set in our Jamfiles somewhere.
That's concerning - why doesn't 3.1.3 build for me then? Do you want the
error list?
Certainly.
Bit of an issue with the codepage for the single quotes here but it
should hold.
...found 957 target(s)...
...updating 15 target(s)...
C++ build/gcc-O3-ossl/db/postgres.o
C++ build/gcc-O3-ossl/server/server.o
cc1plus: warnings being treated as errors
server/server.cpp: In member function ‘void
Server::setup(Server::Stage)’:
server/server.cpp:222: error: ignoring return value of ‘ssize_t
write(int, const void*, size_t)’, declared with attribute
warn_unused_result
server/server.cpp:223: error: ignoring return value of ‘ssize_t
write(int, const void*, size_t)’, declared with attribute
warn_unused_result
g++ -c -o build/gcc-O3-ossl/server/server.o -g -Werror -funsigned-char
-W -Wall -O3 -DUSECACHE=1 -Iserver -Icore -Iabnf -Iserver -Imessage
-Iextractors -Iencodings -Idb server/server.cpp
...failed C++ build/gcc-O3-ossl/server/server.o ...
C++ build/gcc-O3-ossl/core/file.o
cc1plus: warnings being treated as errors
core/file.cpp: In member function ‘void File::write(const EString&)’:
core/file.cpp:261: error: ignoring return value of ‘ssize_t write(int,
const void*, size_t)’, declared with attribute warn_unused_result
g++ -c -o build/gcc-O3-ossl/core/file.o -g -Werror -funsigned-char -W
-Wall -O3 -Icore core/file.cpp
...failed C++ build/gcc-O3-ossl/core/file.o ...
...skipped deliver for lack of <server>server.o...
...skipped logd for lack of <server>server.o...
C++ build/gcc-O3-ossl/aox/aoxcommand.o
cc1plus: warnings being treated as errors
aox/aoxcommand.cpp: In member function ‘EString
AoxCommand::readPassword(const EString&)’:
aox/aoxcommand.cpp:332: error: ignoring return value of ‘char*
fgets(char*, int, FILE*)’, declared with attribute warn_unused_result
g++ -c -o build/gcc-O3-ossl/aox/aoxcommand.o -g -Werror -funsigned-char
-W -Wall -pthread -O3 -Iaox -Icore -Iabnf -Iserver -Imessage
-Iextractors -Iencodings -Idb -Icollations -Ilogd -Iaox aox/aoxcommand.cpp
...failed C++ build/gcc-O3-ossl/aox/aoxcommand.o ...
C++ build/gcc-O3-ossl/aox/servers.o
cc1plus: warnings being treated as errors
aox/servers.cpp: In function ‘void selfSignCertificate()’:
aox/servers.cpp:1130: error: ignoring return value of ‘int
system(const char*)’, declared with attribute warn_unused_result
g++ -c -o build/gcc-O3-ossl/aox/servers.o -g -Werror -funsigned-char -W
-Wall -pthread -O3 -Iaox -Icore -Iabnf -Iserver -Imessage -Iextractors
-Iencodings -Idb -Icollations -Ilogd -Iaox aox/servers.cpp
...failed C++ build/gcc-O3-ossl/aox/servers.o ...
...skipped aox for lack of <aox>aoxcommand.o...
...skipped recorder for lack of <server>server.o...
C++ build/gcc-O3-ossl/installer/installer.o
cc1plus: warnings being treated as errors
installer/installer.cpp: In function ‘void readPassword()’:
installer/installer.cpp:424: error: ignoring return value of ‘char*
fgets(char*, int, FILE*)’, declared with attribute warn_unused_result
installer/installer.cpp: In function ‘int psql(const EString&)’:
installer/installer.cpp:2214: error: ignoring return value of ‘ssize_t
write(int, const void*, size_t)’, declared with attribute
warn_unused_result
g++ -c -o build/gcc-O3-ossl/installer/installer.o -g -Werror
-funsigned-char -W -Wall -pthread -O3
-DLIBDIR='"/usr/local/archiveopteryx/lib"'
-DCONFIGDIR='"/usr/local/archiveopteryx"' -DLOGFILE='"syslog/mail"'
-DLOGFILEMODE='"400"' -DPSQL='"psql"' -DDBNAME='"archiveopteryx"'
-DDBSCHEMA='"public"' -DDBOWNER='"aoxsuper"' -DDBOWNERPASS='""'
-DDBPASS='""' -Iinstaller -Icore -Iabnf -Iserver -Imessage -Iextractors
-Iencodings -Idb -Icollations -Ilogd -Iaox -Isasl installer/installer.cpp
...failed C++ build/gcc-O3-ossl/installer/installer.o ...
...skipped installer for lack of <installer>installer.o...
...skipped archiveopteryx for lack of <server>server.o...
...skipped aoximport for lack of <server>server.o...
C++ build/gcc-O3-ossl/aoxexport/exporter.o
cc1plus: warnings being treated as errors
aoxexport/exporter.cpp: In member function ‘virtual void
Exporter::execute()’:
aoxexport/exporter.cpp:158: error: ignoring return value of ‘ssize_t
write(int, const void*, size_t)’, declared with attribute
warn_unused_result
aoxexport/exporter.cpp:159: error: ignoring return value of ‘ssize_t
write(int, const void*, size_t)’, declared with attribute
warn_unused_result
g++ -c -o build/gcc-O3-ossl/aoxexport/exporter.o -g -Werror
-funsigned-char -W -Wall -pthread -O3 -Iaoxexport -Icore -Iabnf -Iserver
-Imessage -Iextractors -Iencodings -Idb -Icollations -Ilogd -Iaox -Isasl
-Iimap -Ipop -Isieve -Ismtp aoxexport/exporter.cpp
...failed C++ build/gcc-O3-ossl/aoxexport/exporter.o ...
...skipped aoxexport for lack of <aoxexport>exporter.o...
...failed updating 6 target(s)...
...skipped 8 target(s)...
...updated 1 target(s)...
Seriously - waf is a LOT better than Jam (and a lot better than scons
too). Its very fast, and quite easy to extend, and having all of
Python's runtime available is very handy. Its a bit hard to hack on the
guts because its very 'dynamic pythonic' but Jam has a terrible
reputation for that sort of thing too, and Thomas Nagy is actively
developing waf.