diff options
Diffstat (limited to 'fs/xfs/xfs_iops.c')
| -rw-r--r-- | fs/xfs/xfs_iops.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 45518b8c613c..f51c60d7e205 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -604,6 +604,16 @@ xfs_vn_getattr(  		stat->blksize = BLKDEV_IOSIZE;  		stat->rdev = inode->i_rdev;  		break; +	case S_IFREG: +		if (request_mask & STATX_DIOALIGN) { +			struct xfs_buftarg	*target = xfs_inode_buftarg(ip); +			struct block_device	*bdev = target->bt_bdev; + +			stat->result_mask |= STATX_DIOALIGN; +			stat->dio_mem_align = bdev_dma_alignment(bdev) + 1; +			stat->dio_offset_align = bdev_logical_block_size(bdev); +		} +		fallthrough;  	default:  		stat->blksize = xfs_stat_blksize(ip);  		stat->rdev = 0;  |