mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Improve zvol symlink handling.
Change the zvol helper program to replace any embedded spaces in the pool or dataset names with '+' to ensure we have valid symlinks. The '+' character was choosen because it is not a valid character for a dataset name but it is allowed by udev. This ensures that all dataset names with an embedded space will be translated to a unique /dev/zvol/ symlink. Signed-off-by: Dan Swartzendruber <dswartz@druber.com> Signed-off-by: Darik Horn <dajhorn@vanadac.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #2834
This commit is contained in:
parent
11662bf969
commit
5f91bd3dea
@ -23,6 +23,8 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@ -56,6 +58,7 @@ main(int argc, char **argv)
|
|||||||
char *dev_name;
|
char *dev_name;
|
||||||
struct stat64 statbuf;
|
struct stat64 statbuf;
|
||||||
int dev_minor, dev_part;
|
int dev_minor, dev_part;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (argc < 2) {
|
if (argc < 2) {
|
||||||
printf("Usage: %s /dev/zvol_device_node\n", argv[0]);
|
printf("Usage: %s /dev/zvol_device_node\n", argv[0]);
|
||||||
@ -89,6 +92,11 @@ main(int argc, char **argv)
|
|||||||
else
|
else
|
||||||
snprintf(zvol_name_part, ZFS_MAXNAMELEN, "%s", zvol_name);
|
snprintf(zvol_name_part, ZFS_MAXNAMELEN, "%s", zvol_name);
|
||||||
|
|
||||||
|
for (i = 0; i < strlen(zvol_name_part); i++) {
|
||||||
|
if (isblank(zvol_name_part[i]))
|
||||||
|
zvol_name_part[i] = '+';
|
||||||
|
}
|
||||||
|
|
||||||
printf("%s\n", zvol_name_part);
|
printf("%s\n", zvol_name_part);
|
||||||
close(fd);
|
close(fd);
|
||||||
return (error);
|
return (error);
|
||||||
|
Loading…
Reference in New Issue
Block a user