diff --git a/glnx-fdio.c b/glnx-fdio.c
index 7b734ff6f1e6e85f72937bd3916de631a1ce6bb8..1dc5ffd1765f5f772d1e58adb4cbdcc782e9fc31 100644
--- a/glnx-fdio.c
+++ b/glnx-fdio.c
@@ -277,17 +277,19 @@ glnx_open_tmpfile_linkable_at (int dfd,
   return open_tmpfile_core (dfd, subpath, flags, out_tmpf, error);
 }
 
+
 /* A variant of `glnx_open_tmpfile_linkable_at()` which doesn't support linking.
- * Useful for true temporary storage. The fd will be allocated in /var/tmp to
- * ensure maximum storage space.
+ * Useful for true temporary storage. The fd will be allocated in the specified
+ * directory.
  */
 gboolean
-glnx_open_anonymous_tmpfile (int          flags,
-                             GLnxTmpfile *out_tmpf,
-                             GError     **error)
+glnx_open_anonymous_tmpfile_full (int          flags,
+                                  const char  *dir,
+                                  GLnxTmpfile *out_tmpf,
+                                  GError     **error)
 {
   /* Add in O_EXCL */
-  if (!open_tmpfile_core (AT_FDCWD, "/var/tmp", flags | O_EXCL, out_tmpf, error))
+  if (!open_tmpfile_core (AT_FDCWD, dir, flags | O_EXCL, out_tmpf, error))
     return FALSE;
   if (out_tmpf->path)
     {
@@ -299,6 +301,21 @@ glnx_open_anonymous_tmpfile (int          flags,
   return TRUE;
 }
 
+/* A variant of `glnx_open_tmpfile_linkable_at()` which doesn't support linking.
+ * Useful for true temporary storage. The fd will be allocated in /var/tmp to
+ * ensure maximum storage space.
+ *
+ * If you need the file on a specific filesystem use glnx_open_anonymous_tmpfile_full()
+ * which lets you pass a directory.
+ */
+gboolean
+glnx_open_anonymous_tmpfile (int          flags,
+                             GLnxTmpfile *out_tmpf,
+                             GError     **error)
+{
+  return glnx_open_anonymous_tmpfile_full (flags, "/var/tmp", out_tmpf, error);
+}
+
 /* Use this after calling glnx_open_tmpfile_linkable_at() to give
  * the file its final name (link into place).
  */
diff --git a/glnx-fdio.h b/glnx-fdio.h
index c0a7cc1de847e0bc9ca2f1c3306eb413055701d7..d97ea36688d7e76a9173a9cce4fa1890c5304716 100644
--- a/glnx-fdio.h
+++ b/glnx-fdio.h
@@ -83,6 +83,13 @@ glnx_open_anonymous_tmpfile (int flags,
                              GLnxTmpfile *out_tmpf,
                              GError **error);
 
+gboolean
+glnx_open_anonymous_tmpfile_full (int flags,
+                                  const char *dir,
+                                  GLnxTmpfile *out_tmpf,
+                                  GError **error);
+
+
 gboolean
 glnx_open_tmpfile_linkable_at (int dfd,
                                const char *subpath,