Lines Matching full:real
82 static int ovl_real_fdget_meta(const struct file *file, struct fd *real, in ovl_real_fdget_meta() argument
88 real->flags = 0; in ovl_real_fdget_meta()
89 real->file = file->private_data; in ovl_real_fdget_meta()
97 if (unlikely(file_inode(real->file) != realinode)) { in ovl_real_fdget_meta()
98 real->flags = FDPUT_FPUT; in ovl_real_fdget_meta()
99 real->file = ovl_open_realfile(file, realinode); in ovl_real_fdget_meta()
101 return PTR_ERR_OR_ZERO(real->file); in ovl_real_fdget_meta()
105 if (unlikely((file->f_flags ^ real->file->f_flags) & ~O_NOATIME)) in ovl_real_fdget_meta()
106 return ovl_change_flags(real->file, file->f_flags); in ovl_real_fdget_meta()
111 static int ovl_real_fdget(const struct file *file, struct fd *real) in ovl_real_fdget() argument
113 return ovl_real_fdget_meta(file, real, false); in ovl_real_fdget()
147 struct fd real; in ovl_llseek() local
152 * The two special cases below do not need to involve real fs, in ovl_llseek()
163 ret = ovl_real_fdget(file, &real); in ovl_llseek()
169 * through copy up and modified on read/write, but only real in ovl_llseek()
170 * fs knows how to SEEK_HOLE/SEEK_DATA and real fs may impose in ovl_llseek()
172 * files, so we use the real file to perform seeks. in ovl_llseek()
175 real.file->f_pos = file->f_pos; in ovl_llseek()
178 ret = vfs_llseek(real.file, offset, whence); in ovl_llseek()
181 file->f_pos = real.file->f_pos; in ovl_llseek()
184 fdput(real); in ovl_llseek()
231 struct fd real; in ovl_read_iter() local
238 ret = ovl_real_fdget(file, &real); in ovl_read_iter()
243 ret = vfs_iter_read(real.file, iter, &iocb->ki_pos, in ovl_read_iter()
249 fdput(real); in ovl_read_iter()
258 struct fd real; in ovl_write_iter() local
272 ret = ovl_real_fdget(file, &real); in ovl_write_iter()
277 file_start_write(real.file); in ovl_write_iter()
278 ret = vfs_iter_write(real.file, iter, &iocb->ki_pos, in ovl_write_iter()
280 file_end_write(real.file); in ovl_write_iter()
286 fdput(real); in ovl_write_iter()
296 struct fd real; in ovl_fsync() local
300 ret = ovl_real_fdget_meta(file, &real, !datasync); in ovl_fsync()
305 if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) { in ovl_fsync()
307 ret = vfs_fsync_range(real.file, start, end, datasync); in ovl_fsync()
311 fdput(real); in ovl_fsync()
350 struct fd real; in ovl_fallocate() local
354 ret = ovl_real_fdget(file, &real); in ovl_fallocate()
359 ret = vfs_fallocate(real.file, mode, offset, len); in ovl_fallocate()
365 fdput(real); in ovl_fallocate()
372 struct fd real; in ovl_fadvise() local
376 ret = ovl_real_fdget(file, &real); in ovl_fadvise()
381 ret = vfs_fadvise(real.file, offset, len, advice); in ovl_fadvise()
384 fdput(real); in ovl_fadvise()
392 struct fd real; in ovl_real_ioctl() local
396 ret = ovl_real_fdget(file, &real); in ovl_real_ioctl()
401 ret = vfs_ioctl(real.file, cmd, arg); in ovl_real_ioctl()
404 fdput(real); in ovl_real_ioctl()