[Linux-cluster] writev does not work properly on GFS filesystem

Nenad Opsenica nenad at panline.net
Tue Mar 27 16:52:30 UTC 2007


I have found a problem when trying to use syslog (sysklogd-1.4.1) for 
writing log files to GFS-mounted filesystem, as only timestamp gets logged.
After searching and tracing with strace, it seems that problem is 
somewhere in GFS filesystem writev implementation.


Here is strace of what happens when logging to file on ext3 FS (using  
logger -p user.notice "test-ext3 filesystem" to force logging):

    recv(3, "<13>Mar 27 18:27:57 root: test-e"..., 1022, 0) = 46
    time(NULL)                              = 1175012877
    writev(4, [{"Mar 27 18:27:57", 15}, {" ", 1}, {"pantelija", 9}, {" 
", 1}, {"root: test-ext3 filesystem", 26}, {"\n", 1}], 6) = 53
    fsync(4)                                = 0


And now, when trying to log to file on GFS FS (using logger -p 
user.notice "test-gfs filesystem") - we have got 45 bytes to write, 
syslog is properly formatting text string into 6 array entries, but only 
the first is written - as could be seen from writev return code:

    recv(3, "<13>Mar 27 18:28:49 root: test-g"..., 1022, 0) = 45
    time(NULL)                              = 1175012929
    writev(4, [{"Mar 27 18:28:49", 15}, {" ", 1}, {"pantelija", 9}, {" 
", 1}, {"root: test-gfs filesystem", 25}, {"\n", 1}], 6) = 15
    fsync(4)                                = 0


Kernel is 2.6.20.2 and GFS-kernel is 1.04.00

    Nenad





More information about the Linux-cluster mailing list