|
@@ -191,6 +191,32 @@ typedef __uint64_t __psunsigned_t;
|
|
|
#define MAX(a,b) (max(a,b))
|
|
|
#define howmany(x, y) (((x)+((y)-1))/(y))
|
|
|
|
|
|
+/* Kernel uid/gid conversion. These are used to convert to/from the on disk
|
|
|
+ * uid_t/gid_t types to the kuid_t/kgid_t types that the kernel uses internally.
|
|
|
+ * The conversion here is type only, the value will remain the same since we
|
|
|
+ * are converting to the init_user_ns. The uid is later mapped to a particular
|
|
|
+ * user namespace value when crossing the kernel/user boundary.
|
|
|
+ */
|
|
|
+static inline __uint32_t xfs_kuid_to_uid(kuid_t uid)
|
|
|
+{
|
|
|
+ return from_kuid(&init_user_ns, uid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline kuid_t xfs_uid_to_kuid(__uint32_t uid)
|
|
|
+{
|
|
|
+ return make_kuid(&init_user_ns, uid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline __uint32_t xfs_kgid_to_gid(kgid_t gid)
|
|
|
+{
|
|
|
+ return from_kgid(&init_user_ns, gid);
|
|
|
+}
|
|
|
+
|
|
|
+static inline kgid_t xfs_gid_to_kgid(__uint32_t gid)
|
|
|
+{
|
|
|
+ return make_kgid(&init_user_ns, gid);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Various platform dependent calls that don't fit anywhere else
|
|
|
*/
|