From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1W7I5s-0004xE-Pb for mharc-grub-devel@gnu.org; Sun, 26 Jan 2014 00:17:16 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58342) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W7I5i-0004wC-ME for grub-devel@gnu.org; Sun, 26 Jan 2014 00:17:15 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W7I5Z-0000v9-Vc for grub-devel@gnu.org; Sun, 26 Jan 2014 00:17:06 -0500 Received: from mail-lb0-x236.google.com ([2a00:1450:4010:c04::236]:53254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W7I5Z-0000uG-NW for grub-devel@gnu.org; Sun, 26 Jan 2014 00:16:57 -0500 Received: by mail-lb0-f182.google.com with SMTP id w7so3673605lbi.27 for ; Sat, 25 Jan 2014 21:16:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; bh=SNbBYXlo9zWFic4ngtxgQ/ClfjzI875CwgQrSC0o1Qg=; b=ZOEIYmnMXGyJWlG0Xsh6U54QsyKaX1LwsftYXw2o9SiuKLu6gfDsT8Y8B3Y6ikLtVP W5UNUswOWcFJtBoPMSW1meb9ApY7nS/M8iTePVL2qD4YgeNC8VpqLBBA9gZalIVg7jxc f+iQP9Y6RQX6c1jld/T0VxoVEoXvEICxigifenA96fzWQ2bjEKtFyKXfwm4E5B+6gyKW dYQQrcyhzPg5edE9HyoCs5lHHMNNnRs0cCF5GplP4doax9FW+o9rfbClaA7tts6Q3s3S MiDqlXFX9tJQEcAKeomD9l4FKjHsiPavU/U6blmqVaXvXc8ssq27ml48mod7KqqVwbfW 1c9w== X-Received: by 10.112.45.108 with SMTP id l12mr13220782lbm.21.1390713416621; Sat, 25 Jan 2014 21:16:56 -0800 (PST) Received: from opensuse.site (ppp91-76-154-95.pppoe.mtu-net.ru. [91.76.154.95]) by mx.google.com with ESMTPSA id s9sm10113356laj.0.2014.01.25.21.16.55 for (version=SSLv3 cipher=RC4-SHA bits=128/128); Sat, 25 Jan 2014 21:16:55 -0800 (PST) Date: Sun, 26 Jan 2014 09:16:53 +0400 From: Andrey Borzenkov To: The development of GNU GRUB Subject: Re: [PATCH] grub-install: Improve support for partitioned loop devices. Message-ID: <20140126091653.727f82e4@opensuse.site> In-Reply-To: <1390700460-30725-1-git-send-email-floppym@gentoo.org> References: <1390700460-30725-1-git-send-email-floppym@gentoo.org> X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.22; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2a00:1450:4010:c04::236 Cc: floppym@gentoo.org X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Jan 2014 05:17:15 -0000 В Sat, 25 Jan 2014 20:41:00 -0500 Mike Gilbert пишет: > * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect > /dev/loopX as being the parent of /dev/loopXpY. Those devices are normally device-mapper ones (created by kpartx) and grub already detects parent by following device-mapper tree. What exact problem are you trying to solve? > --- > ChangeLog | 5 +++++ > grub-core/osdep/linux/getroot.c | 13 +++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/ChangeLog b/ChangeLog > index c93f11f..d5c5c3c 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,8 @@ > +2014-01-26 Mike Gilbert > + grub-install: Improve support for partitioned loop devices. > + > + * grub-core/osdep/linux/getroot.c (grub_util_part_to_disk): Detect > + /dev/loopX as being the parent of /dev/loopXpY. > > 2014-01-25 Andrey Borzenkov > > diff --git a/grub-core/osdep/linux/getroot.c b/grub-core/osdep/linux/getroot.c > index 772de0a..19581d3 100644 > --- a/grub-core/osdep/linux/getroot.c > +++ b/grub-core/osdep/linux/getroot.c > @@ -883,6 +883,19 @@ grub_util_part_to_disk (const char *os_dev, struct stat *st, > *pp = '\0'; > return path; > } > + > + /* If this is a loop device */ > + if ((strncmp ("loop", p, 4) == 0) && p[4] >= '0' && p[4] <= '9') > + { > + char *pp = p + 4; > + while (*pp >= '0' && *pp <= '9') > + pp++; > + if (*pp == 'p') > + *is_part = 1; > + /* /dev/loop[0-9]+p[0-9]* */ > + *pp = '\0'; > + return path; > + } > } > > return path;