Re: Interoperation of flock(2), fcntl(2), and lockf(3)

From: Kirk McKusick (mckusick_at_mckusick.com)
Date: 05/15/04

  • Next message: Yar Tikhiy: "Re: bin/65928: [PATCH] stock ftpd uses superuser credentials for active mode sockets"
    To: Yar Tikhiy <yar@comp.chem.msu.su>
    Date: Sat, 15 May 2004 09:28:07 -0700
    
    

    As the author of the original sentence, I concur that your proposed
    change is an improvement. I suggest that you make it.

            Kirk McKusick

    =-=-=-=-=-=

    Date: Sat, 15 May 2004 13:21:14 +0400
    From: Yar Tikhiy <yar@comp.chem.msu.su>
    To: arch@freebsd.org, hackers@freebsd.org
    Subject: Interoperation of flock(2), fcntl(2), and lockf(3)

    Hi folks,

    I've always been confused by the following sentence from the lockf(3)
    manpage:

            The lockf(), fcntl(2) and flock(2) locks may be safely used
            concurrently.

    Does that mean that each of those calls uses a locking mechanism
    of its own? Of course, in practice those calls use a mutual
    mechanism, thus allowing serial access to a file from applications
    using different calls. However, there's an oddity: While it's
    possible for a process to obtain the same lock several times w/o
    error (it's a no-op case of upgrading the lock,) intermixing flock(2)
    and fcntl(2), or flock(2) and lockf(3), within the same process
    results in EAGAIN upon the second locking attempt. That's while
    mixing fcntl(2) and lockf(3) is all right as long as the latter
    call is just a wrapper for the former one. Of course, intermixing
    different lock calls within one process is a poor idea at the first
    place, but I can imagine some mail application that tries to coax
    all the mailbox locking schemes at once.

    Considering all the above, I'd like to add the following paragraph
    to the flock(2), lockf(3), and fcntl(2) man pages (replacing the
    sentence quoted from lockf(3)):

            The flock(2), fcntl(2), and lockf(3) locks are compatible.
            Processes using different locking interfaces can cooperate
            over the same file safely. However, only one of such
            interfaces should be used within a process. If a file is
            locked by a process through flock(2), any record within the
            file will be seen as locked from the viewpoint of another
            process using fcntl(2) or lockf(3), and vice versa.

    Any objections or comments?

    -- 
    Yar
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
    

  • Next message: Yar Tikhiy: "Re: bin/65928: [PATCH] stock ftpd uses superuser credentials for active mode sockets"

    Relevant Pages

    • Interoperation of flock(2), fcntl(2), and lockf(3)
      ... Does that mean that each of those calls uses a locking mechanism ... error (it's a no-op case of upgrading the lock,) intermixing flock ...
      (freebsd-hackers)
    • Interoperation of flock(2), fcntl(2), and lockf(3)
      ... Does that mean that each of those calls uses a locking mechanism ... error (it's a no-op case of upgrading the lock,) intermixing flock ...
      (freebsd-arch)
    • Re: using clustered index to optimize inserts ...
      ... I will try to explain locking in terms of Sybase docs... ... Allpages Locking: Allpages locking locks both data pages and index ... the data page is locked with an exclusive lock. ... Clustered Index: The datarows will be arranged as per the clustered ...
      (comp.databases.sybase)
    • Re: CSingleLock - known behaviour?
      ... It is better to design code that doesn't require locking. ... If you don't need the resource, don't lock it. ... magnitude less efficient, than locking once. ...
      (microsoft.public.vc.mfc)
    • Re: freebsd-current Digest, Vol 79, Issue 14
      ... Unsubscribe me. ... > number of lock operations for the common cases which resulted in a couple ... So, since there is no driver, the device gets powered down as soon as the ... >> shows up as normal PCI device, but exports the console to the network even ...
      (freebsd-current)