int blkid_partitions_do_subprobe(blkid_probe pr, blkid_partition parent,
const struct blkid_idinfo *id)
{
- int rc = 1;
+ int rc = 1, flags;
blkid_partlist ls;
blkid_loff_t saved_sz, saved_off, sz, off;
return -1;
}
+ /* flags depends on size of the partition */
+ flags = pr->flags;
+
/* define sub-range with in device */
blkid_probe_set_dimension(pr, off, sz);
/* restore the original setting */
blkid_probe_set_dimension(pr, saved_off, saved_sz);
+ pr->flags = flags;
+
DBG(DEBUG_LOWPROBE, printf(
"parts: <---- %s subprobe done (parent=%p, rc=%d)\n",
id->name, parent, rc));
if (!pr)
return;
- blkid_probe_reset_buffer(pr);
blkid_probe_reset_vals(pr);
pr->cur_chain = NULL;
return -1;
blkid_reset_probe(pr);
+ blkid_probe_reset_buffer(pr);
if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
close(pr->fd);
pr->flags &= ~BLKID_FL_PRIVATE_FD;
pr->flags &= ~BLKID_FL_TINY_DEV;
pr->flags &= ~BLKID_FL_CDROM_DEV;
+ pr->prob_flags = 0;
pr->fd = fd;
pr->off = off;
pr->size = 0;
pr->devno = 0;
+ pr->disk_devno = 0;
pr->mode = 0;
pr->blkssz = 0;
+ pr->wipe_off = 0;
+ pr->wipe_size = 0;
+ pr->wipe_chain = NULL;
#if defined(POSIX_FADV_RANDOM) && defined(HAVE_POSIX_FADVISE)
/* Disable read-ahead */