63 lines
2.1 KiB
Diff
63 lines
2.1 KiB
Diff
|
diff --git a/vmblock-only/linux/dentry.c b/vmblock-only/linux/dentry.c
|
||
|
index d885777..513cadd 100644
|
||
|
--- a/vmblock-only/linux/dentry.c
|
||
|
+++ b/vmblock-only/linux/dentry.c
|
||
|
@@ -38,6 +38,20 @@ struct dentry_operations LinkDentryOps = {
|
||
|
.d_revalidate = DentryOpRevalidate,
|
||
|
};
|
||
|
|
||
|
+struct nameidata {
|
||
|
+ struct path path;
|
||
|
+ struct qstr last;
|
||
|
+ struct path root;
|
||
|
+ struct inode *inode; /* path.dentry.d_inode */
|
||
|
+ unsigned int flags;
|
||
|
+ unsigned seq, m_seq;
|
||
|
+ int last_type;
|
||
|
+ unsigned depth;
|
||
|
+ struct file *base;
|
||
|
+ char *saved_names[MAX_NESTED_LINKS + 1];
|
||
|
+};
|
||
|
+
|
||
|
+
|
||
|
|
||
|
/*
|
||
|
*----------------------------------------------------------------------------
|
||
|
diff --git a/vmblock-only/linux/file.c b/vmblock-only/linux/file.c
|
||
|
index 5499169..753e523 100644
|
||
|
--- a/vmblock-only/linux/file.c
|
||
|
+++ b/vmblock-only/linux/file.c
|
||
|
@@ -92,7 +92,7 @@ FileOpOpen(struct inode *inode, // IN
|
||
|
* and that would try to acquire the inode's semaphore; if the two inodes
|
||
|
* are the same we'll deadlock.
|
||
|
*/
|
||
|
- if (actualFile->f_dentry && inode == actualFile->f_dentry->d_inode) {
|
||
|
+ if (actualFile->f_path.dentry && inode == actualFile->f_path.dentry->d_inode) {
|
||
|
Warning("FileOpOpen: identical inode encountered, open cannot succeed.\n");
|
||
|
if (filp_close(actualFile, current->files) < 0) {
|
||
|
Warning("FileOpOpen: unable to close opened file.\n");
|
||
|
diff --git a/vmblock-only/linux/filesystem.c b/vmblock-only/linux/filesystem.c
|
||
|
index af57499..70f97b5 100644
|
||
|
--- a/vmblock-only/linux/filesystem.c
|
||
|
+++ b/vmblock-only/linux/filesystem.c
|
||
|
@@ -76,6 +76,19 @@ static struct file_system_type fsType = {
|
||
|
#endif
|
||
|
.kill_sb = kill_anon_super,
|
||
|
};
|
||
|
+struct nameidata {
|
||
|
+ struct path path;
|
||
|
+ struct qstr last;
|
||
|
+ struct path root;
|
||
|
+ struct inode *inode; /* path.dentry.d_inode */
|
||
|
+ unsigned int flags;
|
||
|
+ unsigned seq, m_seq;
|
||
|
+ int last_type;
|
||
|
+ unsigned depth;
|
||
|
+ struct file *base;
|
||
|
+ char *saved_names[MAX_NESTED_LINKS + 1];
|
||
|
+};
|
||
|
+
|
||
|
|
||
|
|
||
|
/*
|