diff options
author | majianpeng <majianpeng@gmail.com> | 2013-08-08 09:32:19 +0200 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-08-10 02:55:43 +0200 |
commit | 0e5dd45ce4c41d3e3857116a77f34f04c99e78ad (patch) | |
tree | 5c55028ec8312394bcffddc19652eae3cd16ba77 /fs/ceph | |
parent | block: rbd: use NULL instead of 0 (diff) | |
download | linux-0e5dd45ce4c41d3e3857116a77f34f04c99e78ad.tar.xz linux-0e5dd45ce4c41d3e3857116a77f34f04c99e78ad.zip |
ceph: Move the place for EOLDSNAPC handle in ceph_aio_write to easily understand
Only for ceph_sync_write, the osd can return EOLDSNAPC.so move the
related codes after the call ceph_sync_write.
Signed-off-by: Jianpeng Ma <majianpeng@gmail.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'fs/ceph')
-rw-r--r-- | fs/ceph/file.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c index 63ec830b9306..7478d5dbd1aa 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -766,6 +766,15 @@ retry_snap: mutex_unlock(&inode->i_mutex); written = ceph_sync_write(file, iov->iov_base, count, pos, &iocb->ki_pos); + if (written == -EOLDSNAPC) { + dout("aio_write %p %llx.%llx %llu~%u" + "got EOLDSNAPC, retrying\n", + inode, ceph_vinop(inode), + pos, (unsigned)iov->iov_len); + mutex_lock(&inode->i_mutex); + hold_mutex = true; + goto retry_snap; + } } else { written = generic_file_buffered_write(iocb, iov, nr_segs, pos, &iocb->ki_pos, @@ -796,13 +805,6 @@ retry_snap: written = err; } - if (written == -EOLDSNAPC) { - dout("aio_write %p %llx.%llx %llu~%u got EOLDSNAPC, retrying\n", - inode, ceph_vinop(inode), pos, (unsigned)iov->iov_len); - mutex_lock(&inode->i_mutex); - hold_mutex = true; - goto retry_snap; - } out: if (hold_mutex) mutex_unlock(&inode->i_mutex); |