[CRIU] [crtools-bot for Pavel Emelyanov ] sockets: Decode kernel
dev_t into stat's one
Cyrill Gorcunov
gorcunov at openvz.org
Wed Feb 8 07:11:27 EST 2012
The commit is pushed to "master" and will appear on git://github.com/cyrillos/crtools.git
------>
commit 82a8a8ff95200968f44a86a70cc59ed5325f85b9
Author: Pavel Emelyanov <xemul at parallels.com>
Date: Wed Feb 8 16:09:04 2012 +0400
sockets: Decode kernel dev_t into stat's one
Unix diag and stat report dev_t-s in different formats. Cast one to
another when comparing in unix dumping.
Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
include/util.h | 21 +++++++++++++++++++++
sockets.c | 5 ++++-
2 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/include/util.h b/include/util.h
index e9c1832..5fab3f4 100644
--- a/include/util.h
+++ b/include/util.h
@@ -264,4 +264,25 @@ FILE *fopen_proc(int pid_dir_fd, char *fmt, ...);
#define pr_img_head(type, ...) pr_info("\n"#type __VA_ARGS__ "\n----------------\n")
#define pr_img_tail(type) pr_info("----------------\n")
+#define KDEV_MINORBITS 20
+#define KDEV_MINORMASK ((1UL << KDEV_MINORBITS) - 1)
+
+static inline u32 kdev_major(u32 kdev)
+{
+ return kdev >> KDEV_MINORBITS;
+}
+
+static inline u32 kdev_minor(u32 kdev)
+{
+ return kdev & KDEV_MINORMASK;
+}
+
+static inline dev_t kdev_to_odev(u32 kdev)
+{
+ /*
+ * New kernels envcode devices in a new form
+ */
+ return (kdev_major(kdev) << 8) | kdev_minor(kdev);
+}
+
#endif /* UTIL_H_ */
diff --git a/sockets.c b/sockets.c
index 2b8a1b4..2c21e5e 100644
--- a/sockets.c
+++ b/sockets.c
@@ -466,7 +466,10 @@ static int unix_collect_one(struct unix_diag_msg *m, struct rtattr **tb)
}
if ((st.st_ino != uv->udiag_vfs_ino) ||
- (st.st_dev != uv->udiag_vfs_dev)) {
+ (st.st_dev != kdev_to_odev(uv->udiag_vfs_dev))) {
+ pr_info("unix: Dropping path for unlinked bound sk %x.%x real %x.%x\n",
+ (int)st.st_dev, (int)st.st_ino,
+ (int)uv->udiag_vfs_dev, (int)uv->udiag_vfs_ino);
/*
* When a listen socket is bound to
* unlinked file, we just drop his name,
More information about the CRIU
mailing list