From ee68d9b7941ced89bc91878f09eb528773e624db Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 18 Jul 2013 18:31:53 +0100 Subject: [PATCH] RHEL 7: Remove 9p APIs from RHEL (RHBZ#921710). --- Makefile.am | 2 +- daemon/9p.c | 225 ---------------------------------------------- daemon/Makefile.am | 1 - docs/C_SOURCE_FILES | 1 - generator/actions_core.ml | 21 ----- generator/proc_nr.ml | 2 - gobject/Makefile.inc | 2 - po/POTFILES | 2 - 8 files changed, 1 insertion(+), 255 deletions(-) delete mode 100644 daemon/9p.c diff --git a/Makefile.am b/Makefile.am index 12486deee..14b277a35 100644 --- a/Makefile.am +++ b/Makefile.am @@ -73,7 +73,7 @@ SUBDIRS += tests/xfs SUBDIRS += tests/charsets SUBDIRS += tests/xml SUBDIRS += tests/mount-local -SUBDIRS += tests/9p +#SUBDIRS += tests/9p SUBDIRS += tests/rsync SUBDIRS += tests/bigdirs SUBDIRS += tests/disk-labels diff --git a/daemon/9p.c b/daemon/9p.c deleted file mode 100644 index bd564a5be..000000000 --- a/daemon/9p.c +++ /dev/null @@ -1,225 +0,0 @@ -/* libguestfs - the guestfsd daemon - * Copyright (C) 2011 Red Hat Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "daemon.h" -#include "actions.h" - -#define BUS_PATH "/sys/bus/virtio/drivers/9pnet_virtio" -GUESTFSD_EXT_CMD(str_mount, mount); - -static char *read_whole_file (const char *filename); - -/* https://bugzilla.redhat.com/show_bug.cgi?id=714981#c1 */ -char ** -do_list_9p (void) -{ - CLEANUP_FREE_STRINGSBUF DECLARE_STRINGSBUF (r); - - DIR *dir; - - dir = opendir (BUS_PATH); - if (!dir) { - perror ("opendir: " BUS_PATH); - if (errno != ENOENT) { - reply_with_perror ("opendir: " BUS_PATH); - return NULL; - } - - /* If this directory doesn't exist, it probably means that - * the virtio driver isn't loaded. Don't return an error - * in this case, but return an empty list. - */ - if (end_stringsbuf (&r) == -1) - return NULL; - - return take_stringsbuf (&r); - } - - while (1) { - struct dirent *d; - - errno = 0; - d = readdir (dir); - if (d == NULL) break; - - if (STRPREFIX (d->d_name, "virtio")) { - CLEANUP_FREE char *mount_tag_path = NULL; - if (asprintf (&mount_tag_path, BUS_PATH "/%s/mount_tag", - d->d_name) == -1) { - reply_with_perror ("asprintf"); - closedir (dir); - return NULL; - } - - /* A bit unclear, but it looks like the virtio transport allows - * the mount tag length to be unlimited (or up to 65536 bytes). - * See: linux/include/linux/virtio_9p.h - */ - CLEANUP_FREE char *mount_tag = read_whole_file (mount_tag_path); - if (mount_tag == 0) - continue; - - if (add_string (&r, mount_tag) == -1) { - closedir (dir); - return NULL; - } - } - } - - /* Check readdir didn't fail */ - if (errno != 0) { - reply_with_perror ("readdir: /sys/block"); - closedir (dir); - return NULL; - } - - /* Close the directory handle */ - if (closedir (dir) == -1) { - reply_with_perror ("closedir: /sys/block"); - return NULL; - } - - /* Sort the tags. */ - if (r.size > 0) - sort_strings (r.argv, r.size); - - /* NULL terminate the list */ - if (end_stringsbuf (&r) == -1) - return NULL; - - return take_stringsbuf (&r); -} - -/* Read whole file into dynamically allocated array. If there is an - * error, DON'T call reply_with_perror, just return NULL. Returns a - * \0-terminated string. - */ -static char * -read_whole_file (const char *filename) -{ - char *r = NULL; - size_t alloc = 0, size = 0; - int fd; - - fd = open (filename, O_RDONLY|O_CLOEXEC); - if (fd == -1) { - perror (filename); - return NULL; - } - - while (1) { - alloc += 256; - char *r2 = realloc (r, alloc); - if (r2 == NULL) { - perror ("realloc"); - free (r); - close (fd); - return NULL; - } - r = r2; - - /* The '- 1' in the size calculation ensures there is space below - * to add \0 to the end of the input. - */ - ssize_t n = read (fd, r + size, alloc - size - 1); - if (n == -1) { - fprintf (stderr, "read: %s: %m\n", filename); - free (r); - close (fd); - return NULL; - } - if (n == 0) - break; - size += n; - } - - if (close (fd) == -1) { - fprintf (stderr, "close: %s: %m\n", filename); - free (r); - return NULL; - } - - r[size] = '\0'; - - return r; -} - -/* Takes optional arguments, consult optargs_bitmask. */ -int -do_mount_9p (const char *mount_tag, const char *mountpoint, const char *options) -{ - CLEANUP_FREE char *mp = NULL, *opts = NULL, *err = NULL; - struct stat statbuf; - int r; - - ABS_PATH (mountpoint, , return -1); - - mp = sysroot_path (mountpoint); - if (!mp) { - reply_with_perror ("malloc"); - return -1; - } - - /* Check the mountpoint exists and is a directory. */ - if (stat (mp, &statbuf) == -1) { - reply_with_perror ("%s", mountpoint); - return -1; - } - if (!S_ISDIR (statbuf.st_mode)) { - reply_with_perror ("%s: mount point is not a directory", mountpoint); - return -1; - } - - /* Add trans=virtio to the options. */ - if ((optargs_bitmask & GUESTFS_MOUNT_9P_OPTIONS_BITMASK) && - STRNEQ (options, "")) { - if (asprintf (&opts, "trans=virtio,%s", options) == -1) { - reply_with_perror ("asprintf"); - return -1; - } - } - else { - opts = strdup ("trans=virtio"); - if (opts == NULL) { - reply_with_perror ("strdup"); - return -1; - } - } - - r = command (NULL, &err, - str_mount, "-o", opts, "-t", "9p", mount_tag, mp, NULL); - if (r == -1) { - reply_with_error ("%s on %s: %s", mount_tag, mountpoint, err); - return -1; - } - - return 0; -} diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 9381742c8..0670cda90 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -48,7 +48,6 @@ endif guestfsd_SOURCES = \ ../common/errnostring/errnostring.h \ ../common/protocol/guestfs_protocol.h \ - 9p.c \ acl.c \ actions.h \ available.c \ diff --git a/docs/C_SOURCE_FILES b/docs/C_SOURCE_FILES index 26abcc9bb..608eaea76 100644 --- a/docs/C_SOURCE_FILES +++ b/docs/C_SOURCE_FILES @@ -49,7 +49,6 @@ common/windows/windows.h customize/crypt-c.c customize/dummy.c customize/perl_edit-c.c -daemon/9p.c daemon/acl.c daemon/actions.h daemon/augeas.c diff --git a/generator/actions_core.ml b/generator/actions_core.ml index ed89f74aa..2567981d7 100644 --- a/generator/actions_core.ml +++ b/generator/actions_core.ml @@ -6372,27 +6372,6 @@ This returns true iff the device exists and contains all zero bytes. Note that for large devices this can take a long time to run." }; { defaults with - name = "list_9p"; added = (1, 11, 12); - style = RStringList "mounttags", [], []; - shortdesc = "list 9p filesystems"; - longdesc = "\ -List all 9p filesystems attached to the guest. A list of -mount tags is returned." }; - - { defaults with - name = "mount_9p"; added = (1, 11, 12); - style = RErr, [String "mounttag"; String "mountpoint"], [OString "options"]; - camel_name = "Mount9P"; - shortdesc = "mount 9p filesystem"; - longdesc = "\ -Mount the virtio-9p filesystem with the tag C on the -directory C. - -If required, C will be automatically added to the options. -Any other options required can be passed in the optional C -parameter." }; - - { defaults with name = "list_dm_devices"; added = (1, 11, 15); style = RStringList "devices", [], []; shortdesc = "list device mapper devices"; diff --git a/generator/proc_nr.ml b/generator/proc_nr.ml index b3be31996..7f92e0427 100644 --- a/generator/proc_nr.ml +++ b/generator/proc_nr.ml @@ -295,8 +295,6 @@ let proc_nr = [ 282, "internal_autosync"; 283, "is_zero"; 284, "is_zero_device"; -285, "list_9p"; -286, "mount_9p"; 287, "list_dm_devices"; 288, "ntfsresize"; 289, "btrfs_filesystem_resize"; diff --git a/gobject/Makefile.inc b/gobject/Makefile.inc index 8fa8599d3..7a5272684 100644 --- a/gobject/Makefile.inc +++ b/gobject/Makefile.inc @@ -92,7 +92,6 @@ guestfs_gobject_headers= \ include/guestfs-gobject/optargs-mksquashfs.h \ include/guestfs-gobject/optargs-mkswap.h \ include/guestfs-gobject/optargs-mktemp.h \ - include/guestfs-gobject/optargs-mount_9p.h \ include/guestfs-gobject/optargs-mount_local.h \ include/guestfs-gobject/optargs-ntfsclone_out.h \ include/guestfs-gobject/optargs-ntfsfix.h \ @@ -184,7 +183,6 @@ guestfs_gobject_sources= \ src/optargs-mksquashfs.c \ src/optargs-mkswap.c \ src/optargs-mktemp.c \ - src/optargs-mount_9p.c \ src/optargs-mount_local.c \ src/optargs-ntfsclone_out.c \ src/optargs-ntfsfix.c \ diff --git a/po/POTFILES b/po/POTFILES index 904e751de..143d1cd9d 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -39,7 +39,6 @@ customize/crypt-c.c customize/dummy.c customize/perl_edit-c.c customize/test-password.pl -daemon/9p.c daemon/acl.c daemon/augeas.c daemon/available.c @@ -266,7 +265,6 @@ gobject/src/optargs-mkfs_btrfs.c gobject/src/optargs-mksquashfs.c gobject/src/optargs-mkswap.c gobject/src/optargs-mktemp.c -gobject/src/optargs-mount_9p.c gobject/src/optargs-mount_local.c gobject/src/optargs-ntfsclone_out.c gobject/src/optargs-ntfsfix.c -- 2.13.4