[Ocfs2-devel] [PATCH]bugfix for unlinking on 2.6 kernel
Rusty Lynch
rusty at linux.co.intel.com
Sun Mar 14 16:58:49 CST 2004
On a 2.6 kernel, sys_unlink will wrap the call to the filesystem
unlink function with atomic_inc/atomic_dec of the inode->i_count.
The following minimal patch fixes ocfs_unlink to take this into
consideration. (Without this patch attempting to delete any file
on a ocfs2 volume from a 2.6 bases system would result in an -EBUSY
error.)
--rusty
Index: src/namei.c
===================================================================
--- src/namei.c (revision 776)
+++ src/namei.c (working copy)
@@ -575,7 +575,15 @@
__u64 parentOff, fileOff;
bool do_release = false;
struct inode *parentInode = dentry->d_parent->d_inode;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+ /*
+ * On a 2.6 kernel sys_unlink will increment the inode
+ * count before calling the filesystem unlink function
+ */
+ int max_cnt = 3; /* one for this process, inode hash, and sys_unlink */
+#else
int max_cnt = 2; /* one for this process and one for inode hash */
+#endif
LOG_ENTRY_ARGS ("(0x%08x, 0x%08x, '%*s')\n", dir, dentry,
dentry->d_name.len, dentry->d_name.name);
More information about the Ocfs2-devel
mailing list