ssize_t ret;
int got = 0;
int check = 0;
+ loff_t endoff = *ppos + len;
/* do we need to explicitly request a larger max_size? */
spin_lock(&inode->i_lock);
- if (*ppos > ci->i_max_size &&
- *ppos > (inode->i_size << 1) &&
- *ppos > ci->i_wanted_max_size) {
- dout(10, "write %p at large offset %llu, requesting max_size\n",
- inode, *ppos);
- ci->i_wanted_max_size = *ppos+len;
+ if (endoff >= ci->i_max_size &&
+ endoff > (inode->i_size << 1) &&
+ endoff > ci->i_wanted_max_size) {
+ dout(10, "write %p at large endoff %llu, req max_size\n",
+ inode, endoff);
+ ci->i_wanted_max_size = endoff;
check = 1;
}
spin_unlock(&inode->i_lock);
}
int ceph_get_cap_refs(struct ceph_inode_info *ci, int need, int want, int *got,
- loff_t offset)
+ loff_t endoff)
{
int ret = 0;
int have;
dout(30, "get_cap_refs on %p need %d want %d\n", &ci->vfs_inode,
need, want);
spin_lock(&ci->vfs_inode.i_lock);
- if (offset >= 0 && offset >= (loff_t)ci->i_max_size) {
- dout(20, "get_cap_refs offset %llu >= max_size %llu\n",
- offset, ci->i_max_size);
+ if (endoff >= 0 && endoff > (loff_t)ci->i_max_size) {
+ dout(20, "get_cap_refs endoff %llu > max_size %llu\n",
+ endoff, ci->i_max_size);
goto sorry;
}
have = __ceph_caps_issued(ci);