[libvirt] [PATCH 1/8] util: Prepare helpers for unpriv_sgio setting

Osier Yang jyang at redhat.com
Fri Dec 14 14:10:28 UTC 2012


On 2012年12月14日 21:23, Eric Blake wrote:
> On 12/13/2012 12:05 PM, Osier Yang wrote:
>> "virGetDevice{Major,Minor}" could be used across the sources,
>> but it doesn't relate with this series, and could be done later.
>>
>> * src/util/util.h: (Declare virGetDevice{Major,Minor}, and
>
> You generally want both values in one go; calling stat() twice because
> you have two functions is not only a waste, but a racy window (if
> someone is modifying the pathname in the meantime).
>
>
>> +static char *
>> +virGetUnprivSGIOSysfsPath(const char *path)
>> +{
>> +    int major, minor;
>> +    char *sysfs_path = NULL;
>> +
>> +    if ((major = virGetDeviceMajor(path))<  0) {
>> +        virReportSystemError(-major,
>> +                             _("Unable to get major number of device '%s'"),
>> +                             path);
>> +        return NULL;
>> +    }
>> +
>> +    if ((minor = virGetDeviceMinor(path))<  0) {
>> +        virReportSystemError(-minor,
>> +                             _("Unable to get minor number of device '%s'"),
>> +                             path);
>> +        return NULL;
>> +    }
>> +
>> +    if (virAsprintf(&sysfs_path, "/sys/dev/block/%d:%d/queue/unpriv_sgio",
>> +                    major, minor)<  0) {
>
> This is hard-coded to probe the actual kernel.  If you instead make it
> use a configurable prefix, then we could default to the kernel path, but
> also allow our testsuite to pass in a prefix from the testsuite, so that
> we can test this functionality even on kernels that don't support the
> feature (similar to how we have tests/nodeinfodata for faked cpu and
> node information).  I'm not yet sure whether we'll need to fake this
> information in any of our tests, but it's food for thought.

Okay, nice suggestion.




More information about the libvir-list mailing list