ceph: allow sync_read/write return partial successed size of read/write.
For sync_read/write, it may do multi stripe operations.If one of those met erro, we return the former successed size rather than a error value. There is a exception for write-operation met -EOLDSNAPC.If this occur,we retry the whole write again. Signed-off-by: Jianpeng Ma <majianpeng@gmail.com>
This commit is contained in:
parent
02ae66d8b2
commit
ee7289bfad
@ -374,7 +374,7 @@ more:
|
|||||||
goto more;
|
goto more;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret >= 0) {
|
if (read > 0) {
|
||||||
ret = read;
|
ret = read;
|
||||||
/* did we bounce off eof? */
|
/* did we bounce off eof? */
|
||||||
if (pos + left > inode->i_size)
|
if (pos + left > inode->i_size)
|
||||||
@ -612,6 +612,8 @@ out:
|
|||||||
if (check_caps)
|
if (check_caps)
|
||||||
ceph_check_caps(ceph_inode(inode), CHECK_CAPS_AUTHONLY,
|
ceph_check_caps(ceph_inode(inode), CHECK_CAPS_AUTHONLY,
|
||||||
NULL);
|
NULL);
|
||||||
|
} else if (ret != -EOLDSNAPC && written > 0) {
|
||||||
|
ret = written;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user