[PATCH 07/11] xfs_scrub: record disk LBA size

Darrick J. Wong
2019-09-25T21:35:45Z

Remember the size (in bytes) of a logical block on the disk. We'll use
this in subsequent patches to improve the ability of media scans to
report on which files are corrupt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
scrub/disk.c | 7 +++----
scrub/disk.h | 3 ++-
2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/scrub/disk.c b/scrub/disk.c
index dcdd5ba8..d2101cc6 100644
--- a/scrub/disk.c
+++ b/scrub/disk.c
@@ -193,7 +193,6 @@ disk_open(
#endif
struct disk *disk;
bool suspicious_disk = false;
- int lba_sz;
int error;

disk = calloc(1, sizeof(struct disk));
@@ -205,10 +204,10 @@ disk_open(
goto out_free;

/* Try to get LBA size. */
- error = ioctl(disk->d_fd, BLKSSZGET, &lba_sz);
+ error = ioctl(disk->d_fd, BLKSSZGET, &disk->d_lbasize);
if (error)
- lba_sz = 512;
- disk->d_lbalog = log2_roundup(lba_sz);
+ disk->d_lbasize = 512;
+ disk->d_lbalog = log2_roundup(disk->d_lbasize);

/* Obtain disk's stat info. */
error = fstat(disk->d_fd, &disk->d_sb);
diff --git a/scrub/disk.h b/scrub/disk.h
index 74a26d98..36bfb826 100644
--- a/scrub/disk.h
+++ b/scrub/disk.h
@@ -10,7 +10,8 @@
struct disk {
struct stat d_sb;
int d_fd;
- int d_lbalog;
+ unsigned int d_lbalog;
+ unsigned int d_lbasize; /* bytes */
unsigned int d_flags;
unsigned int d_blksize; /* bytes */
uint64_t d_size; /* bytes */