diff --git a/grub2-ieee1275-FCP-methods-for-WWPN-and-LUNs.patch b/grub2-ieee1275-FCP-methods-for-WWPN-and-LUNs.patch deleted file mode 100644 index 749160e..0000000 --- a/grub2-ieee1275-FCP-methods-for-WWPN-and-LUNs.patch +++ /dev/null @@ -1,146 +0,0 @@ -From 3540ebd05d545ba8f55b0f94983aeb82ad9232f3 Mon Sep 17 00:00:00 2001 -From: Diego Domingos -Date: Mon, 24 Jun 2019 10:15:56 -0400 -Subject: [PATCH] ieee1275: implement FCP methods for WWPN and LUNs - -This patch enables the fcp-targets and fcp-luns methods which are -responsible to get WWPNs and LUNs for fibre channel devices. - -Those methods are specially necessary if the boot directory and grub -installation are in different FCP disks, allowing the dev_iterate() -to find the WWPNs and LUNs when called by searchfs.uuid tool. ---- - grub-core/disk/ieee1275/ofdisk.c | 117 ++++++++++++++++++++++++++++++++++++++- - 1 file changed, 116 insertions(+), 1 deletion(-) - -diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c -index 235c0fe..eb907c3 100644 ---- a/grub-core/disk/ieee1275/ofdisk.c -+++ b/grub-core/disk/ieee1275/ofdisk.c -@@ -209,7 +209,122 @@ dev_iterate_real (const char *name, const char *path) - static void - dev_iterate (const struct grub_ieee1275_devalias *alias) - { -- if (grub_strcmp (alias->type, "vscsi") == 0) -+ if (grub_strcmp (alias->type, "fcp") == 0) -+ { -+ -+ /* If we are dealing with fcp devices, we need -+ * to find the WWPNs and LUNs to iterate them */ -+ grub_ieee1275_ihandle_t ihandle; -+ grub_uint64_t *ptr_targets, *ptr_luns, k, l; -+ unsigned int i, j, pos; -+ char *buf, *bufptr; -+ -+ struct set_fcp_targets_args -+ { -+ struct grub_ieee1275_common_hdr common; -+ grub_ieee1275_cell_t method; -+ grub_ieee1275_cell_t ihandle; -+ grub_ieee1275_cell_t catch_result; -+ grub_ieee1275_cell_t nentries; -+ grub_ieee1275_cell_t table; -+ } args_targets; -+ -+ struct set_fcp_luns_args -+ { -+ struct grub_ieee1275_common_hdr common; -+ grub_ieee1275_cell_t method; -+ grub_ieee1275_cell_t ihandle; -+ grub_ieee1275_cell_t wwpn_h; -+ grub_ieee1275_cell_t wwpn_l; -+ grub_ieee1275_cell_t catch_result; -+ grub_ieee1275_cell_t nentries; -+ grub_ieee1275_cell_t table; -+ } args_luns; -+ -+ struct args_ret -+ { -+ grub_uint64_t addr; -+ grub_uint64_t len; -+ }; -+ -+ if(grub_ieee1275_open (alias->path, &ihandle)) -+ { -+ grub_dprintf("disk", "failed to open the disk while iterating FCP disk path=%s\n", alias->path); -+ return; -+ } -+ -+ /* Setup the fcp-targets method to call via pfw*/ -+ INIT_IEEE1275_COMMON (&args_targets.common, "call-method", 2, 3); -+ args_targets.method = (grub_ieee1275_cell_t) "fcp-targets"; -+ args_targets.ihandle = ihandle; -+ -+ /* Setup the fcp-luns method to call via pfw */ -+ INIT_IEEE1275_COMMON (&args_luns.common, "call-method", 4, 3); -+ args_luns.method = (grub_ieee1275_cell_t) "fcp-luns"; -+ args_luns.ihandle = ihandle; -+ -+ if (IEEE1275_CALL_ENTRY_FN (&args_targets) == -1) -+ { -+ grub_dprintf("disk", "failed to get the targets while iterating FCP disk path=%s\n", alias->path); -+ grub_ieee1275_close(ihandle); -+ return; -+ } -+ -+ buf = grub_malloc (grub_strlen (alias->path) + 32 + 32); -+ -+ if (!buf) -+ { -+ grub_ieee1275_close(ihandle); -+ return; -+ } -+ -+ bufptr = grub_stpcpy (buf, alias->path); -+ -+ /* Iterate over entries returned by pfw. Each entry contains a -+ * pointer to wwpn table and his length. */ -+ struct args_ret *targets_table = (struct args_ret *)(args_targets.table); -+ for (i=0; i< args_targets.nentries; i++) -+ { -+ ptr_targets = (grub_uint64_t*)(grub_uint32_t) targets_table[i].addr; -+ /* Iterate over all wwpns in given table */ -+ for(k=0;k> 32); -+ pos=grub_snprintf (bufptr, 32, "/disk@%" PRIxGRUB_UINT64_T, -+ *ptr_targets++); -+ /* Get the luns for given wwpn target */ -+ if (IEEE1275_CALL_ENTRY_FN (&args_luns) == -1) -+ { -+ grub_dprintf("disk", "failed to get the LUNS while iterating FCP disk path=%s\n", buf); -+ grub_ieee1275_close (ihandle); -+ grub_free (buf); -+ return; -+ } -+ -+ struct args_ret *luns_table = (struct args_ret *)(args_luns.table); -+ -+ /* Iterate over all LUNs */ -+ for(j=0;jtype, "vscsi") == 0) - { - static grub_ieee1275_ihandle_t ihandle; - struct set_color_args --- -2.16.4 - diff --git a/grub2.changes b/grub2.changes index 532d0f5..344c544 100644 --- a/grub2.changes +++ b/grub2.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jul 18 09:54:14 UTC 2019 - mchang@suse.com + +- Revert grub2-ieee1275-FCP-methods-for-WWPN-and-LUNs.patch until merged by + upstream (bsc#1134287, bsc#1139345, LTC#177836, LTC#174229). + ------------------------------------------------------------------- Mon Jun 24 17:56:12 UTC 2019 - Michal Suchanek diff --git a/grub2.spec b/grub2.spec index 203ffdc..f0bd007 100644 --- a/grub2.spec +++ b/grub2.spec @@ -267,7 +267,6 @@ Patch212: grub2-install-remove-useless-check-PReP-partition-is-empty.patch Patch213: grub2-Fix-incorrect-netmask-on-ppc64.patch Patch215: grub2-ppc64-cas-new-scope.patch Patch216: 0001-ofnet-Initialize-structs-in-bootpath-parser.patch -Patch217: grub2-ieee1275-FCP-methods-for-WWPN-and-LUNs.patch Patch218: grub2-ppc64-cas-fix-double-free.patch Patch233: grub2-use-stat-instead-of-udevadm-for-partition-lookup.patch Patch234: fix-grub2-use-stat-instead-of-udevadm-for-partition-lookup-with-new-glibc.patch @@ -581,7 +580,6 @@ swap partition while in resuming %patch213 -p1 %patch215 -p1 %patch216 -p1 -%patch217 -p1 %patch218 -p1 %patch233 -p1 %patch234 -p1