@@ -1963,27 +1963,26 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
1963
1963
bool wc = false, fua = false;
1964
1964
int r ;
1965
1965
1966
+ /*
1967
+ * Copy table's limits to the DM device's request_queue
1968
+ */
1969
+ q -> limits = * limits ;
1970
+
1966
1971
if (dm_table_supports_nowait (t ))
1967
1972
blk_queue_flag_set (QUEUE_FLAG_NOWAIT , q );
1968
1973
else
1969
1974
blk_queue_flag_clear (QUEUE_FLAG_NOWAIT , q );
1970
1975
1971
1976
if (!dm_table_supports_discards (t )) {
1972
- limits -> max_hw_discard_sectors = 0 ;
1973
- limits -> discard_granularity = 0 ;
1974
- limits -> discard_alignment = 0 ;
1975
- limits -> discard_misaligned = 0 ;
1977
+ q -> limits .max_discard_sectors = 0 ;
1978
+ q -> limits .max_hw_discard_sectors = 0 ;
1979
+ q -> limits .discard_granularity = 0 ;
1980
+ q -> limits .discard_alignment = 0 ;
1981
+ q -> limits .discard_misaligned = 0 ;
1976
1982
}
1977
1983
1978
- if (!dm_table_supports_write_zeroes (t ))
1979
- limits -> max_write_zeroes_sectors = 0 ;
1980
-
1981
1984
if (!dm_table_supports_secure_erase (t ))
1982
- limits -> max_secure_erase_sectors = 0 ;
1983
-
1984
- r = queue_limits_set (q , limits );
1985
- if (r )
1986
- return r ;
1985
+ q -> limits .max_secure_erase_sectors = 0 ;
1987
1986
1988
1987
if (dm_table_supports_flush (t , (1UL << QUEUE_FLAG_WC ))) {
1989
1988
wc = true;
@@ -2008,6 +2007,9 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
2008
2007
else
2009
2008
blk_queue_flag_set (QUEUE_FLAG_NONROT , q );
2010
2009
2010
+ if (!dm_table_supports_write_zeroes (t ))
2011
+ q -> limits .max_write_zeroes_sectors = 0 ;
2012
+
2011
2013
dm_table_verify_integrity (t );
2012
2014
2013
2015
/*
@@ -2045,6 +2047,7 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
2045
2047
}
2046
2048
2047
2049
dm_update_crypto_profile (q , t );
2050
+ disk_update_readahead (t -> md -> disk );
2048
2051
2049
2052
/*
2050
2053
* Check for request-based device is left to
0 commit comments