|
@@ -257,9 +257,11 @@ static int filemap_check_errors(struct address_space *mapping)
|
|
{
|
|
{
|
|
int ret = 0;
|
|
int ret = 0;
|
|
/* Check for outstanding write errors */
|
|
/* Check for outstanding write errors */
|
|
- if (test_and_clear_bit(AS_ENOSPC, &mapping->flags))
|
|
|
|
|
|
+ if (test_bit(AS_ENOSPC, &mapping->flags) &&
|
|
|
|
+ test_and_clear_bit(AS_ENOSPC, &mapping->flags))
|
|
ret = -ENOSPC;
|
|
ret = -ENOSPC;
|
|
- if (test_and_clear_bit(AS_EIO, &mapping->flags))
|
|
|
|
|
|
+ if (test_bit(AS_EIO, &mapping->flags) &&
|
|
|
|
+ test_and_clear_bit(AS_EIO, &mapping->flags))
|
|
ret = -EIO;
|
|
ret = -EIO;
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|