fix(open): use FILETABLE-aware openat_into_posix to keep fd tables in sync
This commit is contained in:
+2
-8
@@ -610,13 +610,8 @@ pub fn open<T: AsRef<str>>(path: T, flags: usize) -> Result<usize> {
|
|||||||
let _siglock = tmp_disable_signals();
|
let _siglock = tmp_disable_signals();
|
||||||
|
|
||||||
let ns_fd = crate::current_namespace_fd()?;
|
let ns_fd = crate::current_namespace_fd()?;
|
||||||
|
let fcntl_flags = flags & syscall::O_FCNTL_MASK;
|
||||||
let posix_fd = syscall::openat(
|
let posix_fd = openat_into_posix(ns_fd, path.as_ref(), flags, fcntl_flags);
|
||||||
ns_fd,
|
|
||||||
path.as_ref(),
|
|
||||||
flags,
|
|
||||||
0,
|
|
||||||
);
|
|
||||||
if let Err(ref e) = posix_fd {
|
if let Err(ref e) = posix_fd {
|
||||||
let p = path.as_ref();
|
let p = path.as_ref();
|
||||||
let mut buf = [0u8; 256];
|
let mut buf = [0u8; 256];
|
||||||
@@ -640,7 +635,6 @@ pub fn open<T: AsRef<str>>(path: T, flags: usize) -> Result<usize> {
|
|||||||
let _ = syscall::write(2, &buf[..len]);
|
let _ = syscall::write(2, &buf[..len]);
|
||||||
}
|
}
|
||||||
let posix_fd = posix_fd?;
|
let posix_fd = posix_fd?;
|
||||||
register_external_fd(posix_fd)?;
|
|
||||||
|
|
||||||
Ok(posix_fd)
|
Ok(posix_fd)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user