[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