diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c
index 2881341..21791f0 100644
--- a/fs/btrfs/print-tree.c
+++ b/fs/btrfs/print-tree.c
@@ -15,31 +15,32 @@
 	struct btrfs_block_group_item *bi;
 	u32 type;
 
-	printk("leaf %Lu total ptrs %d free space %d\n",
-		btrfs_header_blocknr(&l->header), nr,
+	printk("leaf %llu total ptrs %d free space %d\n",
+		(unsigned long long)btrfs_header_blocknr(&l->header), nr,
 		btrfs_leaf_free_space(root, l));
 	for (i = 0 ; i < nr ; i++) {
 		item = l->items + i;
 		type = btrfs_disk_key_type(&item->key);
-		printk("\titem %d key (%Lu %x %Lu) itemoff %d itemsize %d\n",
+		printk("\titem %d key (%llu %x %llu) itemoff %d itemsize %d\n",
 			i,
-			btrfs_disk_key_objectid(&item->key),
+			(unsigned long long)btrfs_disk_key_objectid(&item->key),
 			btrfs_disk_key_flags(&item->key),
-			btrfs_disk_key_offset(&item->key),
+			(unsigned long long)btrfs_disk_key_offset(&item->key),
 			btrfs_item_offset(item),
 			btrfs_item_size(item));
 		switch (type) {
 		case BTRFS_INODE_ITEM_KEY:
 			ii = btrfs_item_ptr(l, i, struct btrfs_inode_item);
-			printk("\t\tinode generation %Lu size %Lu mode %o\n",
-			       btrfs_inode_generation(ii),
-			       btrfs_inode_size(ii),
+			printk("\t\tinode generation %llu size %llu mode %o\n",
+			       (unsigned long long)btrfs_inode_generation(ii),
+			       (unsigned long long)btrfs_inode_size(ii),
 			       btrfs_inode_mode(ii));
 			break;
 		case BTRFS_DIR_ITEM_KEY:
 			di = btrfs_item_ptr(l, i, struct btrfs_dir_item);
-			printk("\t\tdir oid %Lu flags %u type %u\n",
-				btrfs_disk_key_objectid(&di->location),
+			printk("\t\tdir oid %llu flags %u type %u\n",
+				(unsigned long long)btrfs_disk_key_objectid(
+							    &di->location),
 				btrfs_dir_flags(di),
 				btrfs_dir_type(di));
 			printk("\t\tname %.*s\n",
@@ -47,8 +48,9 @@
 			break;
 		case BTRFS_ROOT_ITEM_KEY:
 			ri = btrfs_item_ptr(l, i, struct btrfs_root_item);
-			printk("\t\troot data blocknr %Lu refs %u\n",
-				btrfs_root_blocknr(ri), btrfs_root_refs(ri));
+			printk("\t\troot data blocknr %llu refs %u\n",
+				(unsigned long long)btrfs_root_blocknr(ri),
+				btrfs_root_refs(ri));
 			break;
 		case BTRFS_EXTENT_ITEM_KEY:
 			ei = btrfs_item_ptr(l, i, struct btrfs_extent_item);
@@ -58,8 +60,8 @@
 		case BTRFS_BLOCK_GROUP_ITEM_KEY:
 			bi = btrfs_item_ptr(l, i,
 					    struct btrfs_block_group_item);
-			printk("\t\tblock group used %Lu\n",
-			       btrfs_block_group_used(bi));
+			printk("\t\tblock group used %llu\n",
+			       (unsigned long long)btrfs_block_group_used(bi));
 			break;
 		case BTRFS_STRING_ITEM_KEY:
 			printk("\t\titem data %.*s\n", btrfs_item_size(item),
@@ -83,17 +85,17 @@
 		btrfs_print_leaf(root, (struct btrfs_leaf *)c);
 		return;
 	}
-	printk("node %Lu level %d total ptrs %d free spc %u\n",
-	       btrfs_header_blocknr(&c->header),
+	printk("node %llu level %d total ptrs %d free spc %u\n",
+	       (unsigned long long)btrfs_header_blocknr(&c->header),
 	       btrfs_header_level(&c->header), nr,
 	       (u32)BTRFS_NODEPTRS_PER_BLOCK(root) - nr);
 	for (i = 0; i < nr; i++) {
-		printk("\tkey %d (%Lu %u %Lu) block %Lu\n",
+		printk("\tkey %d (%llu %u %llu) block %llu\n",
 		       i,
-		       c->ptrs[i].key.objectid,
+		       (unsigned long long)c->ptrs[i].key.objectid,
 		       c->ptrs[i].key.flags,
-		       c->ptrs[i].key.offset,
-		       btrfs_node_blockptr(c, i));
+		       (unsigned long long)c->ptrs[i].key.offset,
+		       (unsigned long long)btrfs_node_blockptr(c, i));
 	}
 	for (i = 0; i < nr; i++) {
 		struct buffer_head *next_buf = read_tree_block(root,
