(2010/12/08 19:01), liubo wrote:
> While compiling btrfs, I got belows:
> 
>   CC [M]  fs/btrfs/inode.o
> fs/btrfs/inode.c: In function ‘btrfs_end_dio_bio’:
> fs/btrfs/inode.c:5720: warning: format ‘%lu’ expects type ‘long unsigned 
> int’, but argument 4 has type ‘sector_t’
>   LD [M]  fs/btrfs/btrfs.o
>   Building modules, stage 2.
>   MODPOST 1 modules
>   LD [M]  fs/btrfs/btrfs.ko
> 
> This fixes the compile warning.
> 
> Signed-off-by: Liu Bo <liubo2...@cn.fujitsu.com>
> ---
>  fs/btrfs/inode.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> index 0f34cae..eff5aef 100644
> --- a/fs/btrfs/inode.c
> +++ b/fs/btrfs/inode.c
> @@ -5713,8 +5713,8 @@ static void btrfs_end_dio_bio(struct bio *bio, int err)
>       if (err) {
>               printk(KERN_ERR "btrfs direct IO failed ino %lu rw %lu "
>                     "disk_bytenr %lu len %u err no %d\n",
> -                   dip->inode->i_ino, bio->bi_rw, bio->bi_sector,
> -                   bio->bi_size, err);
> +                   dip->inode->i_ino, bio->bi_rw,
> +                   (unsigned long)bio->bi_sector, bio->bi_size, err);

sector_t is defined by include/linux/types.h as follows.

  #ifdef CONFIG_LBDAF
  typedef u64 sector_t;
  typedef u64 blkcnt_t;
  #else
  typedef unsigned long sector_t;
  typedef unsigned long blkcnt_t;
  #endif

Therefore, I think that you should change the code as follows. 
 
                printk(KERN_ERR "btrfs direct IO failed ino %lu rw %lu "
                      "disk_bytenr %llu len %u err no %d\n",
                      dip->inode->i_ino, bio->bi_rw,
                      (u64)bio->bi_sector, bio->bi_size, err);

>               dip->errors = 1;
>  
>               /*

Regards,
Itoh

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to