提交 a4483e8a 编写于 作者: C Chao Yu 提交者: Ilya Dryomov

ceph: remove redundant code for max file size verification

Both ceph_update_writeable_page and ceph_setattr will verify file size
with max size ceph supported.
There are two caller for ceph_update_writeable_page, ceph_write_begin and
ceph_page_mkwrite. For ceph_write_begin, we have already verified the size in
generic_write_checks of ceph_write_iter; for ceph_page_mkwrite, we have no
chance to change file size when mmap. Likewise we have already verified the size
in inode_change_ok when we call ceph_setattr.
So let's remove the redundant code for max file size verification.
Signed-off-by: NChao Yu <chao2.yu@samsung.com>
Reviewed-by: NYan, Zheng <zyan@redhat.com>
上级 3b70b388
...@@ -1076,12 +1076,6 @@ static int ceph_update_writeable_page(struct file *file, ...@@ -1076,12 +1076,6 @@ static int ceph_update_writeable_page(struct file *file,
/* past end of file? */ /* past end of file? */
i_size = inode->i_size; /* caller holds i_mutex */ i_size = inode->i_size; /* caller holds i_mutex */
if (i_size + len > inode->i_sb->s_maxbytes) {
/* file is too big */
r = -EINVAL;
goto fail;
}
if (page_off >= i_size || if (page_off >= i_size ||
(pos_in_page == 0 && (pos+len) >= i_size && (pos_in_page == 0 && (pos+len) >= i_size &&
end_in_page - pos_in_page != PAGE_CACHE_SIZE)) { end_in_page - pos_in_page != PAGE_CACHE_SIZE)) {
...@@ -1099,9 +1093,6 @@ static int ceph_update_writeable_page(struct file *file, ...@@ -1099,9 +1093,6 @@ static int ceph_update_writeable_page(struct file *file,
if (r < 0) if (r < 0)
goto fail_nosnap; goto fail_nosnap;
goto retry_locked; goto retry_locked;
fail:
up_read(&mdsc->snap_rwsem);
fail_nosnap: fail_nosnap:
unlock_page(page); unlock_page(page);
return r; return r;
......
...@@ -1813,10 +1813,6 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) ...@@ -1813,10 +1813,6 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr)
if (ia_valid & ATTR_SIZE) { if (ia_valid & ATTR_SIZE) {
dout("setattr %p size %lld -> %lld\n", inode, dout("setattr %p size %lld -> %lld\n", inode,
inode->i_size, attr->ia_size); inode->i_size, attr->ia_size);
if (attr->ia_size > inode->i_sb->s_maxbytes) {
err = -EINVAL;
goto out;
}
if ((issued & CEPH_CAP_FILE_EXCL) && if ((issued & CEPH_CAP_FILE_EXCL) &&
attr->ia_size > inode->i_size) { attr->ia_size > inode->i_size) {
inode->i_size = attr->ia_size; inode->i_size = attr->ia_size;
...@@ -1896,8 +1892,6 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) ...@@ -1896,8 +1892,6 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr)
if (mask & CEPH_SETATTR_SIZE) if (mask & CEPH_SETATTR_SIZE)
__ceph_do_pending_vmtruncate(inode); __ceph_do_pending_vmtruncate(inode);
return err; return err;
out:
spin_unlock(&ci->i_ceph_lock);
out_put: out_put:
ceph_mdsc_put_request(req); ceph_mdsc_put_request(req);
return err; return err;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册