Christian Brauner f3a608827d
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>
2024-02-25 12:05:21 +01:00
..
2024-01-19 09:10:23 -08:00
2024-01-11 20:11:35 -08:00
2024-01-11 13:58:04 -08:00
2024-01-19 09:10:23 -08:00
2024-01-11 20:11:35 -08:00
2024-02-25 12:05:21 +01:00
2023-11-07 12:11:26 -08:00
2024-01-19 09:10:23 -08:00
2024-02-25 12:05:21 +01:00
2023-11-07 12:11:26 -08:00
2024-01-08 11:11:51 -08:00
2024-01-10 10:17:23 -08:00
2023-12-29 11:58:34 -08:00
2024-02-25 12:05:21 +01:00
2024-01-10 17:44:36 -08:00
2024-01-19 09:10:23 -08:00
2024-01-19 09:10:23 -08:00
2024-01-11 20:11:35 -08:00
2024-01-10 17:44:36 -08:00
2023-11-07 12:11:26 -08:00
2024-01-11 20:11:35 -08:00
2024-01-10 17:44:36 -08:00
2024-02-25 12:05:21 +01:00
2024-01-06 23:49:50 +01:00
2024-01-11 10:07:29 -08:00
2024-02-25 12:05:21 +01:00
2024-01-10 17:44:36 -08:00
2023-12-21 13:17:54 +01:00
2023-10-30 19:28:19 -10:00
2023-10-30 19:28:19 -10:00
2024-01-11 20:11:35 -08:00
2023-12-12 14:24:14 +01:00
2024-01-11 20:00:22 -08:00
2024-01-11 20:11:35 -08:00
2024-01-19 09:10:23 -08:00
2024-01-11 20:11:35 -08:00
2024-01-19 09:10:23 -08:00
2023-11-25 02:49:43 -05:00
2024-01-08 11:11:51 -08:00
2024-01-10 17:44:36 -08:00
2024-01-08 10:57:34 -08:00
2024-02-25 12:05:21 +01:00
2024-01-17 13:03:37 -08:00