-
- Downloads
bdev: open block device as files
Add two new helpers to allow opening block devices as files. This is not the final infrastructure. This still opens the block device before opening a struct a file. Until we have removed all references to struct bdev_handle we can't switch the order: * Introduce blk_to_file_flags() to translate from block specific to flags usable to pen a new file. * Introduce bdev_file_open_by_{dev,path}(). * Introduce temporary sb_bdev_handle() helper to retrieve a struct bdev_handle from a block device file and update places that directly reference struct bdev_handle to rely on it. * Don't count block device openes against the number of open files. A bdev_file_open_by_{dev,path}() file is never installed into any file descriptor table. One idea that came to mind was to use kernel_tmpfile_open() which would require us to pass a path and it would then call do_dentry_open() going through the regular fops->open::blkdev_open() path. But then we're back to the problem of routing block specific flags such as BLK_OPEN_RESTRICT_WRITES through the open path and would have to waste FMODE_* flags every time we add a new one. With this we can avoid using a flag bit and we have more leeway in how we open block devices from bdev_open_by_{dev,path}(). Link: https://lore.kernel.org/r/20240123-vfs-bdev-file-v2-1-adbd023e19cc@kernel.org Signed-off-by:Christian Brauner <brauner@kernel.org>
Showing
- block/bdev.c 97 additions, 4 deletionsblock/bdev.c
- fs/cramfs/inode.c 1 addition, 1 deletionfs/cramfs/inode.c
- fs/f2fs/super.c 1 addition, 1 deletionfs/f2fs/super.c
- fs/jfs/jfs_logmgr.c 1 addition, 1 deletionfs/jfs/jfs_logmgr.c
- fs/romfs/super.c 1 addition, 1 deletionfs/romfs/super.c
- fs/super.c 9 additions, 9 deletionsfs/super.c
- fs/xfs/xfs_super.c 1 addition, 1 deletionfs/xfs/xfs_super.c
- include/linux/blkdev.h 7 additions, 0 deletionsinclude/linux/blkdev.h
- include/linux/fs.h 8 additions, 2 deletionsinclude/linux/fs.h
Loading
Please register or sign in to comment