Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 978ebd97 authored by Ben Myers's avatar Ben Myers Committed by J. Bruce Fields
Browse files

xfs_export_operations.commit_metadata



This is the commit_metadata export operation for XFS.

- Takes one inode to be committed.

- Forces the log up to the lsn of the inode.

- Doesn't force the log if the inode doesn't have a pincount.

Signed-off-by: default avatarBen Myers <bpm@sgi.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <david@fromorbit.com>
[bfields@citi.umich.edu: trivial whitespace fix]
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent f501912a
Loading
Loading
Loading
Loading
+20 −0
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@
#include "xfs_vnodeops.h"
#include "xfs_vnodeops.h"
#include "xfs_bmap_btree.h"
#include "xfs_bmap_btree.h"
#include "xfs_inode.h"
#include "xfs_inode.h"
#include "xfs_inode_item.h"


/*
/*
 * Note that we only accept fileids which are long enough rather than allow
 * 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));
	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 = {
const struct export_operations xfs_export_operations = {
	.encode_fh		= xfs_fs_encode_fh,
	.encode_fh		= xfs_fs_encode_fh,
	.fh_to_dentry		= xfs_fs_fh_to_dentry,
	.fh_to_dentry		= xfs_fs_fh_to_dentry,
	.fh_to_parent		= xfs_fs_fh_to_parent,
	.fh_to_parent		= xfs_fs_fh_to_parent,
	.get_parent		= xfs_fs_get_parent,
	.get_parent		= xfs_fs_get_parent,
	.commit_metadata	= xfs_fs_nfs_commit_metadata,
};
};