Minchan Kim
2e32baea46
zram: revalidate disk after capacity change
...
Alexander reported mkswap on /dev/zram0 is failed if other process is
opening the block device file.
Step is as follows,
0. Reset the unused zram device.
1. Use a program that opens /dev/zram0 with O_RDWR and sleeps
until killed.
2. While that program sleeps, echo the correct value to
/sys/block/zram0/disksize.
3. Verify (e.g. in /proc/partitions) that the disk size is applied
correctly. It is.
4. While that program still sleeps, attempt to mkswap /dev/zram0.
This fails: mkswap: error: swap area needs to be at least 40 KiB
When I investigated, the size get by ioctl(fd, BLKGETSIZE64, xxx) on
mkswap to get a size of blockdev was zero although zram0 has right size by
2.
The reason is zram didn't revalidate disk after changing capacity so that
size of blockdev's inode is not uptodate until all of file is close.
This patch should fix the BUG.
Signed-off-by: Minchan Kim <minchan@kernel.org>
Reported-by: Alexander E. Patrakov <patrakov@gmail.com>
Tested-by: Alexander E. Patrakov <patrakov@gmail.com>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Nitin Gupta <ngupta@vflare.org>
Acked-by: Jerome Marchand <jmarchan@redhat.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-07-03 09:21:53 -07:00
..
aoe
mm: close PageTail race
2014-03-04 07:55:47 -08:00
drbd
drbd: fix NULL pointer deref in blk_add_request_payload
2014-06-25 09:53:47 -06:00
mtip32xx
mtip32xx: minor performance enhancements
2014-06-06 13:28:48 -06:00
paride
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
rsxx
block: Convert bio_for_each_segment() to bvec_iter
2013-11-23 22:33:49 -08:00
xen-blkback
xen-blkback: defer freeing blkif to avoid blocking xenwatch
2014-05-28 14:17:32 -04:00
zram
zram: revalidate disk after capacity change
2014-07-03 09:21:53 -07:00
amiflop.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
ataflop.c
Merge branch 'for-3.16/core' of git://git.kernel.dk/linux-block into next
2014-06-02 09:29:34 -07:00
brd.c
brd: return -ENOSPC rather than -ENOMEM on page allocation failure
2014-06-04 16:54:02 -07:00
cciss.c
cciss: Use pci_enable_msix_exact() instead of pci_enable_msix()
2014-04-21 19:02:08 -06:00
cciss.h
cciss: Adds simple mode functionality
2011-08-08 11:40:15 +02:00
cciss_cmd.h
cciss: use new doorbell-bit-5 reset method
2011-05-06 08:23:55 -06:00
cciss_scsi.c
cciss: switch to ->show_info()
2013-04-09 14:13:19 -04:00
cciss_scsi.h
cciss: add cciss_tape_cmds module paramter
2011-05-06 08:23:59 -06:00
cpqarray.c
cpqarray: fix info leak in ida_locked_ioctl()
2013-09-24 17:00:26 -07:00
cpqarray.h
cryptoloop.c
move linux/loop.h to drivers/block
2013-06-29 12:46:45 +04:00
DAC960.c
DAC960: remove sleep_on usage
2014-03-13 14:56:38 -06:00
DAC960.h
floppy.c
Merge branch 'for-jens' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/linux-block into for-linus
2014-06-18 10:30:22 -07:00
hd.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
ida_cmd.h
ida_ioctl.h
Kconfig
zram: promote zram from staging
2014-01-30 16:56:55 -08:00
loop.c
Merge branch 'sched/urgent' into sched/core, to avoid conflicts
2014-05-07 13:15:46 +02:00
loop.h
move linux/loop.h to drivers/block
2013-06-29 12:46:45 +04:00
Makefile
zram: promote zram from staging
2014-01-30 16:56:55 -08:00
mg_disk.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
nbd.c
nbd: zero from and len fields in NBD_CMD_DISCONNECT.
2014-06-06 16:08:18 -07:00
null_blk.c
null_blk: fix softirq completions for queue_mode == 1
2014-06-16 11:40:25 -06:00
nvme-core.c
Merge git://git.infradead.org/users/willy/linux-nvme
2014-06-15 15:58:03 -10:00
nvme-scsi.c
NVMe: Fix START_STOP_UNIT Scsi->NVMe translation.
2014-06-13 13:11:00 -04:00
osdblk.c
block: replace strict_strtoul() with kstrtoul()
2013-09-11 15:56:56 -07:00
pktcdvd.c
block: add blk_rq_set_block_pc()
2014-06-06 07:57:37 -06:00
ps3disk.c
block: Kill bio_segments()/bi_vcnt usage
2013-11-23 22:33:51 -08:00
ps3vram.c
block: Convert bio_for_each_segment() to bvec_iter
2013-11-23 22:33:49 -08:00
rbd.c
rbd: handle parent_overlap on writes correctly
2014-06-23 12:55:37 +04:00
rbd_types.h
rbd: get rid of RBD_MAX_SEG_NAME_LEN
2012-12-17 08:37:29 -06:00
skd_main.c
Merge branch 'for-3.16/core' into for-3.16/drivers
2014-05-28 09:50:26 -06:00
skd_s1120.h
skd: fix formatting in skd_s1120.h
2013-11-08 09:10:30 -07:00
smart1,2.h
sunvdc.c
sunvdc: Fix off-by-one in generic_request().
2013-02-14 11:49:01 -08:00
swim.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
swim3.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
swim_asm.S
sx8.c
drivers/block/sx8.c: remove unnecessary pci_set_drvdata()
2014-01-21 20:16:56 -08:00
umem.c
block: Convert drivers to immutable biovecs
2013-11-23 22:33:51 -08:00
umem.h
virtio_blk.c
Merge branch 'for-3.16/core' of git://git.kernel.dk/linux-block into next
2014-06-02 09:29:34 -07:00
xen-blkfront.c
Merge branch 'stable/for-jens-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip into for-3.16/drivers
2014-05-28 12:37:04 -06:00
xsysace.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00
z2ram.c
block: remove struct request buffer member
2014-04-15 14:03:02 -06:00