Am 25.01.2021 um 16:05 hat Philippe Mathieu-Daudé geschrieben: > Is it possible to restrict a block driver to a particular set of > options? In my case I'd like to restrict the raw driver to regular files. > > I noticed the NFS driver does it locally in nfs_client_open(), > and FUSE has is_regular_file() -- which is POSIX specific however. > > When a backend is a SCSI drive, the block layer provide the blk_is_sg() > method to test it. > 1/ Should I provide a similar blk_is_regular_file()? > > 2/ There is no oslib function to check for regular file, > should I add one too?
I find this question confusing because on one hand you're talking about block driver implementations like NFS, but on the other hand about SCSI devices, which are users, not implementations of block drivers. At which level is the code where you think you need to make this distinction? The other problem is that "is this a regular file?" is probably not what you're really interested in. The content of an image can be spread across several files (for example, consider backing files) or not use a local file descriptor at all (network protocol drivers), and block layer functions should ideally make sense for all drivers unless something can only possibly make sense for a single driver (blk_is_sg might be a case of this). I assume that you are interested in some specific property that regular files happen to provide. If at all possible, we shouldn't check for a specific backend type, but for capabilities or properties of a given block node. So what are you really trying to do here? Kevin