]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libmount: add mnt_table_find_devno()
authorKarel Zak <kzak@redhat.com>
Wed, 25 Apr 2012 07:49:50 +0000 (09:49 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 25 Apr 2012 07:49:50 +0000 (09:49 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
libmount/docs/libmount-sections.txt
libmount/src/libmount.h.in
libmount/src/libmount.sym
libmount/src/tab.c

index c29232374dfabedabc85088dd42f3743164357d0..1b9597387c0564faf4741ffdabbddfbe3e44bacd 100644 (file)
@@ -267,6 +267,7 @@ mnt_reset_table
 mnt_new_table_from_dir
 mnt_new_table_from_file
 mnt_table_add_fs
+mnt_table_find_devno
 mnt_table_find_next_fs
 mnt_table_find_pair
 mnt_table_find_source
index c88722a9d7a49d37c3f7e404119e24f2593ee623..5c5edbba6073291c25df0c04d39a85eeebd8be8d 100644 (file)
@@ -335,6 +335,8 @@ extern struct libmnt_fs *mnt_table_find_source(struct libmnt_table *tb,
 extern struct libmnt_fs *mnt_table_find_pair(struct libmnt_table *tb,
                                const char *source,
                                const char *target, int direction);
+extern struct libmnt_fs *mnt_table_find_devno(struct libmnt_table *tb,
+                               dev_t devno, int direction);
 
 extern int mnt_table_find_next_fs(struct libmnt_table *tb,
                        struct libmnt_iter *itr,
index 4db8b12c6d14be7a3aa88551a26c1d2cef760725..ca7a305cc680029110cb861a25bdf199db643cad 100644 (file)
@@ -235,6 +235,7 @@ global:
        mnt_context_is_loopdel;
        mnt_context_is_nocanonicalize;
        mnt_context_is_nohelpers;
+       mnt_table_find_devno;
        mnt_table_parse_swaps;
        mnt_get_swaps_path;
        mnt_fs_get_swaptype;
index b2662d5ae1c2a890319c8d4d345ba1266ea77712..9c41c99a2c0c94f3a92ea4e18bd11f6ca12ddc57 100644 (file)
@@ -703,6 +703,40 @@ struct libmnt_fs *mnt_table_find_pair(struct libmnt_table *tb, const char *sourc
        return NULL;
 }
 
+/**
+ * mnt_table_find_devno
+ * @tb: /proc/self/mountinfo
+ * @devno: device number
+ * @direction: MNT_ITER_{FORWARD,BACKWARD}
+ *
+ * Note that zero could be valid device number for root pseudo filesystem (e.g.
+ * tmpfs).
+ *
+ * Returns: a tab entry or NULL.
+ */
+struct libmnt_fs *mnt_table_find_devno(struct libmnt_table *tb,
+                                      dev_t devno, int direction)
+{
+       struct libmnt_fs *fs = NULL;
+       struct libmnt_iter itr;
+
+       assert(tb);
+
+       if (!tb)
+               return NULL;
+
+       DBG(TAB, mnt_debug_h(tb, "lookup DEVNO: %d", (int) devno));
+
+       mnt_reset_iter(&itr, direction);
+
+       while(mnt_table_next_fs(tb, &itr, &fs) == 0) {
+               if (mnt_fs_get_devno(fs) == devno)
+                       return fs;
+       }
+
+       return NULL;
+}
+
 /*
  * tb: /proc/self/mountinfo
  * fs: filesystem