|
@@ -29,6 +29,7 @@
|
|
|
#include "xfs_vnodeops.h"
|
|
|
#include "xfs_bmap_btree.h"
|
|
|
#include "xfs_inode.h"
|
|
|
+#include "xfs_inode_item.h"
|
|
|
|
|
|
/*
|
|
|
* Note that we only accept fileids which are long enough rather than allow
|
|
@@ -215,9 +216,28 @@ xfs_fs_get_parent(
|
|
|
return d_obtain_alias(VFS_I(cip));
|
|
|
}
|
|
|
|
|
|
+STATIC int
|
|
|
+xfs_fs_nfs_commit_metadata(
|
|
|
+ struct inode *inode)
|
|
|
+{
|
|
|
+ struct xfs_inode *ip = XFS_I(inode);
|
|
|
+ struct xfs_mount *mp = ip->i_mount;
|
|
|
+ int error = 0;
|
|
|
+
|
|
|
+ xfs_ilock(ip, XFS_ILOCK_SHARED);
|
|
|
+ if (xfs_ipincount(ip)) {
|
|
|
+ error = _xfs_log_force(mp, ip->i_itemp->ili_last_lsn,
|
|
|
+ XFS_LOG_FORCE | XFS_LOG_SYNC, NULL);
|
|
|
+ }
|
|
|
+ xfs_iunlock(ip, XFS_ILOCK_SHARED);
|
|
|
+
|
|
|
+ return error;
|
|
|
+}
|
|
|
+
|
|
|
const struct export_operations xfs_export_operations = {
|
|
|
.encode_fh = xfs_fs_encode_fh,
|
|
|
.fh_to_dentry = xfs_fs_fh_to_dentry,
|
|
|
.fh_to_parent = xfs_fs_fh_to_parent,
|
|
|
.get_parent = xfs_fs_get_parent,
|
|
|
+ .commit_metadata = xfs_fs_nfs_commit_metadata,
|
|
|
};
|