From: Martin K. Petersen Date: Fri, 21 Mar 2014 19:20:19 +0000 (-0400) Subject: oracleasm: Report logical block size X-Git-Tag: v4.1.12-92~323^2~10 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=034c645a003c6da50bfa5c8b35f226539d3296b2;p=users%2Fjedix%2Flinux-maple.git oracleasm: Report logical block size Report the device's logical block size in the qd_feature variable. This allows ASM to determine whether a disk group can be imported should a storage device change its physical block size reporting. Signed-off-by: Martin K. Petersen --- diff --git a/drivers/block/oracleasm/driver.c b/drivers/block/oracleasm/driver.c index 0695c55ebdff..5de7c4a193e3 100644 --- a/drivers/block/oracleasm/driver.c +++ b/drivers/block/oracleasm/driver.c @@ -69,6 +69,7 @@ #include #include #include +#include #include #include @@ -2343,6 +2344,7 @@ static ssize_t asmfs_svc_query_disk(struct file *file, char *buf, size_t size) struct oracleasm_query_disk_v2 *qd_info; struct file *filp; struct block_device *bdev; + unsigned int lsecsz; int ret; mlog_entry("(0x%p, 0x%p, %u)\n", file, buf, (unsigned int)size); @@ -2377,14 +2379,16 @@ static ssize_t asmfs_svc_query_disk(struct file *file, char *buf, size_t size) bdev = I_BDEV(filp->f_mapping->host); + lsecsz = ilog2(bdev_logical_block_size(bdev)); qd_info->qd_max_sectors = compute_max_sectors(bdev); qd_info->qd_hardsect_size = asm_block_size(bdev); qd_info->qd_feature = asm_integrity_format(bdev) & ASM_INTEGRITY_QDF_MASK; + qd_info->qd_feature |= lsecsz << ASM_LSECSZ_SHIFT & ASM_LSECSZ_MASK; mlog(ML_ABI|ML_DISK, "Querydisk returning qd_max_sectors = %u and " - "qd_hardsect_size = %u, qd_integrity = %u\n", - qd_info->qd_max_sectors, qd_info->qd_hardsect_size, + "qd_hardsect_size = %u, lsecsz = %u, qd_integrity = %u\n", + qd_info->qd_max_sectors, lsecsz, qd_info->qd_hardsect_size, asm_integrity_format(bdev)); ret = 0; diff --git a/include/linux/oracleasm/abi.h b/include/linux/oracleasm/abi.h index 3de3abd0c38e..0733eed823df 100644 --- a/include/linux/oracleasm/abi.h +++ b/include/linux/oracleasm/abi.h @@ -185,6 +185,11 @@ enum oracleasm_feature_integrity { ASM_INTEGRITY_QDF_MASK = 0xff, /* Querydisk feature mask */ }; +enum oracleasm_feature_blk_size { + ASM_LSECSZ_SHIFT = 24, + ASM_LSECSZ_MASK = 0xff << ASM_LSECSZ_SHIFT, +}; + struct oracleasm_open_disk_v2 { /*00*/ struct oracleasm_abi_info od_abi;