#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/string.h>
-@@ -466,6 +467,8 @@
+@@ -465,6 +466,8 @@
+ inode->i_fop = &extN_file_operations;
inode->i_mapping->a_ops = &ext3_aops;
- ext3_mark_inode_dirty(handle, inode);
err = ext3_add_nondir(handle, dentry, inode);
+ if (err)
+ ext3_xattr_drop_inode(handle, inode);
+ ext3_mark_inode_dirty(handle, inode);
}
ext3_journal_stop(handle, dir);
- return err;
-@@ -491,6 +494,8 @@
+@@ -490,6 +493,8 @@
+ if (!IS_ERR(inode)) {
init_special_inode(inode, mode, rdev);
- ext3_mark_inode_dirty(handle, inode);
err = ext3_add_nondir(handle, dentry, inode);
+ if (err)
+ ext3_xattr_drop_inode(handle, inode);
+ ext3_mark_inode_dirty(handle, inode);
}
ext3_journal_stop(handle, dir);
- return err;
@@ -514,7 +519,7 @@
if (IS_SYNC(dir))
handle->h_sync = 1;