@ -941,6 +941,25 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp
drbd_md_set_sector_offsets ( mdev , nbc ) ;
/* allocate a second IO page if logical_block_size != 512 */
logical_block_size = bdev_logical_block_size ( nbc - > md_bdev ) ;
if ( logical_block_size = = 0 )
logical_block_size = MD_SECTOR_SIZE ;
if ( logical_block_size ! = MD_SECTOR_SIZE ) {
if ( ! mdev - > md_io_tmpp ) {
struct page * page = alloc_page ( GFP_NOIO ) ;
if ( ! page )
goto force_diskless_dec ;
dev_warn ( DEV , " Meta data's bdev logical_block_size = %d != %d \n " ,
logical_block_size , MD_SECTOR_SIZE ) ;
dev_warn ( DEV , " Workaround engaged (has performance impact). \n " ) ;
mdev - > md_io_tmpp = page ;
}
}
if ( ! mdev - > bitmap ) {
if ( drbd_bm_init ( mdev ) ) {
retcode = ERR_NOMEM ;
@ -980,25 +999,6 @@ static int drbd_nl_disk_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *nlp
goto force_diskless_dec ;
}
/* allocate a second IO page if logical_block_size != 512 */
logical_block_size = bdev_logical_block_size ( nbc - > md_bdev ) ;
if ( logical_block_size = = 0 )
logical_block_size = MD_SECTOR_SIZE ;
if ( logical_block_size ! = MD_SECTOR_SIZE ) {
if ( ! mdev - > md_io_tmpp ) {
struct page * page = alloc_page ( GFP_NOIO ) ;
if ( ! page )
goto force_diskless_dec ;
dev_warn ( DEV , " Meta data's bdev logical_block_size = %d != %d \n " ,
logical_block_size , MD_SECTOR_SIZE ) ;
dev_warn ( DEV , " Workaround engaged (has performance impact). \n " ) ;
mdev - > md_io_tmpp = page ;
}
}
/* Reset the "barriers don't work" bits here, then force meta data to
* be written , to ensure we determine if barriers are supported . */
if ( nbc - > dc . no_md_flush )