diff options
author | Yan, Zheng <zyan@redhat.com> | 2015-07-01 17:03:23 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2015-09-08 23:14:28 +0300 |
commit | a341d4df87487ae68189e0be869c39a2b0cb9aaa (patch) | |
tree | 8001abb1feb458a9e4ecf873e4cf592d9199914b /fs/ceph/addr.c | |
parent | 48fec5d0a504dfbb302cb1dd24ebb0b82a46cce9 (diff) | |
download | linux-stable-a341d4df87487ae68189e0be869c39a2b0cb9aaa.tar.gz linux-stable-a341d4df87487ae68189e0be869c39a2b0cb9aaa.tar.bz2 linux-stable-a341d4df87487ae68189e0be869c39a2b0cb9aaa.zip |
ceph: invalidate dirty pages after forced umount
After forced umount, ceph_writepages_start() skips flushing dirty
pages. To make sure inode's reference count get dropped to zero,
we need to invalidate dirty pages.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Diffstat (limited to 'fs/ceph/addr.c')
-rw-r--r-- | fs/ceph/addr.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index 1594f2c590bd..98933350331c 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -719,6 +719,8 @@ static int ceph_writepages_start(struct address_space *mapping, if (ACCESS_ONCE(fsc->mount_state) == CEPH_MOUNT_SHUTDOWN) { pr_warn("writepage_start %p on forced umount\n", inode); + truncate_pagecache(inode, 0); + mapping_set_error(mapping, -EIO); return -EIO; /* we're in a forced umount, don't write! */ } if (fsc->mount_options->wsize && fsc->mount_options->wsize < wsize) |