Lines Matching refs:open
34 static bool io_openat_force_async(struct io_open *open)
37 * Don't bother trying for O_TRUNC, O_CREAT, or O_TMPFILE open,
42 return open->how.flags & (O_TRUNC | O_CREAT | __O_TMPFILE);
47 struct io_open *open = io_kiocb_to_cmd(req, struct io_open);
56 /* open.how should be already initialised */
57 if (!(open->how.flags & O_PATH) && force_o_largefile())
58 open->how.flags |= O_LARGEFILE;
60 open->dfd = READ_ONCE(sqe->fd);
62 open->filename = getname(fname);
63 if (IS_ERR(open->filename)) {
64 ret = PTR_ERR(open->filename);
65 open->filename = NULL;
69 open->file_slot = READ_ONCE(sqe->file_index);
70 if (open->file_slot && (open->how.flags & O_CLOEXEC))
73 open->nofile = rlimit(RLIMIT_NOFILE);
75 if (io_openat_force_async(open))
82 struct io_open *open = io_kiocb_to_cmd(req, struct io_open);
86 open->how = build_open_how(flags, mode);
92 struct io_open *open = io_kiocb_to_cmd(req, struct io_open);
102 ret = copy_struct_from_user(&open->how, sizeof(open->how), how, len);
111 struct io_open *open = io_kiocb_to_cmd(req, struct io_open);
115 bool fixed = !!open->file_slot;
118 ret = build_open_flags(&open->how, &op);
122 resolve_nonblock = open->how.resolve & RESOLVE_CACHED;
124 WARN_ON_ONCE(io_openat_force_async(open));
130 ret = __get_unused_fd_flags(open->how.flags, open->nofile);
135 file = do_filp_open(open->dfd, open->filename, &op);
160 open->file_slot);
162 putname(open->filename);
177 struct io_open *open = io_kiocb_to_cmd(req, struct io_open);
179 if (open->filename)
180 putname(open->filename);