mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 14:12:06 +00:00
xfs: expose xfs_bmap_local_to_extents for online repair
Allow online repair to call xfs_bmap_local_to_extents and add a void * argument at the end so that online repair can pass its own context. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
73597e3e42
commit
ef744be416
@ -779,7 +779,7 @@ xfs_bmap_local_to_extents_empty(
|
||||
}
|
||||
|
||||
|
||||
STATIC int /* error */
|
||||
int /* error */
|
||||
xfs_bmap_local_to_extents(
|
||||
xfs_trans_t *tp, /* transaction pointer */
|
||||
xfs_inode_t *ip, /* incore inode pointer */
|
||||
@ -789,7 +789,8 @@ xfs_bmap_local_to_extents(
|
||||
void (*init_fn)(struct xfs_trans *tp,
|
||||
struct xfs_buf *bp,
|
||||
struct xfs_inode *ip,
|
||||
struct xfs_ifork *ifp))
|
||||
struct xfs_ifork *ifp, void *priv),
|
||||
void *priv)
|
||||
{
|
||||
int error = 0;
|
||||
int flags; /* logging flags returned */
|
||||
@ -850,7 +851,7 @@ xfs_bmap_local_to_extents(
|
||||
* log here. Note that init_fn must also set the buffer log item type
|
||||
* correctly.
|
||||
*/
|
||||
init_fn(tp, bp, ip, ifp);
|
||||
init_fn(tp, bp, ip, ifp, priv);
|
||||
|
||||
/* account for the change in fork size */
|
||||
xfs_idata_realloc(ip, -ifp->if_bytes, whichfork);
|
||||
@ -982,8 +983,8 @@ xfs_bmap_add_attrfork_local(
|
||||
|
||||
if (S_ISLNK(VFS_I(ip)->i_mode))
|
||||
return xfs_bmap_local_to_extents(tp, ip, 1, flags,
|
||||
XFS_DATA_FORK,
|
||||
xfs_symlink_local_to_remote);
|
||||
XFS_DATA_FORK, xfs_symlink_local_to_remote,
|
||||
NULL);
|
||||
|
||||
/* should only be called for types that support local format data */
|
||||
ASSERT(0);
|
||||
|
@ -179,6 +179,12 @@ unsigned int xfs_bmap_compute_attr_offset(struct xfs_mount *mp);
|
||||
int xfs_bmap_add_attrfork(struct xfs_inode *ip, int size, int rsvd);
|
||||
void xfs_bmap_local_to_extents_empty(struct xfs_trans *tp,
|
||||
struct xfs_inode *ip, int whichfork);
|
||||
int xfs_bmap_local_to_extents(struct xfs_trans *tp, struct xfs_inode *ip,
|
||||
xfs_extlen_t total, int *logflagsp, int whichfork,
|
||||
void (*init_fn)(struct xfs_trans *tp, struct xfs_buf *bp,
|
||||
struct xfs_inode *ip, struct xfs_ifork *ifp,
|
||||
void *priv),
|
||||
void *priv);
|
||||
void xfs_bmap_compute_maxlevels(struct xfs_mount *mp, int whichfork);
|
||||
int xfs_bmap_first_unused(struct xfs_trans *tp, struct xfs_inode *ip,
|
||||
xfs_extlen_t len, xfs_fileoff_t *unused, int whichfork);
|
||||
|
@ -169,7 +169,8 @@ xfs_symlink_local_to_remote(
|
||||
struct xfs_trans *tp,
|
||||
struct xfs_buf *bp,
|
||||
struct xfs_inode *ip,
|
||||
struct xfs_ifork *ifp)
|
||||
struct xfs_ifork *ifp,
|
||||
void *priv)
|
||||
{
|
||||
struct xfs_mount *mp = ip->i_mount;
|
||||
char *buf;
|
||||
|
@ -16,7 +16,8 @@ int xfs_symlink_hdr_set(struct xfs_mount *mp, xfs_ino_t ino, uint32_t offset,
|
||||
bool xfs_symlink_hdr_ok(xfs_ino_t ino, uint32_t offset,
|
||||
uint32_t size, struct xfs_buf *bp);
|
||||
void xfs_symlink_local_to_remote(struct xfs_trans *tp, struct xfs_buf *bp,
|
||||
struct xfs_inode *ip, struct xfs_ifork *ifp);
|
||||
struct xfs_inode *ip, struct xfs_ifork *ifp,
|
||||
void *priv);
|
||||
xfs_failaddr_t xfs_symlink_shortform_verify(void *sfp, int64_t size);
|
||||
int xfs_symlink_remote_read(struct xfs_inode *ip, char *link);
|
||||
int xfs_symlink_write_target(struct xfs_trans *tp, struct xfs_inode *ip,
|
||||
|
Loading…
Reference in New Issue
Block a user