Linux CIFS filesystem development
 help / color / mirror / Atom feed
From: Kevin Ottens <kevin.ottens@enioka.com>
To: Steve French <smfrench@gmail.com>
Cc: linux-cifs@vger.kernel.org, abartlet@samba.org
Subject: Re: Different behavior of POSIX file locks depending on cache mode
Date: Mon, 27 May 2024 18:38:41 +0200	[thread overview]
Message-ID: <6658550.MDQidcC6GM@wintermute> (raw)
In-Reply-To: <CAH2r5mtzzgG9-peAakYhBNdpahQ=R8wkhJxUQJ+oZtzEvuNjSg@mail.gmail.com>

Hello,

On Thursday 23 May 2024 18:12:27 CEST Steve French wrote:
> What is the behavior with "nobrl" mount option?

With nobrl no failure shows whatever the cache policy (so my lock_test gives 
always the output of the example with cache=none below).

> and what is the behavior when running with the POSIX extensions enabled
> (e.g. to current Samba or ksmbd adding "posix" to the mount options)

By current you mean 4.20.1?

So far I tested with 4.19.6 but couldn't get it to work. I get the following 
in dmesg:
CIFS: VFS: Server does not support mounting with posix SMB3.11 extensions

Despite having the following in my smb.conf:
server max protocol = SMB3_11
smb3 unix extensions = yes

Am I using something too old? I honestly don't know when the extensions were 
added.

Regards.
 
> On Thu, May 23, 2024 at 11:08 AM Kevin Ottens <kevin.ottens@enioka.com> 
wrote:
> > Hello,
> > 
> > I've been hunting down a bug exhibited by Libreoffice regarding POSIX file
> > locks in conjunction with CIFS mounts. In short: just before saving, it
> > reopens a file on which it already holds a file lock (via another file
> > descriptor in the same process) in order to read from it to create a
> > backup
> > copy... but the read call fails.
> > 
> > I've been in discussion with Andrew Bartlett for a little while regarding
> > this issue and, after exploring several venues, he advised me to send an
> > email to this list in order to get more opinions about it.
> > 
> > The latest discovery we did was that the cache option on the mountpoint
> > seems to impact the behavior of the POSIX file locks. I made a minimal
> > test> 
> > application (attached to this email) which basically does the following:
> >  * open a file for read/write
> >  * set a POSIX write lock on the whole file
> >  * open the file a second time and try to read from it
> >  * open the file a third time and try to write to it
> > 
> > It assumes there is already some text in the file. Also, as it goes it
> > outputs information about the calls.
> > 
> > The output I get is the following with cache=strict on the mount:
> > ---
> > Testing with /mnt/foo
> > Got new file descriptor 3
> > Lock set: 1
> > Second file descriptor 4
> > Read from second fd: x count: -1
> > Third file descriptor 5
> > Wrote to third fd: -1
> > ---
> > 
> > If I'm using cache=none:
> > ---
> > Testing with /mnt/foo
> > Got new file descriptor 3
> > Lock set: 1
> > Second file descriptor 4
> > Read from second fd: b count: 1
> > Third file descriptor 5
> > Wrote to third fd: 1
> > ---
> > 
> > That's the surprising behavior which prompted the email on this list. Is
> > it
> > somehow intended that the cache option would impact the semantic of the
> > file locks? At least it caught me by surprise and I wouldn't expect such
> > a difference in behavior.
> > 
> > Now, since the POSIX locks are process wide, I would have expected to have
> > the output I'm getting for the "cache=none" case to be also the one I'm
> > getting for the "cache=strict" case.
> > 
> > I'm looking forward to feedback on this one. I really wonder if we missed
> > something obvious or if there is some kind of bug in the cifs driver.
> > 
> > Regards.
> > --
> > Kévin Ottens
> > kevin.ottens@enioka.com
> > +33 7 57 08 95 13


-- 
Kévin Ottens
kevin.ottens@enioka.com
+33 7 57 08 95 13



  reply	other threads:[~2024-05-27 16:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-23 16:08 Different behavior of POSIX file locks depending on cache mode Kevin Ottens
2024-05-23 16:12 ` Steve French
2024-05-27 16:38   ` Kevin Ottens [this message]
2024-06-10  4:41   ` Andrew Bartlett
2024-06-10 20:05     ` Steve French
2024-06-10 20:50       ` Andrew Bartlett
     [not found]       ` <c6da3de7c205d40a41907874a0e6d26b6c8132fe.camel@samba.org>
2024-06-10 20:53         ` Steve French
2024-06-10 20:57           ` Andrew Bartlett
2024-06-10 21:19           ` Ralph Boehme
2024-06-10 22:49             ` Steve French
2024-06-10 22:53               ` Steve French
2024-06-24  4:54     ` Steve French
2024-06-25  6:00       ` Andrew Bartlett
2024-06-25  7:41         ` Kevin Ottens
2024-06-27 15:04           ` Kevin Ottens
2024-07-10  9:28             ` Andrew Bartlett
2024-07-11  2:03               ` Steve French
2024-07-11  4:20                 ` Andrew Bartlett
2024-08-15 20:47     ` Steve French
2024-08-22 17:06       ` Kevin Ottens
2024-09-01  4:48         ` Steve French

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6658550.MDQidcC6GM@wintermute \
    --to=kevin.ottens@enioka.com \
    --cc=abartlet@samba.org \
    --cc=linux-cifs@vger.kernel.org \
    --cc=smfrench@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox