Currently this flag is unused by ext4, so just pass in 0. This change
happened in kernel commit
aa38572954ade525817fe88c54faebf85e5a61c0.
Apparently the flag is used to tell the difference between timestamp
updates and anything else.
Signed-off-by: James Simmons <uja.ornl@gmail.com>
Signed-off-by: chas williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Change-Id: I24536546256f5f043c1f53e15220b0c956be343f
Reviewed-on: http://review.whamcloud.com/4966
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
])
#
+# 3.0 dirty_inode() has a flag parameter
+# see kernel commit aa38572954ade525817fe88c54faebf85e5a61c0
+#
+AC_DEFUN([LC_DIRTY_INODE_WITH_FLAG],
+[AC_MSG_CHECKING([if dirty_inode super_operation takes flag])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ struct inode *inode;
+ inode->i_sb->s_op->dirty_inode(NULL, 0);
+],[
+ AC_DEFINE(HAVE_DIRTY_INODE_HAS_FLAG, 1,
+ [dirty_inode super_operation takes flag])
+ AC_MSG_RESULT([yes])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
+#
# 2.6.38 generic_permission taken 4 parameters.
# in fact, it means rcu-walk aware permission bring.
#
LC_REQUEST_QUEUE_UNPLUG_FN
LC_HAVE_FSTYPE_MOUNT
+ # 3.0
+ LC_DIRTY_INODE_WITH_FLAG
+
# 3.1
LC_LM_XXX_LOCK_MANAGER_OPS
LC_INODE_DIO_WAIT
}
#endif
+#ifdef HAVE_DIRTY_INODE_HAS_FLAG
+# define ll_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode), flag)
+#else
+# define ll_dirty_inode(inode, flag) (inode)->i_sb->s_op->dirty_inode((inode))
+#endif
+
#endif /* _COMPAT25_H */
spin_unlock(&obj->oo_guard);
if (!rc)
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
return rc;
}
* enabled on ldiskfs (lquota takes care of it).
*/
LASSERTF(result == 0, "%d", result);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
attr->la_valid = valid;
spin_lock(&obj->oo_guard);
clear_nlink(inode);
spin_unlock(&obj->oo_guard);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
osd_trans_exec_op(env, th, OSD_OT_DESTROY);
}
LASSERT(inode->i_nlink <= LDISKFS_LINK_MAX);
spin_unlock(&obj->oo_guard);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
LINVRNT(osd_invariant(obj));
return 0;
if (S_ISDIR(inode->i_mode) && inode->i_nlink == 0)
set_nlink(inode, 1);
spin_unlock(&obj->oo_guard);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
LINVRNT(osd_invariant(obj));
return 0;
LDISKFS_I(inode)->i_fs_version = *new_version;
/** Version is set after all inode operations are finished,
* so we should mark it dirty here */
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
/*
if (isize > i_size_read(inode)) {
i_size_write(inode, isize);
LDISKFS_I(inode)->i_disksize = isize;
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
rc = osd_do_bio(osd, inode, iobuf);
memcpy((char *)&LDISKFS_I(inode)->i_data, (char *)buffer, buflen);
LDISKFS_I(inode)->i_disksize = buflen;
i_size_write(inode, buflen);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
return 0;
}
dirty_inode = 1;
}
spin_unlock(&inode->i_lock);
- if (dirty_inode)
- inode->i_sb->s_op->dirty_inode(inode);
+ if (dirty_inode)
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
if (err == 0)