flock(1): working with fcntl locks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I was a bit surprised to find that flock(2) specifically ignores fcntl locks. from its manual page:

Since kernel 2.0, flock() is implemented as a system call in its own right rather than being emulated in the GNU C library as a call to fcntl(2). This yields true BSD semantics: there is no interaction between the types of lock placed by flock() and fcntl(2), and flock()
       does not detect deadlock.

I was trying to check if dpkg or apt-get was holding its lock and skip running my cron job if so, but unfortunately it uses fcntl (F_SETLK), and flock(1) will happily call flock(2) which succeeds.

it's a bit sad to have to write the lock testing in C or Perl rather than use the nice little flock(1), so I wonder if we could "fix" flock(1) somehow. I think I'm not alone to be surprised that flock(1) is so ineffective against locking done by other utilities, so my prefered solution would be to switch to using fcntl(2).

the chance of a problematic regression is small, I think. my *guess* is that most flock(1) usage is only interacting with other usage of flock(1) (not flock(2)). also relying on flock(1) succeeding on a fcntl-locked file would be just Wrong(tm).

the "safe" solution is to add a flag, --fcntl, but isn't that just cruft?

I can provide patches when I hear what the mailing list wants.

--
Kjetil T. Homme
Redpill Linpro - Changing the game

--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux