Lines Matching refs:real

104 static int ovl_real_fdget_meta(const struct file *file, struct fd *real,
111 real->flags = 0;
112 real->file = file->private_data;
128 if (unlikely(file_inode(real->file) != d_inode(realpath.dentry))) {
129 real->flags = FDPUT_FPUT;
130 real->file = ovl_open_realfile(file, &realpath);
132 return PTR_ERR_OR_ZERO(real->file);
136 if (unlikely((file->f_flags ^ real->file->f_flags) & ~OVL_OPEN_FLAGS))
137 return ovl_change_flags(real->file, file->f_flags);
142 static int ovl_real_fdget(const struct file *file, struct fd *real)
145 real->flags = 0;
146 real->file = ovl_dir_real_file(file, false);
148 return PTR_ERR_OR_ZERO(real->file);
151 return ovl_real_fdget_meta(file, real, false);
196 struct fd real;
201 * The two special cases below do not need to involve real fs,
212 ret = ovl_real_fdget(file, &real);
218 * through copy up and modified on read/write, but only real
219 * fs knows how to SEEK_HOLE/SEEK_DATA and real fs may impose
221 * files, so we use the real file to perform seeks.
224 real.file->f_pos = file->f_pos;
227 ret = vfs_llseek(real.file, offset, whence);
230 file->f_pos = real.file->f_pos;
233 fdput(real);
316 struct fd real;
323 ret = ovl_real_fdget(file, &real);
329 !(real.file->f_mode & FMODE_CAN_ODIRECT))
334 ret = vfs_iter_read(real.file, iter, &iocb->ki_pos,
345 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file));
348 ret = vfs_iocb_iter_read(real.file, &aio_req->iocb, iter);
357 fdput(real);
366 struct fd real;
381 ret = ovl_real_fdget(file, &real);
387 !(real.file->f_mode & FMODE_CAN_ODIRECT))
401 file_start_write(real.file);
402 ret = vfs_iter_write(real.file, iter, &iocb->ki_pos,
404 file_end_write(real.file);
416 kiocb_clone(&aio_req->iocb, iocb, get_file(real.file));
421 ret = vfs_iocb_iter_write(real.file, &aio_req->iocb, iter);
429 fdput(real);
442 struct fd real;
445 ret = ovl_real_fdget(in, &real);
450 ret = vfs_splice_read(real.file, ppos, pipe, len, flags);
454 fdput(real);
461 * and file_start_write(real.file) in ovl_write_iter().
464 * the real file.
469 struct fd real;
481 ret = ovl_real_fdget(out, &real);
486 file_start_write(real.file);
488 ret = iter_file_splice_write(pipe, real.file, ppos, len, flags);
490 file_end_write(real.file);
494 fdput(real);
504 struct fd real;
512 ret = ovl_real_fdget_meta(file, &real, !datasync);
517 if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) {
519 ret = vfs_fsync_range(real.file, start, end, datasync);
523 fdput(real);
553 struct fd real;
564 ret = ovl_real_fdget(file, &real);
569 ret = vfs_fallocate(real.file, mode, offset, len);
575 fdput(real);
585 struct fd real;
589 ret = ovl_real_fdget(file, &real);
594 ret = vfs_fadvise(real.file, offset, len, advice);
597 fdput(real);
705 struct fd real;
709 err = ovl_real_fdget(file, &real);
713 if (real.file->f_op->flush) {
715 err = real.file->f_op->flush(real.file, id);
718 fdput(real);