[PATCH 13/14] PMFS: Fix a couple of missing endian conversions in inode.c

Matthew Wilcox matthew.r.wilcox at intel.com
Mon Oct 7 09:37:57 EDT 2013


From: Matthew Wilcox <willy at linux.intel.com>

pmfs_increase_inode_table_size() was using i_size from the media directly
when it should have been swapping it first.

pmfs_truncate_del() was writing the inode number to the media in native
endian instead of little endian.

Signed-off-by: Matthew Wilcox <matthew.r.wilcox at intel.com>
---
 fs/pmfs/inode.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/pmfs/inode.c b/fs/pmfs/inode.c
index 3fb1a41..5e59169 100644
--- a/fs/pmfs/inode.c
+++ b/fs/pmfs/inode.c
@@ -1069,7 +1069,8 @@ static int pmfs_increase_inode_table_size(struct super_block *sb)
 	pmfs_add_logentry(sb, trans, pi, MAX_DATA_PER_LENTRY, LE_DATA);
 
 	errval = __pmfs_alloc_blocks(trans, sb, pi,
-			pi->i_size >> sb->s_blocksize_bits, 1, true);
+			le64_to_cpup(&pi->i_size) >> sb->s_blocksize_bits,
+			1, true);
 
 	if (errval == 0) {
 		u64 i_size = le64_to_cpu(pi->i_size);
@@ -1341,7 +1342,7 @@ void pmfs_truncate_del(struct inode *inode)
 		struct pmfs_inode_truncate_item *li_prv = 
 				pmfs_get_truncate_item(sb, i_prv->i_ino);
 		pmfs_memunlock_range(sb, li_prv, sizeof(*li_prv));
-		li_prv->i_next_truncate = ino_next;
+		li_prv->i_next_truncate = cpu_to_le64(ino_next);
 		pmfs_memlock_range(sb, li_prv, sizeof(*li_prv));
 		pmfs_flush_buffer(&li_prv->i_next_truncate,
 			sizeof(li_prv->i_next_truncate), false);
-- 
1.8.4.rc3




More information about the Linux-pmfs mailing list