From: Karel Zak Date: Tue, 19 Feb 2013 14:51:51 +0000 (+0100) Subject: libblkid: make backup superblock visible for wipefs(8) only X-Git-Tag: v2.23-rc1~202 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6c4581b6950ac478f29cb12c92dd3d9beff0d53f;p=thirdparty%2Futil-linux.git libblkid: make backup superblock visible for wipefs(8) only Signed-off-by: Karel Zak --- diff --git a/libblkid/src/blkidP.h b/libblkid/src/blkidP.h index ed0c68c43a..2d5e8cb78a 100644 --- a/libblkid/src/blkidP.h +++ b/libblkid/src/blkidP.h @@ -224,6 +224,9 @@ struct blkid_struct_probe /* private per-probing flags */ #define BLKID_PROBE_FL_IGNORE_PT (1 << 1) /* ignore partition table */ +#define BLKID_PROBE_FL_IGNORE_BACKUP (1 << 2) /* ignore backup superblocks or PT */ + +extern int blkid_probe_ignore_backup(blkid_probe pr); extern blkid_probe blkid_clone_probe(blkid_probe parent); extern blkid_probe blkid_probe_get_wholedisk_probe(blkid_probe pr); diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c index dd3ebcadec..e0ac8ebac7 100644 --- a/libblkid/src/probe.c +++ b/libblkid/src/probe.c @@ -1129,6 +1129,8 @@ int blkid_do_safeprobe(blkid_probe pr) blkid_probe_start(pr); + pr->prob_flags |= BLKID_PROBE_FL_IGNORE_BACKUP; + for (i = 0; i < BLKID_NCHAINS; i++) { struct blkid_chain *chn; @@ -1769,3 +1771,7 @@ void blkid_probe_use_wiper(blkid_probe pr, blkid_loff_t off, blkid_loff_t size) } } +int blkid_probe_ignore_backup(blkid_probe pr) +{ + return pr && (pr->prob_flags & BLKID_PROBE_FL_IGNORE_BACKUP); +} diff --git a/libblkid/src/superblocks/btrfs.c b/libblkid/src/superblocks/btrfs.c index 3c60ef57eb..552097b979 100644 --- a/libblkid/src/superblocks/btrfs.c +++ b/libblkid/src/superblocks/btrfs.c @@ -63,6 +63,9 @@ static int probe_btrfs(blkid_probe pr, const struct blkid_idmag *mag) { struct btrfs_super_block *bfs; + if (mag->kboff > 64 && blkid_probe_ignore_backup(pr)) + return 1; + bfs = blkid_probe_get_sb(pr, mag, struct btrfs_super_block); if (!bfs) return -1;