Lines Matching full:real
108 static int ovl_real_fdget_meta(const struct file *file, struct fd *real, in ovl_real_fdget_meta() argument
114 real->flags = 0; in ovl_real_fdget_meta()
115 real->file = file->private_data; in ovl_real_fdget_meta()
123 if (unlikely(file_inode(real->file) != realinode)) { in ovl_real_fdget_meta()
124 real->flags = FDPUT_FPUT; in ovl_real_fdget_meta()
125 real->file = ovl_open_realfile(file, realinode); in ovl_real_fdget_meta()
127 return PTR_ERR_OR_ZERO(real->file); in ovl_real_fdget_meta()
131 if (unlikely((file->f_flags ^ real->file->f_flags) & ~OVL_OPEN_FLAGS)) in ovl_real_fdget_meta()
132 return ovl_change_flags(real->file, file->f_flags); in ovl_real_fdget_meta()
137 static int ovl_real_fdget(const struct file *file, struct fd *real) in ovl_real_fdget() argument
140 real->flags = 0; in ovl_real_fdget()
141 real->file = ovl_dir_real_file(file, false); in ovl_real_fdget()
143 return PTR_ERR_OR_ZERO(real->file); in ovl_real_fdget()
146 return ovl_real_fdget_meta(file, real, false); in ovl_real_fdget()
180 struct fd real; in ovl_llseek() local
185 * The two special cases below do not need to involve real fs, in ovl_llseek()
196 ret = ovl_real_fdget(file, &real); in ovl_llseek()
202 * through copy up and modified on read/write, but only real in ovl_llseek()
203 * fs knows how to SEEK_HOLE/SEEK_DATA and real fs may impose in ovl_llseek()
205 * files, so we use the real file to perform seeks. in ovl_llseek()
208 real.file->f_pos = file->f_pos; in ovl_llseek()
211 ret = vfs_llseek(real.file, offset, whence); in ovl_llseek()
214 file->f_pos = real.file->f_pos; in ovl_llseek()
217 fdput(real); in ovl_llseek()
300 struct fd real; in ovl_read_iter() local
307 ret = ovl_real_fdget(file, &real); in ovl_read_iter()
313 (!real.file->f_mapping->a_ops || in ovl_read_iter()
314 !real.file->f_mapping->a_ops->direct_IO)) in ovl_read_iter()
319 ret = vfs_iter_read(real.file, iter, &iocb->ki_pos, in ovl_read_iter()
329 real.flags = 0; in ovl_read_iter()
331 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file)); in ovl_read_iter()
334 ret = vfs_iocb_iter_read(real.file, &aio_req->iocb, iter); in ovl_read_iter()
343 fdput(real); in ovl_read_iter()
352 struct fd real; in ovl_write_iter() local
367 ret = ovl_real_fdget(file, &real); in ovl_write_iter()
373 (!real.file->f_mapping->a_ops || in ovl_write_iter()
374 !real.file->f_mapping->a_ops->direct_IO)) in ovl_write_iter()
382 file_start_write(real.file); in ovl_write_iter()
383 ret = vfs_iter_write(real.file, iter, &iocb->ki_pos, in ovl_write_iter()
385 file_end_write(real.file); in ovl_write_iter()
396 file_start_write(real.file); in ovl_write_iter()
398 __sb_writers_release(file_inode(real.file)->i_sb, in ovl_write_iter()
400 real.flags = 0; in ovl_write_iter()
402 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file)); in ovl_write_iter()
406 ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter); in ovl_write_iter()
414 fdput(real); in ovl_write_iter()
425 * and file_start_write(real.file) in ovl_write_iter().
428 * the real file.
433 struct fd real; in ovl_splice_write() local
446 ret = ovl_real_fdget(out, &real); in ovl_splice_write()
451 file_start_write(real.file); in ovl_splice_write()
453 ret = iter_file_splice_write(pipe, real.file, ppos, len, flags); in ovl_splice_write()
455 file_end_write(real.file); in ovl_splice_write()
459 fdput(real); in ovl_splice_write()
469 struct fd real; in ovl_fsync() local
477 ret = ovl_real_fdget_meta(file, &real, !datasync); in ovl_fsync()
482 if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) { in ovl_fsync()
484 ret = vfs_fsync_range(real.file, start, end, datasync); in ovl_fsync()
488 fdput(real); in ovl_fsync()
527 struct fd real; in ovl_fallocate() local
538 ret = ovl_real_fdget(file, &real); in ovl_fallocate()
543 ret = vfs_fallocate(real.file, mode, offset, len); in ovl_fallocate()
549 fdput(real); in ovl_fallocate()
559 struct fd real; in ovl_fadvise() local
563 ret = ovl_real_fdget(file, &real); in ovl_fadvise()
568 ret = vfs_fadvise(real.file, offset, len, advice); in ovl_fadvise()
571 fdput(real); in ovl_fadvise()
579 struct fd real; in ovl_real_ioctl() local
582 ret = ovl_real_fdget(file, &real); in ovl_real_ioctl()
586 ret = security_file_ioctl(real.file, cmd, arg); in ovl_real_ioctl()
592 ret = vfs_ioctl(real.file, cmd, arg); in ovl_real_ioctl()
595 fdput(real); in ovl_real_ioctl()