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()
293 struct fd real; in ovl_read_iter() local
300 ret = ovl_real_fdget(file, &real); in ovl_read_iter()
306 ret = vfs_iter_read(real.file, iter, &iocb->ki_pos, in ovl_read_iter()
316 aio_req->fd = real; in ovl_read_iter()
317 real.flags = 0; in ovl_read_iter()
319 kiocb_clone(&aio_req->iocb, iocb, real.file); in ovl_read_iter()
321 ret = vfs_iocb_iter_read(real.file, &aio_req->iocb, iter); in ovl_read_iter()
329 fdput(real); in ovl_read_iter()
338 struct fd real; in ovl_write_iter() local
353 ret = ovl_real_fdget(file, &real); in ovl_write_iter()
362 file_start_write(real.file); in ovl_write_iter()
363 ret = vfs_iter_write(real.file, iter, &iocb->ki_pos, in ovl_write_iter()
365 file_end_write(real.file); in ovl_write_iter()
376 file_start_write(real.file); in ovl_write_iter()
378 __sb_writers_release(file_inode(real.file)->i_sb, in ovl_write_iter()
380 aio_req->fd = real; in ovl_write_iter()
381 real.flags = 0; in ovl_write_iter()
383 kiocb_clone(&aio_req->iocb, iocb, real.file); in ovl_write_iter()
386 ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter); in ovl_write_iter()
392 fdput(real); in ovl_write_iter()
405 struct fd real; in ovl_splice_read() local
408 ret = ovl_real_fdget(in, &real); in ovl_splice_read()
413 ret = generic_file_splice_read(real.file, ppos, pipe, len, flags); in ovl_splice_read()
417 fdput(real); in ovl_splice_read()
425 struct fd real; in ovl_splice_write() local
429 ret = ovl_real_fdget(out, &real); in ovl_splice_write()
434 ret = iter_file_splice_write(pipe, real.file, ppos, len, flags); in ovl_splice_write()
438 fdput(real); in ovl_splice_write()
444 struct fd real; in ovl_fsync() local
451 ret = ovl_real_fdget_meta(file, &real, !datasync); in ovl_fsync()
456 if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) { in ovl_fsync()
458 ret = vfs_fsync_range(real.file, start, end, datasync); in ovl_fsync()
462 fdput(real); in ovl_fsync()
501 struct fd real; in ovl_fallocate() local
505 ret = ovl_real_fdget(file, &real); in ovl_fallocate()
510 ret = vfs_fallocate(real.file, mode, offset, len); in ovl_fallocate()
516 fdput(real); in ovl_fallocate()
523 struct fd real; in ovl_fadvise() local
527 ret = ovl_real_fdget(file, &real); in ovl_fadvise()
532 ret = vfs_fadvise(real.file, offset, len, advice); in ovl_fadvise()
535 fdput(real); in ovl_fadvise()
543 struct fd real; in ovl_real_ioctl() local
547 ret = ovl_real_fdget(file, &real); in ovl_real_ioctl()
552 ret = security_file_ioctl(real.file, cmd, arg); in ovl_real_ioctl()
554 ret = vfs_ioctl(real.file, cmd, arg); in ovl_real_ioctl()
557 fdput(real); in ovl_real_ioctl()