[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-kernel
Subject: Re: CIFS kernel module bug
From: Jeremy Allison <jra () samba ! org>
Date: 2011-09-30 23:47:11
Message-ID: 20110930234711.GD14147 () samba2
[Download RAW message or body]
On Fri, Sep 30, 2011 at 10:30:47PM +0100, Anton Altaparmakov wrote:
>
> Yes, I am happy to do that.
>
> Also a question for you: I am up to the neck in having to adapt the CIFS module as it doesn't work very \
> well against the Novell Open Enterprise Server CIFS server (that is why I was looking at the CIFS code \
> and noticed this logic bug in the first place).
> A bit of background: the home directories for our (i.e. University of Cambridge Computing Service) \
> Linux distribution "MCS Linux" which runs on about a thousand workstations and a handfull of remote \
> access servers used to be on Netware and were moved to OES Linux recently and the ncpfs kernel module \
> really fell over in a heap when running against the OES NCP server so we had to switch to CIFS in a \
> hurry and whilst it does not fall over in a heap like ncpfs does and we now have working reconnects \
> when the home directory server is rebooted (home directories magically start working again after the \
> reboot which is brilliant!) many applications do not work.
> I can only assume this is because the CIFS server is an abomination rather than that the CIFS modules \
> is quite that badly broken… Anyway, my question is: do you want patches that make the CIFS module \
> work better with OES CIFS server or do you not care?
> For example lots of applications require working hard links so I had to port our Virtual Hard Link \
> implementation from NCPfs to CIFS to get hard links working which fixed a lot of applications but then \
> we started hitting real bugs. A few examples:
> - llseek(SEEK_END) fails against the OES server with error -EBADF from the server because the SEEK_END \
> causes file revalidation which ends up calling CIFSSMBQFileInfo() which then results in the -EBADF. I \
> wrote a patch to fall back to path based query via CIFSSMBQPathInfo() and if that fails via \
> SMBQueryInformation() and now the llseek(SEEK_END) works thus applications like Seamonkey actually \
> manage to launch rather than segfaulting.
> - mkdir() returns -EACCES when the target exists. Again this is coming from the OES server. I wrote a \
> patch that calls cifs_get_inode_info() when CIFSSMBMkDir() returns -EACCES and unix extensions are not \
> enabled on the superblock and if the result is success I rewrite the return code to -EEXIST which fixes \
> the mkdir issue and that fixes loads of Gnome related applications.
> - The OES server behaves like NT4 in that it returns success from CIFSSMBSetPathInfo() but it actually \
> ignores the call unless the file is open on the server. But the OES server does not have CIFS_SES_NT4 \
> in the session flags thus the work around in the CIFS module does not trigger and thus changing the \
> access times or permissions does not work unless the file happens to be open which breaks applications \
> like rsync. I commented the CIFSSMBSetPathInfo() call completely in a patch so it falls back to the \
> other code which makes it work for us.
> And finally the actual question: Are you interested in any of these patches or at least are you \
> interested in fixing these issues in the standard CIFS module in which case I can send you my patches \
> or at least give you detailed descriptions of what is failing and how?
What server code is the OES CIFS server running ? I thought Novell CIFS
services were all Samba based.
Jeremy.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic