From 98c7c205306eb27e63b3eccc930ceab88e15be25 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 | 224 -------------------------------------- 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(+), 254 deletions(-) delete mode 100644 daemon/9p.c diff --git a/Makefile.am b/Makefile.am index cc363341f..8fb25a57c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -78,7 +78,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 55644249d..000000000 --- a/daemon/9p.c +++ /dev/null @@ -1,224 +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" - -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, 0, 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, - "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 6240f517d..29f3aa6df 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -76,7 +76,6 @@ guestfsd_SOURCES = \ ../common/protocol/guestfs_protocol.h \ ../common/utils/cleanups.h \ ../common/utils/guestfs-utils.h \ - 9p.c \ acl.c \ actions.h \ available.c \ diff --git a/docs/C_SOURCE_FILES b/docs/C_SOURCE_FILES index f3ee61e0d..e8b1d5283 100644 --- a/docs/C_SOURCE_FILES +++ b/docs/C_SOURCE_FILES @@ -70,7 +70,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 2ae3ec1d9..237edafce 100644 --- a/generator/actions_core.ml +++ b/generator/actions_core.ml @@ -6179,27 +6179,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 (RPlainString, "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 (PlainString, "mounttag"); String (PlainString, "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 (RDevice, "devices"), [], []; diff --git a/generator/proc_nr.ml b/generator/proc_nr.ml index 9e16ab14a..e6b018c62 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 5aa2dcafe..b8f8e9226 100644 --- a/gobject/Makefile.inc +++ b/gobject/Makefile.inc @@ -93,7 +93,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 \ @@ -186,7 +185,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 a049d66fe..5daec8a89 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -58,7 +58,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 @@ -290,7 +289,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.17.1