[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Comment on glibc2.28: Re: [PATCH glibc] Add file record locking supp
From: |
Samuel Thibault |
Subject: |
Re: Comment on glibc2.28: Re: [PATCH glibc] Add file record locking support |
Date: |
Sat, 1 Dec 2018 18:59:48 +0100 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
Svante Signell, le sam. 01 déc. 2018 16:27:24 +0100, a ecrit:
> On Thu, 2015-01-08 at 12:40 +0100, Svante Signell wrote:
> > Attached is the patch adding support for file record locking in glibc,
> > as implemented in Hurd by Neal Walfield and others. This patch should be
> > applied after the corresponding hurd patch series in case glibc and hurd
> > are not built simultaneously.
>
> With the new version of glibc (2.28) the new file f-setlk.c (and f-setlk.h) is
> introduced. This makes the file-record-locking patch for glibc very
> cumbersome.
[...]
> + err = HURD_FD_PORT_USE (d, __file_record_lock (port, cmd, fl64));
Ah, the introduced file_record_lock RPC takes the flock64, I thought it
was taking the parameters one by one, sorry about that.
Then I'd say that in your patch you can indeed just drop the f_setlk.c
file (which was just meant to be compatibility between fcntl locking and
flock locking), and in fcntl.c, in the 64bit case just call the RPC,
and in the non-64bit case, fill a struct flock64 with the fields of the
struct flock parameter content, and call the RPC, something like:
case F_GETLK:
case F_SETLK:
case F_SETLKW:
{
struct flock *fl = va_arg (ap, struct flock *);
struct flock64 fl64 = {
.l_type = fl->l_type,
.l_whence = fl->l_whence,
etc.
};
err = HURD_FD_PORT_USE (d, __file_record_lock (port, cmd, &fl64));
result = err ? __hurd_dfail(fd, err) : 0;
break;
}
case F_GETLK64:
case F_SETLK64:
case F_SETLKW64:
{
struct flock64 *fl64 = va_arg (ap, struct flock64 *);
err = HURD_FD_PORT_USE (d, __file_record_lock (port, cmd, fl64));
result = err ? __hurd_dfail(fd, err) : 0;
break;
}
Samuel