diff --git a/src/context/file.rs b/src/context/file.rs
index 51b25476cf988411a4e6d482b09f58eed9cdf08b..a274ef74faf5de352f911e7b468a83a54de46c77 100644
--- a/src/context/file.rs
+++ b/src/context/file.rs
@@ -3,12 +3,14 @@
 use alloc::sync::Arc;
 use crate::event;
 use spin::RwLock;
-use crate::scheme::{self, SchemeId};
+use crate::scheme::{self, SchemeNamespace, SchemeId};
 use crate::syscall::error::{Result, Error, EBADF};
 
 /// A file description
 #[derive(Debug)]
 pub struct FileDescription {
+    /// The namespace the file was opened from (used for debugging)
+    pub namespace: SchemeNamespace,
     /// The scheme that this file refers to
     pub scheme: SchemeId,
     /// The number the scheme uses to refer to this file
diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs
index 0e71fea86811fdef75d714363067217a43720138..00276f726fbecf4f097eb58a093b5b960131de26 100644
--- a/src/syscall/fs.rs
+++ b/src/syscall/fs.rs
@@ -142,6 +142,7 @@ pub fn open(path: &[u8], flags: usize) -> Result<FileHandle> {
         let context = context_lock.read();
         return context.add_file(FileDescriptor {
             description: Arc::new(RwLock::new(FileDescription {
+                namespace: scheme_ns,
                 scheme: scheme_id,
                 number: file_id,
                 flags: flags & !O_CLOEXEC,
@@ -163,6 +164,7 @@ pub fn pipe2(fds: &mut [usize], flags: usize) -> Result<usize> {
 
         let read_fd = context.add_file(FileDescriptor {
             description: Arc::new(RwLock::new(FileDescription {
+                namespace: context.ens,
                 scheme: scheme_id,
                 number: read_id,
                 flags: O_RDONLY | flags & !O_ACCMODE & !O_CLOEXEC,
@@ -172,6 +174,7 @@ pub fn pipe2(fds: &mut [usize], flags: usize) -> Result<usize> {
 
         let write_fd = context.add_file(FileDescriptor {
             description: Arc::new(RwLock::new(FileDescription {
+                namespace: context.ens,
                 scheme: scheme_id,
                 number: write_id,
                 flags: O_WRONLY | flags & !O_ACCMODE & !O_CLOEXEC,
@@ -293,6 +296,7 @@ fn duplicate_file(fd: FileHandle, buf: &[u8]) -> Result<FileDescriptor> {
 
         Ok(FileDescriptor {
             description: Arc::new(RwLock::new(FileDescription {
+                namespace: description.namespace,
                 scheme: description.scheme,
                 number: new_id,
                 flags: description.flags,