Re: [PATCH] locks: export device name

J. Bruce Fields
2012-02-14T19:09:19Z

On Mon, Feb 13, 2012 at 04:34:25PM -0800, Andrew Morton wrote:
> On Fri, 10 Feb 2012 22:06:07 +0100
> Davidlohr Bueso <dave@gnu.org> wrote:
>
> > From: Davidlohr Bueso <dave@gnu.org>
> >
> > The lslk(8) program has not been maintained for over a decade and has recently been rewritten as lslocks(8).
> > It will be available for the next 2.22 release, in a couple of months. This is a good opportunity to delete
> > that nasty WE_CAN_BREAK_LSLK_NOW and start exporting the device name instead of the maj:min numbers.
> >
> > For backward compatibility the new version can be in charge of checking older kernel versions and parsing the old
> > output if necessary.
> >
> > ...
> >
> > --- a/fs/locks.c
> > +++ b/fs/locks.c
> > @@ -2199,15 +2199,8 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
> > : (fl->fl_type & F_WRLCK) ? "WRITE" : "READ ");
> > }
> > if (inode) {
> > -#ifdef WE_CAN_BREAK_LSLK_NOW
> > seq_printf(f, "%d %s:%ld ", fl_pid,
> > inode->i_sb->s_id, inode->i_ino);
> > -#else
> > - /* userspace relies on this representation of dev_t ;-( */
> > - seq_printf(f, "%d %02x:%02x:%ld ", fl_pid,
> > - MAJOR(inode->i_sb->s_dev),
> > - MINOR(inode->i_sb->s_dev), inode->i_ino);
> > -#endif
> > } else {
> > seq_printf(f, "%d <none>:0 ", fl_pid);
> > }
>
> I don't get it. This is an immediate and non-back-compatible change to
> the format of /proc/locks. The only way this can avoid breaking things
> is if there are no programs or scripts in use by anyone which use
> this field. What am I missing here?

I'm a little surprised anything parses that file.

But, yes, looks like I can "yum install" lslk on Fedora 16, as an
example. Can't get it to do anything useful, though. Does it actually
work on any recent distro?

Perhaps safest would be to replace /proc/locks by another interface and
deprecate this one.

--b.