mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
ceph: don't use -ESTALE as special return code in try_get_cap_refs
In some cases, we may want to return -ESTALE if it ends up that we're dealing with an inode that no longer exists. Switch to using -EUCLEAN as the "special" error return. Signed-off-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
6407fbb9c3
commit
8006daff5f
1 changed files with 8 additions and 8 deletions
|
@ -2630,9 +2630,9 @@ void ceph_take_cap_refs(struct ceph_inode_info *ci, int got,
|
|||
*
|
||||
* Returns 0 if caps were not able to be acquired (yet), 1 if succeed,
|
||||
* or a negative error code. There are 3 speical error codes:
|
||||
* -EAGAIN: need to sleep but non-blocking is specified
|
||||
* -EFBIG: ask caller to call check_max_size() and try again.
|
||||
* -ESTALE: ask caller to call ceph_renew_caps() and try again.
|
||||
* -EAGAIN: need to sleep but non-blocking is specified
|
||||
* -EFBIG: ask caller to call check_max_size() and try again.
|
||||
* -EUCLEAN: ask caller to call ceph_renew_caps() and try again.
|
||||
*/
|
||||
enum {
|
||||
/* first 8 bits are reserved for CEPH_FILE_MODE_FOO */
|
||||
|
@ -2680,7 +2680,7 @@ static int try_get_cap_refs(struct inode *inode, int need, int want,
|
|||
dout("get_cap_refs %p endoff %llu > maxsize %llu\n",
|
||||
inode, endoff, ci->i_max_size);
|
||||
if (endoff > ci->i_requested_max_size)
|
||||
ret = ci->i_auth_cap ? -EFBIG : -ESTALE;
|
||||
ret = ci->i_auth_cap ? -EFBIG : -EUCLEAN;
|
||||
goto out_unlock;
|
||||
}
|
||||
/*
|
||||
|
@ -2760,7 +2760,7 @@ static int try_get_cap_refs(struct inode *inode, int need, int want,
|
|||
dout("get_cap_refs %p need %s > mds_wanted %s\n",
|
||||
inode, ceph_cap_string(need),
|
||||
ceph_cap_string(mds_wanted));
|
||||
ret = -ESTALE;
|
||||
ret = -EUCLEAN;
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
|
@ -2844,7 +2844,7 @@ int ceph_try_get_caps(struct inode *inode, int need, int want,
|
|||
|
||||
ret = try_get_cap_refs(inode, need, want, 0, flags, got);
|
||||
/* three special error codes */
|
||||
if (ret == -EAGAIN || ret == -EFBIG || ret == -ESTALE)
|
||||
if (ret == -EAGAIN || ret == -EFBIG || ret == -EUCLEAN)
|
||||
ret = 0;
|
||||
return ret;
|
||||
}
|
||||
|
@ -2927,7 +2927,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
|
|||
}
|
||||
|
||||
if (ret < 0) {
|
||||
if (ret == -EFBIG || ret == -ESTALE) {
|
||||
if (ret == -EFBIG || ret == -EUCLEAN) {
|
||||
int ret2 = ceph_wait_on_async_create(inode);
|
||||
if (ret2 < 0)
|
||||
return ret2;
|
||||
|
@ -2936,7 +2936,7 @@ int ceph_get_caps(struct file *filp, int need, int want, loff_t endoff, int *got
|
|||
check_max_size(inode, endoff);
|
||||
continue;
|
||||
}
|
||||
if (ret == -ESTALE) {
|
||||
if (ret == -EUCLEAN) {
|
||||
/* session was killed, try renew caps */
|
||||
ret = ceph_renew_caps(inode, flags);
|
||||
if (ret == 0)
|
||||
|
|
Loading…
Reference in a new issue