Commit 4d41ead6 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'block-5.9-2020-08-28' of git://git.kernel.dk/linux-block

Pull block fixes from Jens Axboe:

 - nbd timeout fix (Hou)

 - device size fix for loop LOOP_CONFIGURE (Martijn)

 - MD pull from Song with raid5 stripe size fix (Yufen)

* tag 'block-5.9-2020-08-28' of git://git.kernel.dk/linux-block:
  md/raid5: make sure stripe_size as power of two
  loop: Set correct device size when using LOOP_CONFIGURE
  nbd: restore default timeout when setting it to zero
parents 24148d86 a433d721
...@@ -1114,8 +1114,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, ...@@ -1114,8 +1114,6 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
mapping = file->f_mapping; mapping = file->f_mapping;
inode = mapping->host; inode = mapping->host;
size = get_loop_size(lo, file);
if ((config->info.lo_flags & ~LOOP_CONFIGURE_SETTABLE_FLAGS) != 0) { if ((config->info.lo_flags & ~LOOP_CONFIGURE_SETTABLE_FLAGS) != 0) {
error = -EINVAL; error = -EINVAL;
goto out_unlock; goto out_unlock;
...@@ -1165,6 +1163,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode, ...@@ -1165,6 +1163,8 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
loop_update_rotational(lo); loop_update_rotational(lo);
loop_update_dio(lo); loop_update_dio(lo);
loop_sysfs_init(lo); loop_sysfs_init(lo);
size = get_loop_size(lo, file);
loop_set_size(lo, size); loop_set_size(lo, size);
set_blocksize(bdev, S_ISBLK(inode->i_mode) ? set_blocksize(bdev, S_ISBLK(inode->i_mode) ?
......
...@@ -1363,6 +1363,8 @@ static void nbd_set_cmd_timeout(struct nbd_device *nbd, u64 timeout) ...@@ -1363,6 +1363,8 @@ static void nbd_set_cmd_timeout(struct nbd_device *nbd, u64 timeout)
nbd->tag_set.timeout = timeout * HZ; nbd->tag_set.timeout = timeout * HZ;
if (timeout) if (timeout)
blk_queue_rq_timeout(nbd->disk->queue, timeout * HZ); blk_queue_rq_timeout(nbd->disk->queue, timeout * HZ);
else
blk_queue_rq_timeout(nbd->disk->queue, 30 * HZ);
} }
/* Must be called with config_lock held */ /* Must be called with config_lock held */
......
...@@ -6514,9 +6514,12 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len) ...@@ -6514,9 +6514,12 @@ raid5_store_stripe_size(struct mddev *mddev, const char *page, size_t len)
/* /*
* The value should not be bigger than PAGE_SIZE. It requires to * The value should not be bigger than PAGE_SIZE. It requires to
* be multiple of DEFAULT_STRIPE_SIZE. * be multiple of DEFAULT_STRIPE_SIZE and the value should be power
* of two.
*/ */
if (new % DEFAULT_STRIPE_SIZE != 0 || new > PAGE_SIZE || new == 0) if (new % DEFAULT_STRIPE_SIZE != 0 ||
new > PAGE_SIZE || new == 0 ||
new != roundup_pow_of_two(new))
return -EINVAL; return -EINVAL;
err = mddev_lock(mddev); err = mddev_lock(mddev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment