locks: make /proc/locks show IS_FILE_PVT locks as type "FLPVT"
authorJeff Layton <jlayton@redhat.com>
Mon, 3 Feb 2014 17:13:09 +0000 (12:13 -0500)
committerJeff Layton <jlayton@redhat.com>
Mon, 31 Mar 2014 12:24:42 +0000 (08:24 -0400)
In a later patch, we'll be adding a new type of lock that's owned by
the struct file instead of the files_struct. Those sorts of locks
will be flagged with a new FL_FILE_PVT flag.

Report these types of locks as "FLPVT" in /proc/locks to distinguish
them from "classic" POSIX locks.

Acked-by: J. Bruce Fields <bfields@fieldses.org>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
fs/locks.c
include/linux/fs.h

index 4d4e790150e02d985477857939e0bb6db3bdae69..0e1f0df8de12458ca09f366922d77ba1ca2448af 100644 (file)
 #define IS_POSIX(fl)   (fl->fl_flags & FL_POSIX)
 #define IS_FLOCK(fl)   (fl->fl_flags & FL_FLOCK)
 #define IS_LEASE(fl)   (fl->fl_flags & (FL_LEASE|FL_DELEG))
+#define IS_FILE_PVT(fl)        (fl->fl_flags & FL_FILE_PVT)
 
 static bool lease_breaking(struct file_lock *fl)
 {
@@ -2313,8 +2314,14 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
 
        seq_printf(f, "%lld:%s ", id, pfx);
        if (IS_POSIX(fl)) {
-               seq_printf(f, "%6s %s ",
-                            (fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ",
+               if (fl->fl_flags & FL_ACCESS)
+                       seq_printf(f, "ACCESS");
+               else if (IS_FILE_PVT(fl))
+                       seq_printf(f, "FLPVT ");
+               else
+                       seq_printf(f, "POSIX ");
+
+               seq_printf(f, " %s ",
                             (inode == NULL) ? "*NOINODE*" :
                             mandatory_lock(inode) ? "MANDATORY" : "ADVISORY ");
        } else if (IS_FLOCK(fl)) {
index 7527d96913d35e5e56952b9cb5555dac4a7258a5..5ddeb8de5e7787a2b2d894fadb6b099f8ba0df58 100644 (file)
@@ -888,6 +888,7 @@ static inline int file_check_writeable(struct file *filp)
 #define FL_SLEEP       128     /* A blocking lock */
 #define FL_DOWNGRADE_PENDING   256 /* Lease is being downgraded */
 #define FL_UNLOCK_PENDING      512 /* Lease is being broken */
+#define FL_FILE_PVT    1024    /* lock is private to the file */
 
 /*
  * Special return value from posix_lock_file() and vfs_lock_file() for