Lines Matching refs:real

95 static int ovl_real_fdget_meta(const struct file *file, struct fd *real,
102 real->flags = 0;
103 real->file = file->private_data;
119 if (unlikely(file_inode(real->file) != d_inode(realpath.dentry))) {
120 real->flags = FDPUT_FPUT;
121 real->file = ovl_open_realfile(file, &realpath);
123 return PTR_ERR_OR_ZERO(real->file);
127 if (unlikely((file->f_flags ^ real->file->f_flags) & ~OVL_OPEN_FLAGS))
128 return ovl_change_flags(real->file, file->f_flags);
133 static int ovl_real_fdget(const struct file *file, struct fd *real)
136 real->flags = 0;
137 real->file = ovl_dir_real_file(file, false);
139 return PTR_ERR_OR_ZERO(real->file);
142 return ovl_real_fdget_meta(file, real, false);
187 struct fd real;
192 * The two special cases below do not need to involve real fs,
203 ret = ovl_real_fdget(file, &real);
209 * through copy up and modified on read/write, but only real
210 * fs knows how to SEEK_HOLE/SEEK_DATA and real fs may impose
212 * files, so we use the real file to perform seeks.
215 real.file->f_pos = file->f_pos;
218 ret = vfs_llseek(real.file, offset, whence);
221 file->f_pos = real.file->f_pos;
224 fdput(real);
266 struct fd real;
277 ret = ovl_real_fdget(file, &real);
281 ret = backing_file_read_iter(real.file, iter, iocb, iocb->ki_flags,
283 fdput(real);
292 struct fd real;
308 ret = ovl_real_fdget(file, &real);
320 ret = backing_file_write_iter(real.file, iter, iocb, ifl, &ctx);
321 fdput(real);
333 struct fd real;
341 ret = ovl_real_fdget(in, &real);
345 ret = backing_file_splice_read(real.file, ppos, pipe, len, flags, &ctx);
346 fdput(real);
354 * and file_start_write(real.file) in ovl_write_iter().
357 * the real file.
362 struct fd real;
375 ret = ovl_real_fdget(out, &real);
379 ret = backing_file_splice_write(pipe, real.file, ppos, len, flags, &ctx);
380 fdput(real);
390 struct fd real;
398 ret = ovl_real_fdget_meta(file, &real, !datasync);
403 if (file_inode(real.file) == ovl_inode_upper(file_inode(file))) {
405 ret = vfs_fsync_range(real.file, start, end, datasync);
409 fdput(real);
429 struct fd real;
440 ret = ovl_real_fdget(file, &real);
445 ret = vfs_fallocate(real.file, mode, offset, len);
451 fdput(real);
461 struct fd real;
465 ret = ovl_real_fdget(file, &real);
470 ret = vfs_fadvise(real.file, offset, len, advice);
473 fdput(real);
581 struct fd real;
585 err = ovl_real_fdget(file, &real);
589 if (real.file->f_op->flush) {
591 err = real.file->f_op->flush(real.file, id);
594 fdput(real);