From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Shilovsky Subject: Re: CIFS data coherency problem Date: Sat, 11 Sep 2010 00:16:41 +0400 Message-ID: References: <20100908063224.240b0419@corrin.poochiereds.net> <20100910081549.41de32d1@corrin.poochiereds.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e6d26145c59efc048fed6ccf Cc: Steve French , linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Jeff Layton Return-path: In-Reply-To: <20100910081549.41de32d1-4QP7MXygkU+dMjc06nkz3ljfA9RmPOcC@public.gmane.org> Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: --0016e6d26145c59efc048fed6ccf Content-Type: text/plain; charset=ISO-8859-1 2010/9/10 Jeff Layton : > filemap_fdatawrite starts up a flush of the writes but doesn't wait for > it to complete. The data is cached however. If there's a problem > writing out the data to the server that gets reported at fsync or > close. That's consistent with POSIX. We're not required to report > errors flushing the data until that time. In this case we are not flushing all the cached data - we are doing write (via call from the userspace) and the application wants to know the right results of it. As I mentioned above, if we have mandatory byte-range lock from another client on this range of the file, the writing fails but the application won't know about it! > I see both oplocks being broken: > > 0x0001: frames 57 and 60 > 0x0002: frames 65 and 66 > The first it is downgrading client1's oplock to Level II when client2 opens the same file (client2 gets Oplock Level II) too), but the second - downgrading to None - I think it should be for every client opened the same file. But it the capture: client2 writes to the file and gets Oplock break to None, but client1 doesn't get it and still think that it can read from a cache (because it has Oplock Level II). It is with Samba-4.0.0-alpha11. I tested it with Samba 3.4 and got another results (the capture is in attachment) - the server downgrades the oplock of client1 to None when client2 opens the file (client2 gets Oplock None too) - it's right! -- Best regards, Pavel Shilovsky. --0016e6d26145c59efc048fed6ccf Content-Type: application/octet-stream; name="mtime_problem_samba-3-4-7.pcap" Content-Disposition: attachment; filename="mtime_problem_samba-3-4-7.pcap" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gdxhmlzm0 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 GIAQA+kk1AAAAQEICgAbKKjWMmab --0016e6d26145c59efc048fed6ccf--