diag(kernel): log non-ENOENT openat + openat_into failures

This commit is contained in:
2026-07-15 19:09:12 +09:00
parent b5a7bf5581
commit 22de233c1a
+31 -1
View File
@@ -90,6 +90,7 @@ pub fn openat(
let new_description = {
let scheme = scheme::get_scheme(token.token(), scheme_id)?;
let dbg_uid = caller_ctx.uid;
let res = scheme.kopenat(
number,
StrOrBytes::from_str(&path_buf),
@@ -99,6 +100,24 @@ pub fn openat(
token,
);
// Red Bear diagnostic (2026-07-15): log non-ENOENT open failures to
// trace getty's EACCES on /scheme/rand and redoxfs's pipe open failure.
if let Err(ref e) = res {
if e.errno != ENOENT {
let pid = context::current().read(token.token()).pid;
error!(
"openat_err: pid={} base_scheme={} base_number={} path={:?} flags={:#x} uid={} errno={}",
pid,
scheme_id.get(),
number,
path_buf.as_str(),
flags,
dbg_uid,
e.errno
);
}
}
match res? {
OpenResult::SchemeLocal(number, internal_flags) => {
FileDescriptor {
@@ -148,9 +167,20 @@ pub fn openat_into(
(desc.scheme, desc.number)
};
let caller_ctx = context::current().read(token.token()).caller_ctx();
let dbg_uid = caller_ctx.uid;
let new_description = {
let scheme = scheme::get_scheme(token.token(), scheme_id)?;
let res = scheme.kopenat(number, StrOrBytes::from_str(&path_buf), flags, fcntl_flags, caller_ctx, token)?;
let res0 = scheme.kopenat(number, StrOrBytes::from_str(&path_buf), flags, fcntl_flags, caller_ctx, token);
if let Err(ref e) = res0 {
if e.errno != ENOENT {
let pid = context::current().read(token.token()).pid;
error!(
"openat_into_err: pid={} base_scheme={} base_number={} path={:?} flags={:#x} uid={} errno={}",
pid, scheme_id.get(), number, path_buf.as_str(), flags, dbg_uid, e.errno
);
}
}
let res = res0?;
match res {
OpenResult::SchemeLocal(number, internal_flags) => {
FileDescriptor {