On 9/21/16 11:43 AM, David Sterba wrote:
> Some functions introduced a local fs_info pointer for the message
> helpers. If btrfs_debug results to an empty macro, the fs_info pointer
> is reported to be unused. Splitting the variable declaration and setting
> will silence the warning, without any functional change.
I'm investigating fixing this differently. I'd like the no-call version
to silence the warning and let gcc optimize it out behind the seems if
possible.
-Jeff
> Signed-off-by: David Sterba <dsterba@xxxxxxxx>
> ---
> fs/btrfs/extent_io.c | 4 +++-
> fs/btrfs/send.c | 33 ++++++++++++++++++++++-----------
> 2 files changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
> index dac448f056ae..e9364f2cff11 100644
> --- a/fs/btrfs/extent_io.c
> +++ b/fs/btrfs/extent_io.c
> @@ -2188,7 +2188,7 @@ void btrfs_free_io_failure_record(struct inode *inode, u64 start, u64 end)
> int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end,
> struct io_failure_record **failrec_ret)
> {
> - struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
> + struct btrfs_fs_info *fs_info;
> struct io_failure_record *failrec;
> struct extent_map *em;
> struct extent_io_tree *failure_tree = &BTRFS_I(inode)->io_failure_tree;
> @@ -2197,6 +2197,8 @@ int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end,
> int ret;
> u64 logical;
>
> + fs_info = btrfs_sb(inode->i_sb);
> +
> ret = get_state_failrec(failure_tree, start, &failrec);
> if (ret) {
> failrec = kzalloc(sizeof(*failrec), GFP_NOFS);
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index 978796865bfc..596dbab0618d 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -723,9 +723,10 @@ static int send_cmd(struct send_ctx *sctx)
> static int send_rename(struct send_ctx *sctx,
> struct fs_path *from, struct fs_path *to)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_rename %s -> %s", from->start, to->start);
>
> ret = begin_cmd(sctx, BTRFS_SEND_C_RENAME);
> @@ -748,9 +749,10 @@ static int send_rename(struct send_ctx *sctx,
> static int send_link(struct send_ctx *sctx,
> struct fs_path *path, struct fs_path *lnk)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_link %s -> %s", path->start, lnk->start);
>
> ret = begin_cmd(sctx, BTRFS_SEND_C_LINK);
> @@ -772,9 +774,10 @@ static int send_link(struct send_ctx *sctx,
> */
> static int send_unlink(struct send_ctx *sctx, struct fs_path *path)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_unlink %s", path->start);
>
> ret = begin_cmd(sctx, BTRFS_SEND_C_UNLINK);
> @@ -795,9 +798,10 @@ static int send_unlink(struct send_ctx *sctx, struct fs_path *path)
> */
> static int send_rmdir(struct send_ctx *sctx, struct fs_path *path)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_rmdir %s", path->start);
>
> ret = begin_cmd(sctx, BTRFS_SEND_C_RMDIR);
> @@ -2422,10 +2426,11 @@ static int send_subvol_begin(struct send_ctx *sctx)
>
> static int send_truncate(struct send_ctx *sctx, u64 ino, u64 gen, u64 size)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_truncate %llu size=%llu", ino, size);
>
> p = fs_path_alloc();
> @@ -2452,10 +2457,11 @@ static int send_truncate(struct send_ctx *sctx, u64 ino, u64 gen, u64 size)
>
> static int send_chmod(struct send_ctx *sctx, u64 ino, u64 gen, u64 mode)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_chmod %llu mode=%llu", ino, mode);
>
> p = fs_path_alloc();
> @@ -2482,10 +2488,11 @@ static int send_chmod(struct send_ctx *sctx, u64 ino, u64 gen, u64 mode)
>
> static int send_chown(struct send_ctx *sctx, u64 ino, u64 gen, u64 uid, u64 gid)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_chown %llu uid=%llu, gid=%llu",
> ino, uid, gid);
>
> @@ -2514,7 +2521,7 @@ static int send_chown(struct send_ctx *sctx, u64 ino, u64 gen, u64 uid, u64 gid)
>
> static int send_utimes(struct send_ctx *sctx, u64 ino, u64 gen)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p = NULL;
> struct btrfs_inode_item *ii;
> @@ -2523,6 +2530,7 @@ static int send_utimes(struct send_ctx *sctx, u64 ino, u64 gen)
> struct btrfs_key key;
> int slot;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_utimes %llu", ino);
>
> p = fs_path_alloc();
> @@ -2577,7 +2585,7 @@ static int send_utimes(struct send_ctx *sctx, u64 ino, u64 gen)
> */
> static int send_create_inode(struct send_ctx *sctx, u64 ino)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p;
> int cmd;
> @@ -2585,6 +2593,7 @@ static int send_create_inode(struct send_ctx *sctx, u64 ino)
> u64 mode;
> u64 rdev;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_create_inode %llu", ino);
>
> p = fs_path_alloc();
> @@ -3643,7 +3652,7 @@ static int wait_for_parent_move(struct send_ctx *sctx,
> */
> static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct recorded_ref *cur;
> struct recorded_ref *cur2;
> @@ -3656,6 +3665,7 @@ static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)
> u64 last_dir_ino_rm = 0;
> bool can_rename = true;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "process_recorded_refs %llu", sctx->cur_ino);
>
> /*
> @@ -4666,7 +4676,7 @@ static ssize_t fill_read_buf(struct send_ctx *sctx, u64 offset, u32 len)
> */
> static int send_write(struct send_ctx *sctx, u64 offset, u32 len)
> {
> - struct btrfs_fs_info *fs_info = sctx->send_root->fs_info;
> + struct btrfs_fs_info *fs_info;
> int ret = 0;
> struct fs_path *p;
> ssize_t num_read = 0;
> @@ -4675,6 +4685,7 @@ static int send_write(struct send_ctx *sctx, u64 offset, u32 len)
> if (!p)
> return -ENOMEM;
>
> + fs_info = sctx->send_root->fs_info;
> btrfs_debug(fs_info, "send_write offset=%llu, len=%d", offset, len);
>
> num_read = fill_read_buf(sctx, offset, len);
>
--
Jeff Mahoney
SUSE Labs
Attachment:
signature.asc
Description: OpenPGP digital signature
