Displaying 15 results from an estimated 15 matches for "pi_del".
2014 Jun 29
0
[PATCH 4/6] chain: add missing pi_del() in find*() functions
...for (drive = 0x80; drive < 0x80 + fixed_cnt; drive++) {
if (disk_get_params(drive, &diskinfo))
continue; /* Drive doesn't exist */
- if (!(boot_part = pi_begin(&diskinfo, opt.piflags)))
- continue;
- /* Check for a MBR disk */
- if (boot_part->type != typedos) {
- pi_del(&boot_part);
+ if (!(iter = pi_begin(&diskinfo, opt.piflags)))
continue;
- }
- if (boot_part->dos.disk_sig == mbr_sig) {
+ /* Check for a matching MBR disk */
+ if (iter->type == typedos && iter->dos.disk_sig == mbr_sig)
goto ok;
- }
+ pi_del(&iter);
}...
2014 Jun 29
10
[PATCH 0/6] chain.c32 patches
...tches from 6.x to 5.x and 4.x so all versions
have up to date chain version.
Michal Soltys (6):
chain/partiter: fix and improve gpt handling in buggy cases
chain/partiter: fix possible non-NULL value returned by pi_begin() on error
chain/partiter: adjust error reporting
chain: add missing pi_del() in find*() functions
chain: implement strict=<0|1|2>
chain/partiter: correct gpt header checks
com32/chain/chain.c | 64 ++++++-------
com32/chain/mangle.c | 6 +-
com32/chain/options.c | 30 +++++--
com32/chain/partiter.c | 234 ++++++++++++++++++++++++++++++------------...
2010 Aug 08
1
PATCH/RFC chain.c: update iterator code, yank from chain.c, move both to separate directory
...r. Some additional checks (mbr protective id, gpt
revision, general sanity) are also performed.
2g) other stuff
As previously, iterators self-destroy after finishing. They can be explicitly
allocated through pi_new() (although this was exported mostly thinking about
com32/lib) and removed through pi_del(); pi_next() moves iterator further.
Partiter compiles cleanly with -Wextra -Wconversion -pedantic
2h) chain.c changes
- find_by_guid() had small bug (took address of address of struct holding disk
guid to compare)
- find_by_{guid,label,disk} greately simplified due to extra data available
fr...
2016 Jul 14
3
[PATCH] : Adding dlabel option to chain.c32
On 07/14/16 05:56, Ady Ady via Syslinux wrote:
>
> @Peter, Erwan, Gene, Michal, (and anyone else interested)...
>
> Although I haven't actually tested Erwan's patch, would it be
> acceptable by you (all) if I were to send a patch to this Syslinux
> Mailing List with the same code while changing the wording as I
> previously suggested in a prior email? Would it be
2016 Jul 16
0
[PATCH] : Adding dlabel option to chain.c32
...z"".
>
> So nothing related to filesystem but gpt labels & disks.
>
OK, this is sucus of your patch:
https://github.com/ErwanAliasr1/syslinux/commit/ebf8cbf#diff-6fb847366ce3f1ddbf6ffd8fd4d408fcR165
+ // We don't care about the actual partition that matched
+ pi_del(&iter);
i.e.
https://github.com/ErwanAliasr1/syslinux/commit/ebf8cbf#diff-6fb847366ce3f1ddbf6ffd8fd4d408fcR167
+ // Let's return the disk itself instead
+ iter = pi_begin(&diskinfo, opt.piflags);
+ goto ok;
Still, there is no GPT label, but *GPT* *Partition* *name* ;)...
2014 Jun 29
0
[PATCH 3/6] chain/partiter: adjust error reporting
...r.h
@@ -42,7 +42,7 @@
/* status */
-enum {PI_OK, PI_DONE, PI_INSANE, PI_ERRLOAD};
+enum {PI_ERRLOAD = -31, PI_INSANE, PI_OK = 0, PI_DONE};
/* flags */
@@ -103,11 +103,6 @@ extern const struct itertype * const typeraw;
struct part_iter *pi_begin(const struct disk_info *, int flags);
void pi_del(struct part_iter **);
-static inline int pi_errored(struct part_iter *iter)
-{
- return iter->status > PI_DONE;
-}
-
/* inline virtuals */
static inline int pi_next(struct part_iter *iter)
{
--
1.7.10.4
2016 Jul 16
5
[PATCH] : Adding dlabel option to chain.c32
The idea is to boot a disk in an mbr fashion while using the GPT (not
filesystem) label to detect the disk.
That is useful when you use grub2 & gpt. I was in case where my nodes
(100s) have 8 disks each and no guarantee of which disk is "bootable" in
the disk.
This way I can tell "please boot the disk that have one partition labelled
"xyz"".
So nothing related
2016 Jul 15
0
[PATCH] : Add diskbypartname option to chain.c32
...(!(iter = pi_begin(&diskinfo, opt.piflags)))
+ continue;
+ /* Check for a matching GPT Partition Name */
+ if (iter->type == typegpt)
+ while (!pi_next(iter)) {
+ if (!strcmp(label, iter->gpt.part_label))
+ // We don't care about the actual partition that matched
+ pi_del(&iter);
+ // Let's return the disk itself instead
+ iter = pi_begin(&diskinfo, opt.piflags);
+ goto ok;
+ }
+ }
+ drive = -1;
+ok:
+ *_boot_part = iter;
+ return drive;
+}
+
static void do_boot(struct data_area *data, int ndata)
{
struct syslinux_me...
2013 Oct 18
0
[RFC/PATCH 1/3] Move partiter from com32/chain to com32/lib/syslinux
...el(iter);
-
-#ifdef DEBUG
- disk_gpt_part_dump(gpt_part);
-#endif
-
- return iter->status;
-}
-
-static struct part_iter *pi_alloc(void)
-{
- struct part_iter *iter;
- if (!(iter = malloc(sizeof *iter)))
- critm();
- else
- memset(iter, 0, sizeof *iter);
- return iter;
-}
-
-/* pi_del() - delete iterator */
-void pi_del(struct part_iter **_iter)
-{
- if(!_iter || !*_iter)
- return;
- pi_dtor(*_iter);
- free(*_iter);
- *_iter = NULL;
-}
-
-/* pi_begin() - validate and and get proper iterator for a disk described by di */
-struct part_iter *pi_begin(const struct disk_i...
2015 Jul 22
0
[PULL 1/8] Move partiter from com32/chain to com32/lib/syslinux
...el(iter);
-
-#ifdef DEBUG
- disk_gpt_part_dump(gpt_part);
-#endif
-
- return iter->status;
-}
-
-static struct part_iter *pi_alloc(void)
-{
- struct part_iter *iter;
- if (!(iter = malloc(sizeof *iter)))
- critm();
- else
- memset(iter, 0, sizeof *iter);
- return iter;
-}
-
-/* pi_del() - delete iterator */
-void pi_del(struct part_iter **_iter)
-{
- if(!_iter || !*_iter)
- return;
- pi_dtor(*_iter);
- free(*_iter);
- *_iter = NULL;
-}
-
-static int notsane_gpt_hdr(const struct disk_info *di, const struct disk_gpt_header *gpth, int flags)
-{
- uint64_t gpt_loff;...
2012 Nov 06
50
chain.c32 (and partiter) updates v2
This is a bit updated set of chain.c32 changes that simplifies a few things
(and in partiter part), fixes few minor issues and adds a few new features.
Details are in the following commits, below is the summary and pull details at
the end.
Shao - any chance to peek over them ? Most of those are relatively simple
changes and well tested, though of course something might have slipped my
attention.
2014 Jun 29
0
[PATCH 1/6] chain/partiter: fix and improve gpt handling in buggy cases
...return -1;
- }
- }
- /* restore old checksum */
- gh->chksum = hold_crc32;
-
- return 0;
+ valid = crc == crc32(crc32(0, NULL, 0), buf, gh->hdr_size);
+ gh->chksum = crc;
+ return valid;
}
static int pi_next_(struct part_iter *iter)
@@ -546,10 +528,108 @@ void pi_del(struct part_iter **_iter)
*_iter = NULL;
}
+static void try_gpt_we(const char *str, int sec)
+{
+ if (sec)
+ error(str);
+ else
+ warn(str);
+}
+
+static struct disk_gpt_header *try_gpt_hdr(const struct disk_info *di, int sec)
+{
+ const char *desc = sec ? "backup" : &quo...
2013 Oct 18
0
[RFC/PATCH 3/3] Wire up MultiFS support.
...s) {
+ dprintf("MultiFS: Request disk/partition combination not found.\n");
+ goto bail;
+ }
+ dprintf("MultiFS: found 0x%llx at idex: %i and partition %i\n",
+ iter->abs_lba, iter->index, partition);
+
+ *_iter = iter;
+ return 0;
+bail:
+ pi_del(&iter);
+ return -1;
+}
+
+/*
+ * Get a number till the delimiter is found.
+ *
+ * @ret: addr to delimiter+1 on success, NULL on failure.
+ */
+static const char *get_num(const char *p, char delimiter, uint8_t *data)
+{
+ uint32_t n = 0;
+
+ while (*p) {
+ if (*p < '0' || *...
2015 Jul 22
13
[PULL 0/8] MultiFS suppport for BIOS and EFI
So last week I was wondering if XFS was still working -- even with its
last on-disk structure changes -- and it _suprisingly_ worked as
expected. Right, now I can finally get rid of GRUB and use Syslinux to
boot my Linux on EFI from a rootfs with xfs. Shit, I have two
partitions (the first one being the required ESP) so there is no way to
access the other partitions since because Syslinux does not
2012 Aug 20
13
[PATCH 00/12] Multidisk support
Hello,
the following patches should get multidisk access working.
The syntax accepted is the following:
(hdx,y)/path/to/file
where x is the disk number and start at 0 and the y is the partition number starting at 1. So (hd0,1) is the first partition of the first disk.
the other accepted syntax is using MBR's 32 bits disk signature so for example:
(mbr:0x12345678,2)/foo/bar
would address