[PATCH] blkid: solve a bug that the disk device of the ceph_bluestore

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



file system, the disk by-partlabel probability loss problem

The superblock of ceph_bluestore exists in the first 1024 bytes, and the
real data is stored after 8K (that is, 16 sectors). By checking the source
code of blkid, it is found to check whether it is the xfs_external_log file
system, which is to cycle through the first 256k data range (the first
512 sectors ). That is to say, when blkid judges whether the partition is
an xfs_external_log file system, it will mistakenly judge the real data of
ceph_bluestore. This means that if the user's data itself conforms to
the xfs_external_log format and is stored in sectors 17~512, it will be mistakenly
considered as the xfs_external_log file system.

Signed-off-by: zhujun2 <zhujun2@xxxxxxxxxxxxxxxxxxxx>
---
 libblkid/src/superblocks/xfs.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libblkid/src/superblocks/xfs.c b/libblkid/src/superblocks/xfs.c
index d8c6fb6d4..3686bd52b 100644
--- a/libblkid/src/superblocks/xfs.c
+++ b/libblkid/src/superblocks/xfs.c
@@ -259,6 +259,11 @@ static int probe_xfs_log(blkid_probe pr,
 		if (memcmp(&buf[i*512], "XFSB", 4) == 0)
 			return 1;
 
+		if (memcmp(&buf[i*512], "bluestore block device", 22) == 0) {
+			DBG(LOWPROBE, ul_debug("\t device has ceph_bluestore ambivalent"));
+			return 1;
+		}
+
 		rhead = (struct xlog_rec_header *)&buf[i*512];
 
 		if (xlog_valid_rec_header(rhead)) {
-- 
2.20.1






[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux