]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: add mnt_fs_is_deleted()
authorKarel Zak <kzak@redhat.com>
Wed, 24 Nov 2021 11:20:15 +0000 (12:20 +0100)
committerKarel Zak <kzak@redhat.com>
Wed, 24 Nov 2021 11:20:15 +0000 (12:20 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/docs/libmount-sections.txt
libmount/src/fs.c
libmount/src/libmount.h.in
libmount/src/libmount.sym
libmount/src/mountP.h
libmount/src/tab_parse.c

index 097e2f06630e986f1379980d88e51afb4612b70b..7961dd420252b8321a8b0d8b021f46464fde5d36 100644 (file)
@@ -246,6 +246,7 @@ mnt_fs_get_userdata
 mnt_fs_get_user_options
 mnt_fs_get_vfs_options
 mnt_fs_get_vfs_options_all
+mnt_fs_is_deleted
 mnt_fs_is_kernel
 mnt_fs_is_netfs
 mnt_fs_is_pseudofs
index b44d310ee2b7cfefb170e4810194df92452636d1..163f70bd3a66c650e4913aece6b90f854a296015 100644 (file)
@@ -651,6 +651,17 @@ int mnt_fs_is_regularfs(struct libmnt_fs *fs)
                 || mnt_fs_is_swaparea(fs));
 }
 
+/**
+ * mnt_fs_is_deleted:
+ * @fs: filesystem
+ *
+ * Returns: 1 if the filesystem target is a marked as deleted by kernel
+ */
+int mnt_fs_is_deleted(struct libmnt_fs *fs)
+{
+       return mnt_fs_get_flags(fs) & MNT_FS_DELETED;
+}
+
 /**
  * mnt_fs_get_fstype:
  * @fs: fstab/mtab/mountinfo entry pointer
index 3bcf746828a4c3437793bd5ab969012e8959f100..a96778754c90494859a1019a754c67a9916b1bb3 100644 (file)
@@ -512,6 +512,7 @@ extern int mnt_fs_match_options(struct libmnt_fs *fs, const char *options);
 extern int mnt_fs_print_debug(struct libmnt_fs *fs, FILE *file);
 
 extern int mnt_fs_is_kernel(struct libmnt_fs *fs);
+extern int mnt_fs_is_deleted(struct libmnt_fs *fs);
 extern int mnt_fs_is_swaparea(struct libmnt_fs *fs);
 extern int mnt_fs_is_netfs(struct libmnt_fs *fs);
 extern int mnt_fs_is_pseudofs(struct libmnt_fs *fs);
index aa96091b1abcb4c5e5b871037984a86f61ade774..15b738394c7000c1532d18c0fe96b0bea16d302a 100644 (file)
@@ -365,4 +365,5 @@ MOUNT_2_37 {
 
 MOUNT_2_38 {
        mnt_fs_is_regularfs;
+       mnt_fs_is_deleted;
 } MOUNT_2_37;
index b47640daac54e9ff1cfd60d913cd27b9623815e0..a4e1c6206984fcfbd45a9ea126455b35c05e4db4 100644 (file)
@@ -228,6 +228,7 @@ struct libmnt_fs {
 #define MNT_FS_SWAP    (1 << 3) /* swap device */
 #define MNT_FS_KERNEL  (1 << 4) /* data from /proc/{mounts,self/mountinfo} */
 #define MNT_FS_MERGED  (1 << 5) /* already merged data from /run/mount/utab */
+#define MNT_FS_DELETED (1 << 6) /* target path in mountinfo contains "(deleted)" */
 
 /*
  * mtab/fstab/mountinfo file
index 917779ab6d92d4362d0681646bfa229149072cc3..d94233ca9f63e2ffd401edb4196b93465334df3d 100644 (file)
@@ -229,8 +229,10 @@ static int mnt_parse_mountinfo_line(struct libmnt_fs *fs, const char *s)
 
        /* remove "\040(deleted)" suffix */
        p = (char *) endswith(fs->target, PATH_DELETED_SUFFIX);
-       if (p && *p)
+       if (p && *p) {
                *p = '\0';
+               fs->flags |= MNT_FS_DELETED;
+       }
 
        s = skip_separator(s);