From e0af86a09b80b5fa0c5f308ae6f34d8315c1dc4d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 18 Jul 2013 18:31:53 +0100 Subject: [PATCH 2/6] RHEL: Remove 9p APIs from RHEL (RHBZ#921710). --- daemon/9p.c | 182 -------------------------------------- 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 - tests/Makefile.am | 1 - 8 files changed, 212 deletions(-) delete mode 100644 daemon/9p.c diff --git a/daemon/9p.c b/daemon/9p.c deleted file mode 100644 index 743a96abd..000000000 --- a/daemon/9p.c +++ /dev/null @@ -1,182 +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 "ignore-value.h" - -#include "daemon.h" -#include "actions.h" - -#define BUS_PATH "/sys/bus/virtio/drivers/9pnet_virtio" - -static void -modprobe_9pnet_virtio (void) -{ - /* Required with Linux 5.6 and maybe earlier kernels. For unclear - * reasons the module is not an automatic dependency of the 9p - * module so doesn't get loaded automatically. - */ - ignore_value (command (NULL, NULL, "modprobe", "9pnet_virtio", NULL)); -} - -/* https://bugzilla.redhat.com/show_bug.cgi?id=714981#c1 */ -char ** -do_list_9p (void) -{ - CLEANUP_FREE_STRINGSBUF DECLARE_STRINGSBUF (r); - DIR *dir; - - modprobe_9pnet_virtio (); - - 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, NULL); - 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); -} - -/* 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; - } - } - - modprobe_9pnet_virtio (); - 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 6f13bd43c..cc4dbcd85 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -84,7 +84,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 6a97d8b0e..896314e7e 100644 --- a/docs/C_SOURCE_FILES +++ b/docs/C_SOURCE_FILES @@ -43,7 +43,6 @@ common/visit/visit.c common/visit/visit.h common/windows/windows.c common/windows/windows.h -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 bb602ee02..db8156c51 100644 --- a/generator/actions_core.ml +++ b/generator/actions_core.ml @@ -6157,27 +6157,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 74b95baf7..6b6cb7353 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 650f8ddac..c4e735967 100644 --- a/gobject/Makefile.inc +++ b/gobject/Makefile.inc @@ -94,7 +94,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 \ @@ -188,7 +187,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 29205b6a6..23afe619c 100644 --- a/po/POTFILES +++ b/po/POTFILES @@ -26,7 +26,6 @@ common/utils/stringlists-utils.c common/utils/utils.c common/visit/visit.c common/windows/windows.c -daemon/9p.c daemon/acl.c daemon/augeas.c daemon/available.c @@ -264,7 +263,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 diff --git a/tests/Makefile.am b/tests/Makefile.am index 919e2f248..e3613fec4 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -43,7 +43,6 @@ check-slow: check-valgrind: $(MAKE) VG="@VG@" check -TESTS += 9p/test-9p.sh EXTRA_DIST += 9p/test-9p.sh SLOW_TESTS += bigdirs/test-big-dirs.pl -- 2.31.1