Hi,

I have recently upgraded my development cluster from 3.6.x to 3.7.1
kernel and clvmd stopped working (all locking operation result in 'Invalid
argument'). I have traced the problem to this call:

write(8, 
"\6\0\0\0\0\0\0\0\1\0\0\0\1\1\0\0\5@\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\320\307\351\326\277\177\0\0\20\17\36\331\277\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\313\351\326\277\177\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Hlk5NeaVF0qhDF20RBq61EZaIj5yyUJgWxxs4ntZedP34Rj3E2wadZfVwtOcvpKb",
 184) = -1 EINVAL (Invalid argument)

Kernel sources show only a few conditions which can result in the EINVAL error
and the one introduced by the 'dlm: check the maximum size of a request from
user' patch seemed suspicious to me.

The commit: 
http://git.kernel.org/?p=linux/kernel/git/teigland/linux-dlm.git;a=commitdiff;h=2b75bc9121e54e22537207b47b71373bcb0be41c

Should a 64-bit kernel really refuse requests using the 64-bit
dlm_write_request struct when compiled with CONFIG_COMPAT on?

To verify my suspicions I have compiled the 3.7.9 with a little patch dropping 
the '(count > sizeof(struct dlm_write_request32) + DLM_RESNAME_MAXLEN)' check,
which solved the problem for me.

The patch will follow, though I am still not sure this is the solution.

Greets,
        Jacek

Reply via email to