Re: [ANNOUNCE] HFS+ driver

From: David S. Miller (davem@redhat.com)
Date: Wed May 07 2003 - 10:40:35 EST


On Wed, 2003-05-07 at 08:06, Roman Zippel wrote:
> The driver can be downloaded from http://www.ardistech.com/hfsplus/ .
> The README describes how to build the driver.

This patch fixes 64-bit bugs (in extent code) and warnings
(in directory handling).

-- 
David S. Miller <davem@redhat.com>

--- extents.c.~1~ Fri May 2 04:25:09 2003 +++ extents.c Wed May 7 08:34:55 2003 @@ -216,7 +216,7 @@ break; } data[off] = cpu_to_be32(~word); - m = 1 << (8 * sizeof(unsigned long) - 1); + m = 1UL << (8 * sizeof(unsigned long) - 1); } while (++off < size); done: mark_buffer_dirty_inode(bh, anode); @@ -341,7 +341,7 @@ word = be32_to_cpu(data[off]); if (!~word) continue; - m = 1 << (sizeof(unsigned long) * 8 - 1); + m = 1UL << (sizeof(unsigned long) * 8 - 1); for (i = 0; m; i++, m >>= 1) { if (word & m) continue; --- dir.c.~1~ Fri May 2 07:32:04 2003 +++ dir.c Wed May 7 08:36:06 2003 @@ -69,14 +69,14 @@ inode = NULL; goto out; } - dentry->d_fsdata = (void *)cnid; + dentry->d_fsdata = (void *)(unsigned long)cnid; linkid = be32_to_cpu(entry.file.permissions.dev); str.len = sprintf(name, "iNode%d", linkid); str.name = name; hfsplus_fill_cat_key(fd.search_key, HFSPLUS_SB(sb).hidden_dir->i_ino, &str); goto again; } else if (!dentry->d_fsdata) - dentry->d_fsdata = (void *)cnid; + dentry->d_fsdata = (void *)(unsigned long)cnid; } else { printk("HFS+-fs: Illegal catalog entry type in lookup\n"); err = -EIO; @@ -267,7 +267,7 @@ if (HFSPLUS_IS_RSRC(inode)) return -EPERM; - if (inode->i_ino == (u32)src_dentry->d_fsdata) { + if (inode->i_ino == (u32)(unsigned long)src_dentry->d_fsdata) { for (;;) { get_random_bytes(&id, sizeof(cnid)); id &= 0x3fffffff; @@ -283,7 +283,7 @@ } HFSPLUS_I(inode).dev = id; cnid = HFSPLUS_SB(sb).next_cnid++; - src_dentry->d_fsdata = (void *)cnid; + src_dentry->d_fsdata = (void *)(unsigned long)cnid; res = hfsplus_create_cat(cnid, src_dir, &src_dentry->d_name, inode); if (res) /* panic? */ @@ -296,7 +296,7 @@ return res; inode->i_nlink++; - dst_dentry->d_fsdata = (void *)cnid; + dst_dentry->d_fsdata = (void *)(unsigned long)cnid; d_instantiate(dst_dentry, inode); atomic_inc(&inode->i_count); inode->i_ctime = CURRENT_TIME; @@ -319,7 +319,7 @@ if (HFSPLUS_IS_RSRC(inode)) return -EPERM; - cnid = (u32)dentry->d_fsdata; + cnid = (u32)(unsigned long)dentry->d_fsdata; if (inode->i_ino == cnid && atomic_read(&HFSPLUS_I(inode).opencnt)) { str.name = name;

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed May 07 2003 - 22:00:31 EST