[PATCH 2/3] bcache-tools: only call to_cache_sb() for bcache device in may_add_item()

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

 



to_cache_sb() will print an error message "Unsupported super block
version" if the super block version is invalid. For non-bcache devices,
it is unnecessary to check version number and print bogus error messages.

This patch checks bcache_magic earlier in may_add_item(), and only calls
to_cache_sb() if the magic string matched. Then the non-bcache devices
can be skipped, and no more bogus error message observed.

Signed-off-by: Coly Li <colyli@xxxxxxx>
---
 lib.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/lib.c b/lib.c
index 340ddf3..b8487db 100644
--- a/lib.c
+++ b/lib.c
@@ -343,32 +343,31 @@ int may_add_item(char *devname, struct list_head *head)
 {
 	struct cache_sb_disk sb_disk;
 	struct cache_sb sb;
+	char dev[512];
+	struct dev *tmp;
+	int ret;
 
 	if (strcmp(devname, ".") == 0 || strcmp(devname, "..") == 0)
 		return 0;
-	char dev[261];
 
 	sprintf(dev, "/dev/%s", devname);
 	int fd = open(dev, O_RDONLY);
-
 	if (fd == -1)
 		return 0;
+
 	if (pread(fd, &sb_disk, sizeof(sb_disk), SB_START) != sizeof(sb_disk)) {
 		close(fd);
 		return 0;
 	}
 
-	to_cache_sb(&sb, &sb_disk);
-
-	if (memcmp(sb.magic, bcache_magic, 16)) {
+	if (memcmp(sb_disk.magic, bcache_magic, 16)) {
 		close(fd);
 		return 0;
 	}
-	struct dev *tmp;
-	int ret;
 
-	tmp = (struct dev *) malloc(DEVLEN);
+	to_cache_sb(&sb, &sb_disk);
 
+	tmp = (struct dev *) malloc(DEVLEN);
 	tmp->csum = le64_to_cpu(sb_disk.csum);
 	ret = detail_base(dev, sb, tmp);
 	if (ret != 0) {
-- 
2.26.2




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux