mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-03 15:55:38 +00:00
file: add alloc_file_pseudo_noaccount()
When we open block devices as files we want to make sure to not charge them against the open file limit of the caller as that can cause spurious failures. Link: https://lore.kernel.org/r/20240123-vfs-bdev-file-v2-1-adbd023e19cc@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
0873add0e0
commit
bac0a9e56e
2 changed files with 26 additions and 0 deletions
|
@ -357,6 +357,30 @@ struct file *alloc_file_pseudo(struct inode *inode, struct vfsmount *mnt,
|
|||
}
|
||||
EXPORT_SYMBOL(alloc_file_pseudo);
|
||||
|
||||
struct file *alloc_file_pseudo_noaccount(struct inode *inode,
|
||||
struct vfsmount *mnt, const char *name,
|
||||
int flags,
|
||||
const struct file_operations *fops)
|
||||
{
|
||||
int ret;
|
||||
struct path path;
|
||||
struct file *file;
|
||||
|
||||
ret = alloc_path_pseudo(name, inode, mnt, &path);
|
||||
if (ret)
|
||||
return ERR_PTR(ret);
|
||||
|
||||
file = alloc_empty_file_noaccount(flags, current_cred());
|
||||
if (IS_ERR(file)) {
|
||||
ihold(inode);
|
||||
path_put(&path);
|
||||
return file;
|
||||
}
|
||||
file_init_path(file, &path, fops);
|
||||
return file;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(alloc_file_pseudo_noaccount);
|
||||
|
||||
struct file *alloc_file_clone(struct file *base, int flags,
|
||||
const struct file_operations *fops)
|
||||
{
|
||||
|
|
|
@ -24,6 +24,8 @@ struct inode;
|
|||
struct path;
|
||||
extern struct file *alloc_file_pseudo(struct inode *, struct vfsmount *,
|
||||
const char *, int flags, const struct file_operations *);
|
||||
extern struct file *alloc_file_pseudo_noaccount(struct inode *, struct vfsmount *,
|
||||
const char *, int flags, const struct file_operations *);
|
||||
extern struct file *alloc_file_clone(struct file *, int flags,
|
||||
const struct file_operations *);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue