[libvirt] [PATCH 3/3] Create storage volumes directly with desired uid/gid.
Cole Robinson
crobinso at redhat.com
Tue Jan 12 15:42:06 UTC 2010
On 01/12/2010 07:36 AM, Daniel P. Berrange wrote:
> On Mon, Jan 11, 2010 at 12:46:12AM -0500, Laine Stump wrote:
>
> [snip]
>
>> @@ -840,7 +833,15 @@ _virStorageBackendFileSystemVolBuild(virConnectPtr conn,
>> static int
>> virStorageBackendFileSystemVolBuild(virConnectPtr conn,
>> virStorageVolDefPtr vol) {
>> - return _virStorageBackendFileSystemVolBuild(conn, vol, NULL);
>> + return _virStorageBackendFileSystemVolBuild(conn, vol, NULL, 0);
>> +}
>> +
>> +/* version for vols created in netfs-based pools */
>> +static int
>> +virStorageBackendFileSystemNetVolBuild(virConnectPtr conn,
>> + virStorageVolDefPtr vol) {
>> + return _virStorageBackendFileSystemVolBuild(conn, vol, NULL,
>> + VIR_STORAGE_BUILD_NETFS);
>> }
>>
>> /*
>> @@ -851,9 +852,20 @@ virStorageBackendFileSystemVolBuildFrom(virConnectPtr conn,
>> virStorageVolDefPtr vol,
>> virStorageVolDefPtr inputvol,
>> unsigned int flags ATTRIBUTE_UNUSED) {
>> - return _virStorageBackendFileSystemVolBuild(conn, vol, inputvol);
>> + return _virStorageBackendFileSystemVolBuild(conn, vol, inputvol, 0);
>> +}
>> +
>> +/* version for vols created in netfs-based pools */
>> +static int
>> +virStorageBackendFileSystemNetVolBuildFrom(virConnectPtr conn,
>> + virStorageVolDefPtr vol,
>> + virStorageVolDefPtr inputvol,
>> + unsigned int flags ATTRIBUTE_UNUSED) {
>> + return _virStorageBackendFileSystemVolBuild(conn, vol, inputvol,
>> + VIR_STORAGE_BUILD_NETFS);
>> }
>
>
> I think I'd be inclined to edit storage_backend.h and change the
>
> typedef int (*virStorageBackendBuildVol)(virConnectPtr conn, virStorageVolDefPtr vol);
>
> to
>
> typedef int (*virStorageBackendBuildVol)(virConnectPtr conn, virStoragePoolObjPtr pool, virStorageVolDefPtr vol);
>
> so that the build method has direct access to the pool type. Likewise
> for the BuildFrom method prototype. Once that change ripples through
> all the code, the place where you need to distinguish local vs net
> filesytem will have access to the pool object it wants
>
This is a possibly problematic, since BuildVol is intended to be called
with the pool lock dropped. So maybe BuildVol should have an extra 'int
pool_type' argument rather than the whole pool object.
- Cole
More information about the libvir-list
mailing list