Vivek Goyal c83f6bf98d block: add partition resize function to blkpg ioctl
Add a new operation code (BLKPG_RESIZE_PARTITION) to the BLKPG ioctl that
allows altering the size of an existing partition, even if it is currently
in use.

This patch converts hd_struct->nr_sects into sequence counter because
One might extend a partition while IO is happening to it and update of
nr_sects can be non-atomic on 32bit machines with 64bit sector_t. This
can lead to issues like reading inconsistent size of a partition. Sequence
counter have been used so that readers don't have to take bdev mutex lock
as we call sector_in_part() very frequently.

Now all the access to hd_struct->nr_sects should happen using sequence
counter read/update helper functions part_nr_sects_read/part_nr_sects_write.
There is one exception though, set_capacity()/get_capacity(). I think
theoritically race should exist there too but this patch does not
modify set_capacity()/get_capacity() due to sheer number of call sites
and I am afraid that change might break something. I have left that as a
TODO item. We can handle it later if need be. This patch does not introduce
any new races as such w.r.t set_capacity()/get_capacity().

v2: Add CONFIG_LBDAF test to UP preempt case as suggested by Phillip.

Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Phillip Susi <psusi@ubuntu.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2012-08-01 12:24:18 +02:00
..
2012-05-07 15:39:35 -07:00
2012-04-23 14:23:32 +03:00
2012-05-29 11:53:11 -07:00
2012-05-15 17:30:30 -04:00
2012-05-23 14:15:09 -07:00
2012-05-26 12:42:29 -07:00
2012-05-22 15:50:46 -07:00
2012-05-08 14:13:25 -07:00
2012-03-29 15:38:31 +10:30
2012-03-23 16:58:38 -07:00
2012-04-14 15:24:26 -04:00
2012-05-02 14:15:27 -05:00
2012-05-25 12:46:23 +05:30
2012-05-10 12:00:56 +02:00
2012-04-30 15:30:18 -07:00
2012-05-17 15:36:35 -04:00
2012-05-29 23:28:33 -04:00
2012-06-01 16:57:51 -07:00
2012-04-12 12:57:08 +02:00
2012-04-27 10:46:45 +08:00
2012-05-22 11:32:31 +02:00
2012-05-22 16:02:13 -07:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-03-26 21:47:19 +02:00
2012-05-12 14:28:14 +02:00
2012-03-26 21:47:19 +02:00
2012-03-28 15:58:21 -07:00
2012-03-27 22:45:26 -04:00
2012-04-21 16:26:33 -04:00
2012-05-07 10:58:57 -06:00
2012-05-21 21:09:38 +02:00
2012-04-09 11:16:55 -07:00
2012-05-31 17:49:30 -07:00
2012-05-31 17:49:32 -07:00
2012-05-31 17:49:26 -07:00
2012-05-31 17:49:30 -07:00
2012-05-11 10:56:56 +01:00
2012-05-29 23:28:41 -04:00
2012-05-09 13:58:06 -07:00
2012-05-22 15:20:28 -04:00
2012-05-29 16:22:19 -07:00
2012-05-29 22:33:55 -04:00
2012-05-08 20:25:42 +02:00
2012-04-12 15:10:33 -04:00
2012-05-26 14:17:30 -04:00
2012-05-16 15:17:08 -04:00
2012-05-21 14:31:48 +01:00
2012-05-14 14:15:32 -07:00
2012-05-12 15:53:42 -04:00
2012-05-17 08:51:59 -07:00
2012-03-28 18:30:03 +01:00
2012-04-18 15:57:31 -07:00
2012-06-01 12:58:52 -04:00
2012-05-31 17:49:26 -07:00
2012-05-08 12:35:06 +02:00
2012-04-15 12:44:40 -04:00
2012-06-13 21:16:42 +02:00
2012-05-14 18:53:19 -04:00
2012-05-29 16:22:28 -07:00
2012-05-21 16:16:58 -07:00
2012-03-22 19:43:43 -07:00
2012-05-22 12:16:16 +09:30
2012-03-27 16:30:09 -07:00
2012-03-31 08:09:50 +05:30
2012-03-28 18:30:03 +01:00