X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=module%2Fzfs%2Fzvol.c;h=19888ea96f6cee4fb922d716dc36a177539cd36d;hb=dde9380a1bf9084d0c8a3e073cdd65bb81db1a23;hp=0aaa268faa2a4793f59fd5013ad5560943a24090;hpb=b18019d2d810585185493c62e9567fa85e51692c;p=zfs.git diff --git a/module/zfs/zvol.c b/module/zfs/zvol.c index 0aaa268..19888ea 100644 --- a/module/zfs/zvol.c +++ b/module/zfs/zvol.c @@ -47,7 +47,7 @@ #include unsigned int zvol_major = ZVOL_MAJOR; -unsigned int zvol_threads = 0; +unsigned int zvol_threads = 32; static taskq_t *zvol_taskq; static kmutex_t zvol_state_lock; @@ -1188,6 +1188,15 @@ __zvol_create_minor(const char *name) set_capacity(zv->zv_disk, zv->zv_volsize >> 9); + blk_queue_max_hw_sectors(zv->zv_queue, UINT_MAX); + blk_queue_max_segments(zv->zv_queue, UINT16_MAX); + blk_queue_max_segment_size(zv->zv_queue, UINT_MAX); + blk_queue_physical_block_size(zv->zv_queue, zv->zv_volblocksize); + blk_queue_io_opt(zv->zv_queue, zv->zv_volblocksize); +#ifdef HAVE_BLK_QUEUE_NONROT + queue_flag_set_unlocked(QUEUE_FLAG_NONROT, zv->zv_queue); +#endif + if (zil_replay_disable) zil_destroy(dmu_objset_zil(os), B_FALSE); else @@ -1334,9 +1343,6 @@ zvol_init(void) { int error; - if (!zvol_threads) - zvol_threads = num_online_cpus(); - zvol_taskq = taskq_create(ZVOL_DRIVER, zvol_threads, maxclsyspri, zvol_threads, INT_MAX, TASKQ_PREPOPULATE); if (zvol_taskq == NULL) {