[CRIU] [PATCH] [RFC] fsnotify: don't call check_open_handle() for remapped and ghost files

Andrey Vagin avagin at openvz.org
Tue Sep 2 03:17:12 PDT 2014


Handles are not used for restoring these files. AUFS can't open unlinked
files by handle.

Signed-off-by: Andrey Vagin <avagin at openvz.org>
---
 fsnotify.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/fsnotify.c b/fsnotify.c
index 09b793d..9a1c7dd 100644
--- a/fsnotify.c
+++ b/fsnotify.c
@@ -215,11 +215,6 @@ static int dump_inotify_entry(union fdinfo_entries *e, void *arg)
 			we->f_handle->bytes, we->f_handle->type,
 			we->f_handle->handle[0], we->f_handle->handle[1]);
 
-	if (check_open_handle(we->s_dev, we->i_ino, we->f_handle)) {
-		free_inotify_wd_entry(e);
-		return -1;
-	}
-
 	list_add(&wd_entry->node, &wd_list->list);
 	wd_list->n++;
 
@@ -299,9 +294,6 @@ static int dump_fanotify_entry(union fdinfo_entries *e, void *arg)
 		pr_info("\t[fhandle] bytes 0x%08x type 0x%08x __handle 0x%016"PRIx64":0x%016"PRIx64"\n",
 			fme->ie->f_handle->bytes, fme->ie->f_handle->type,
 			fme->ie->f_handle->handle[0], fme->ie->f_handle->handle[1]);
-
-		if (check_open_handle(fme->s_dev, fme->ie->i_ino, fme->ie->f_handle))
-			goto out;
 	}
 
 	if (fme->type == MARK_TYPE__MOUNT) {
@@ -668,6 +660,11 @@ static int __collect_inotify_mark(struct fsnotify_file_info *p, struct fsnotify_
 
 	list_add_tail(&mark->list, &m->list);
 	mark->remap = lookup_ghost_remap(mark->iwe->s_dev, mark->iwe->i_ino);
+	if (mark->remap == NULL &&
+            check_open_handle(mark->iwe->s_dev, mark->iwe->i_ino, mark->iwe->f_handle)) {
+			return -1;
+	}
+
 	return 0;
 }
 
@@ -686,9 +683,13 @@ static int __collect_fanotify_mark(struct fsnotify_file_info *p,
 				struct fsnotify_mark_info *mark)
 {
 	list_add(&mark->list, &p->marks);
-	if (mark->fme->type == MARK_TYPE__INODE)
+	if (mark->fme->type == MARK_TYPE__INODE) {
 		mark->remap = lookup_ghost_remap(mark->fme->s_dev,
 						 mark->fme->ie->i_ino);
+		if (mark->remap == NULL &&
+		    check_open_handle(mark->fme->s_dev, mark->fme->ie->i_ino, mark->fme->ie->f_handle))
+			return -1;
+	}
 	return 0;
 }
 
-- 
1.9.3



More information about the CRIU mailing list