Commit 4058f742 authored by David Howells's avatar David Howells
Browse files

netfs: Keep track of the actual remote file size



Provide a place in which to keep track of the actual remote file size in
the netfs context.  This is needed because inode->i_size will be updated as
we buffer writes in the pagecache, but the server file size won't get
updated until we flush them back.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
cc: linux-cachefs@redhat.com

Link: https://lore.kernel.org/r/164623013727.3564931.17659955636985232717.stgit@warthog.procyon.org.uk/ # v1
Link: https://lore.kernel.org/r/164678219305.1200972.6459431995188365134.stgit@warthog.procyon.org.uk/ # v2
Link: https://lore.kernel.org/r/164692921865.2099075.5310757978508056134.stgit@warthog.procyon.org.uk/ # v3
parent b900f4b8
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@ struct netfs_i_context {
#if IS_ENABLED(CONFIG_FSCACHE)
	struct fscache_cookie	*cache;
#endif
	loff_t			remote_i_size;	/* Size of the remote file */
};

/*
@@ -324,6 +325,21 @@ static inline void netfs_i_context_init(struct inode *inode,

	memset(ctx, 0, sizeof(*ctx));
	ctx->ops = ops;
	ctx->remote_i_size = i_size_read(inode);
}

/**
 * netfs_resize_file - Note that a file got resized
 * @inode: The inode being resized
 * @new_i_size: The new file size
 *
 * Inform the netfs lib that a file got resized so that it can adjust its state.
 */
static inline void netfs_resize_file(struct inode *inode, loff_t new_i_size)
{
	struct netfs_i_context *ctx = netfs_i_context(inode);

	ctx->remote_i_size = new_i_size;
}

/**