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