qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to check when "raw" format driver uses a "regular" file?


From: Philippe Mathieu-Daudé
Subject: Re: How to check when "raw" format driver uses a "regular" file?
Date: Mon, 25 Jan 2021 17:01:51 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0

On 1/25/21 4:43 PM, Kevin Wolf wrote:
> 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.

Sorry for the confusion and thanks for the quick answer :)

My question is confused because the problem is not clear to me...

> At which level is the code where you think you need to make this
> distinction?

(see below)

> 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?

Well, maybe this is more an emulation problem rather than a block
one. But system emulation consumes block layer :)

The problem is when emulating devices such NOR Flash (parallel mapping
or SD cards) we expect the block driver being a plain file (either "raw"
format or another) but a "regular" file. When an user passes something
else like a block device, odd things happen.

Well, I guess I self-restricted my question to device emulation. So
in the cases mentioned I would like to add a check in sd_realize()/
pflash_cfi0?_realize() for regular file when a block drive is provided.

Description of problematic user case:

* -pflash /dev/sda
* -sd /dev/mmcblk0

User runs emulation on top of hardware (maybe like passthru?), and
expect underlying block to be in correct state out of QEMU.

Thanks,

Phil.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]