summaryrefslogtreecommitdiff
path: root/fs/ceph/super.h
diff options
context:
space:
mode:
authorYan, Zheng <zyan@redhat.com>2019-07-25 20:16:42 +0800
committerIlya Dryomov <idryomov@gmail.com>2019-09-16 12:06:23 +0200
commitf4b97866223b8dddd1bcb9d2a9546c5a5e430249 (patch)
treec9d4d9feede3bb044cd7131e202602b446c43147 /fs/ceph/super.h
parent7e6906c1e670f0b40554f42ba74cc043d094877c (diff)
ceph: track and report error of async metadata operation
Use errseq_t to track and report errors of async metadata operations, similar to how kernel handles errors during writeback. If any dirty caps or any unsafe request gets dropped during session eviction, record -EIO in corresponding inode's i_meta_err. The error will be reported by subsequent fsync, Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/super.h')
-rw-r--r--fs/ceph/super.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index 6b9f1ee7de85..66dfe5ebf006 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -395,6 +395,8 @@ struct ceph_inode_info {
struct fscache_cookie *fscache;
u32 i_fscache_gen;
#endif
+ errseq_t i_meta_err;
+
struct inode vfs_inode; /* at end */
};
@@ -703,6 +705,8 @@ struct ceph_file_info {
spinlock_t rw_contexts_lock;
struct list_head rw_contexts;
+
+ errseq_t meta_err;
};
struct ceph_dir_file_info {