aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2014-10-12 19:22:45 -0400
committerDave Chinner <david@fromorbit.com>2014-10-12 19:22:45 -0400
commit6889e783cd68b79f8330ad4d10a2571c67c3f7df (patch)
tree6ebb3900542a9d449e9c5d9b5191f35845f40130 /fs
parent75e58ce4c8f354f1a68a8bb8a9692827cdaf3d21 (diff)
parenta8b1ee8bafc765ebf029d03c5479a69aebff9693 (diff)
Merge branch 'xfs-misc-fixes-for-3.18-3' into for-next
Diffstat (limited to 'fs')
-rw-r--r--fs/xfs/kmem.c1
-rw-r--r--fs/xfs/libxfs/xfs_da_btree.c3
-rw-r--r--fs/xfs/libxfs/xfs_sb.c5
-rw-r--r--fs/xfs/time.h36
-rw-r--r--fs/xfs/xfs_aops.c7
-rw-r--r--fs/xfs/xfs_bmap_util.c14
-rw-r--r--fs/xfs/xfs_inode.c8
-rw-r--r--fs/xfs/xfs_inode.h2
-rw-r--r--fs/xfs/xfs_inode_item.c2
-rw-r--r--fs/xfs/xfs_ioctl.c20
-rw-r--r--fs/xfs/xfs_ioctl32.c2
-rw-r--r--fs/xfs/xfs_ioctl32.h3
-rw-r--r--fs/xfs/xfs_iomap.c4
-rw-r--r--fs/xfs/xfs_itable.c3
-rw-r--r--fs/xfs/xfs_linux.h6
-rw-r--r--fs/xfs/xfs_trans_inode.c2
16 files changed, 57 insertions, 61 deletions
diff --git a/fs/xfs/kmem.c b/fs/xfs/kmem.c
index 844e288b9576..53e95b2a1369 100644
--- a/fs/xfs/kmem.c
+++ b/fs/xfs/kmem.c
@@ -21,7 +21,6 @@
21#include <linux/swap.h> 21#include <linux/swap.h>
22#include <linux/blkdev.h> 22#include <linux/blkdev.h>
23#include <linux/backing-dev.h> 23#include <linux/backing-dev.h>
24#include "time.h"
25#include "kmem.h" 24#include "kmem.h"
26#include "xfs_message.h" 25#include "xfs_message.h"
27 26
diff --git a/fs/xfs/libxfs/xfs_da_btree.c b/fs/xfs/libxfs/xfs_da_btree.c
index 2c42ae28d027..fd827530afec 100644
--- a/fs/xfs/libxfs/xfs_da_btree.c
+++ b/fs/xfs/libxfs/xfs_da_btree.c
@@ -2563,7 +2563,8 @@ xfs_da_get_buf(
2563 mapp, nmap, 0); 2563 mapp, nmap, 0);
2564 error = bp ? bp->b_error : -EIO; 2564 error = bp ? bp->b_error : -EIO;
2565 if (error) { 2565 if (error) {
2566 xfs_trans_brelse(trans, bp); 2566 if (bp)
2567 xfs_trans_brelse(trans, bp);
2567 goto out_free; 2568 goto out_free;
2568 } 2569 }
2569 2570
diff --git a/fs/xfs/libxfs/xfs_sb.c b/fs/xfs/libxfs/xfs_sb.c
index 8426e5e2682e..5f902fa7913f 100644
--- a/fs/xfs/libxfs/xfs_sb.c
+++ b/fs/xfs/libxfs/xfs_sb.c
@@ -445,6 +445,8 @@ __xfs_sb_from_disk(
445 to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat); 445 to->sb_features_incompat = be32_to_cpu(from->sb_features_incompat);
446 to->sb_features_log_incompat = 446 to->sb_features_log_incompat =
447 be32_to_cpu(from->sb_features_log_incompat); 447 be32_to_cpu(from->sb_features_log_incompat);
448 /* crc is only used on disk, not in memory; just init to 0 here. */
449 to->sb_crc = 0;
448 to->sb_pad = 0; 450 to->sb_pad = 0;
449 to->sb_pquotino = be64_to_cpu(from->sb_pquotino); 451 to->sb_pquotino = be64_to_cpu(from->sb_pquotino);
450 to->sb_lsn = be64_to_cpu(from->sb_lsn); 452 to->sb_lsn = be64_to_cpu(from->sb_lsn);
@@ -550,6 +552,9 @@ xfs_sb_to_disk(
550 if (!fields) 552 if (!fields)
551 return; 553 return;
552 554
555 /* We should never write the crc here, it's updated in the IO path */
556 fields &= ~XFS_SB_CRC;
557
553 xfs_sb_quota_to_disk(to, from, &fields); 558 xfs_sb_quota_to_disk(to, from, &fields);
554 while (fields) { 559 while (fields) {
555 f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields); 560 f = (xfs_sb_field_t)xfs_lowbit64((__uint64_t)fields);
diff --git a/fs/xfs/time.h b/fs/xfs/time.h
deleted file mode 100644
index 387e695a184c..000000000000
--- a/fs/xfs/time.h
+++ /dev/null
@@ -1,36 +0,0 @@
1/*
2 * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
3 * All Rights Reserved.
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it would be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18#ifndef __XFS_SUPPORT_TIME_H__
19#define __XFS_SUPPORT_TIME_H__
20
21#include <linux/sched.h>
22#include <linux/time.h>
23
24typedef struct timespec timespec_t;
25
26static inline void delay(long ticks)
27{
28 schedule_timeout_uninterruptible(ticks);
29}
30
31static inline void nanotime(struct timespec *tvp)
32{
33 *tvp = CURRENT_TIME;
34}
35
36#endif /* __XFS_SUPPORT_TIME_H__ */
diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c
index 2f502537a39c..f5b2453a43b2 100644
--- a/fs/xfs/xfs_aops.c
+++ b/fs/xfs/xfs_aops.c
@@ -560,6 +560,13 @@ xfs_cancel_ioend(
560 do { 560 do {
561 next_bh = bh->b_private; 561 next_bh = bh->b_private;
562 clear_buffer_async_write(bh); 562 clear_buffer_async_write(bh);
563 /*
564 * The unwritten flag is cleared when added to the
565 * ioend. We're not submitting for I/O so mark the
566 * buffer unwritten again for next time around.
567 */
568 if (ioend->io_type == XFS_IO_UNWRITTEN)
569 set_buffer_unwritten(bh);
563 unlock_buffer(bh); 570 unlock_buffer(bh);
564 } while ((bh = next_bh) != NULL); 571 } while ((bh = next_bh) != NULL);
565 572
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c
index c2aaa58e59ee..92e8f99a5857 100644
--- a/fs/xfs/xfs_bmap_util.c
+++ b/fs/xfs/xfs_bmap_util.c
@@ -1368,14 +1368,14 @@ xfs_zero_file_space(
1368 1368
1369 if (start_boundary < end_boundary - 1) { 1369 if (start_boundary < end_boundary - 1) {
1370 /* 1370 /*
1371 * punch out delayed allocation blocks and the page cache over 1371 * Writeback the range to ensure any inode size updates due to
1372 * the conversion range 1372 * appending writes make it to disk (otherwise we could just
1373 * punch out the delalloc blocks).
1373 */ 1374 */
1374 xfs_ilock(ip, XFS_ILOCK_EXCL); 1375 error = filemap_write_and_wait_range(VFS_I(ip)->i_mapping,
1375 error = xfs_bmap_punch_delalloc_range(ip, 1376 start_boundary, end_boundary - 1);
1376 XFS_B_TO_FSBT(mp, start_boundary), 1377 if (error)
1377 XFS_B_TO_FSB(mp, end_boundary - start_boundary)); 1378 goto out;
1378 xfs_iunlock(ip, XFS_ILOCK_EXCL);
1379 truncate_pagecache_range(VFS_I(ip), start_boundary, 1379 truncate_pagecache_range(VFS_I(ip), start_boundary,
1380 end_boundary - 1); 1380 end_boundary - 1);
1381 1381
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index e5bbc1f30f16..8ed049d1e332 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -654,7 +654,7 @@ xfs_ialloc(
654 xfs_inode_t *ip; 654 xfs_inode_t *ip;
655 uint flags; 655 uint flags;
656 int error; 656 int error;
657 timespec_t tv; 657 struct timespec tv;
658 658
659 /* 659 /*
660 * Call the space management code to pick 660 * Call the space management code to pick
@@ -720,7 +720,7 @@ xfs_ialloc(
720 ip->i_d.di_nextents = 0; 720 ip->i_d.di_nextents = 0;
721 ASSERT(ip->i_d.di_nblocks == 0); 721 ASSERT(ip->i_d.di_nblocks == 0);
722 722
723 nanotime(&tv); 723 tv = current_fs_time(mp->m_super);
724 ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec; 724 ip->i_d.di_mtime.t_sec = (__int32_t)tv.tv_sec;
725 ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec; 725 ip->i_d.di_mtime.t_nsec = (__int32_t)tv.tv_nsec;
726 ip->i_d.di_atime = ip->i_d.di_mtime; 726 ip->i_d.di_atime = ip->i_d.di_mtime;
@@ -769,6 +769,8 @@ xfs_ialloc(
769 di_flags |= XFS_DIFLAG_EXTSZINHERIT; 769 di_flags |= XFS_DIFLAG_EXTSZINHERIT;
770 ip->i_d.di_extsize = pip->i_d.di_extsize; 770 ip->i_d.di_extsize = pip->i_d.di_extsize;
771 } 771 }
772 if (pip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)
773 di_flags |= XFS_DIFLAG_PROJINHERIT;
772 } else if (S_ISREG(mode)) { 774 } else if (S_ISREG(mode)) {
773 if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT) 775 if (pip->i_d.di_flags & XFS_DIFLAG_RTINHERIT)
774 di_flags |= XFS_DIFLAG_REALTIME; 776 di_flags |= XFS_DIFLAG_REALTIME;
@@ -789,8 +791,6 @@ xfs_ialloc(
789 if ((pip->i_d.di_flags & XFS_DIFLAG_NOSYMLINKS) && 791 if ((pip->i_d.di_flags & XFS_DIFLAG_NOSYMLINKS) &&
790 xfs_inherit_nosymlinks) 792 xfs_inherit_nosymlinks)
791 di_flags |= XFS_DIFLAG_NOSYMLINKS; 793 di_flags |= XFS_DIFLAG_NOSYMLINKS;
792 if (pip->i_d.di_flags & XFS_DIFLAG_PROJINHERIT)
793 di_flags |= XFS_DIFLAG_PROJINHERIT;
794 if ((pip->i_d.di_flags & XFS_DIFLAG_NODEFRAG) && 794 if ((pip->i_d.di_flags & XFS_DIFLAG_NODEFRAG) &&
795 xfs_inherit_nodefrag) 795 xfs_inherit_nodefrag)
796 di_flags |= XFS_DIFLAG_NODEFRAG; 796 di_flags |= XFS_DIFLAG_NODEFRAG;
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h
index c10e3fadd9af..9af2882e1f4c 100644
--- a/fs/xfs/xfs_inode.h
+++ b/fs/xfs/xfs_inode.h
@@ -102,7 +102,7 @@ xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size)
102{ 102{
103 xfs_fsize_t i_size = i_size_read(VFS_I(ip)); 103 xfs_fsize_t i_size = i_size_read(VFS_I(ip));
104 104
105 if (new_size > i_size) 105 if (new_size > i_size || new_size < 0)
106 new_size = i_size; 106 new_size = i_size;
107 return new_size > ip->i_d.di_size ? new_size : 0; 107 return new_size > ip->i_d.di_size ? new_size : 0;
108} 108}
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
index de5a7be36e60..63de0b0acc32 100644
--- a/fs/xfs/xfs_inode_item.c
+++ b/fs/xfs/xfs_inode_item.c
@@ -615,7 +615,7 @@ xfs_iflush_done(
615 blip = bp->b_fspriv; 615 blip = bp->b_fspriv;
616 prev = NULL; 616 prev = NULL;
617 while (blip != NULL) { 617 while (blip != NULL) {
618 if (lip->li_cb != xfs_iflush_done) { 618 if (blip->li_cb != xfs_iflush_done) {
619 prev = blip; 619 prev = blip;
620 blip = blip->li_bio_list; 620 blip = blip->li_bio_list;
621 continue; 621 continue;
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index 7a6b406ce6c9..24c926b6fe85 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -968,8 +968,6 @@ xfs_set_diflags(
968 di_flags |= XFS_DIFLAG_NOATIME; 968 di_flags |= XFS_DIFLAG_NOATIME;
969 if (xflags & XFS_XFLAG_NODUMP) 969 if (xflags & XFS_XFLAG_NODUMP)
970 di_flags |= XFS_DIFLAG_NODUMP; 970 di_flags |= XFS_DIFLAG_NODUMP;
971 if (xflags & XFS_XFLAG_PROJINHERIT)
972 di_flags |= XFS_DIFLAG_PROJINHERIT;
973 if (xflags & XFS_XFLAG_NODEFRAG) 971 if (xflags & XFS_XFLAG_NODEFRAG)
974 di_flags |= XFS_DIFLAG_NODEFRAG; 972 di_flags |= XFS_DIFLAG_NODEFRAG;
975 if (xflags & XFS_XFLAG_FILESTREAM) 973 if (xflags & XFS_XFLAG_FILESTREAM)
@@ -981,6 +979,8 @@ xfs_set_diflags(
981 di_flags |= XFS_DIFLAG_NOSYMLINKS; 979 di_flags |= XFS_DIFLAG_NOSYMLINKS;
982 if (xflags & XFS_XFLAG_EXTSZINHERIT) 980 if (xflags & XFS_XFLAG_EXTSZINHERIT)
983 di_flags |= XFS_DIFLAG_EXTSZINHERIT; 981 di_flags |= XFS_DIFLAG_EXTSZINHERIT;
982 if (xflags & XFS_XFLAG_PROJINHERIT)
983 di_flags |= XFS_DIFLAG_PROJINHERIT;
984 } else if (S_ISREG(ip->i_d.di_mode)) { 984 } else if (S_ISREG(ip->i_d.di_mode)) {
985 if (xflags & XFS_XFLAG_REALTIME) 985 if (xflags & XFS_XFLAG_REALTIME)
986 di_flags |= XFS_DIFLAG_REALTIME; 986 di_flags |= XFS_DIFLAG_REALTIME;
@@ -1231,13 +1231,25 @@ xfs_ioctl_setattr(
1231 1231
1232 } 1232 }
1233 1233
1234 if (mask & FSX_EXTSIZE)
1235 ip->i_d.di_extsize = fa->fsx_extsize >> mp->m_sb.sb_blocklog;
1236 if (mask & FSX_XFLAGS) { 1234 if (mask & FSX_XFLAGS) {
1237 xfs_set_diflags(ip, fa->fsx_xflags); 1235 xfs_set_diflags(ip, fa->fsx_xflags);
1238 xfs_diflags_to_linux(ip); 1236 xfs_diflags_to_linux(ip);
1239 } 1237 }
1240 1238
1239 /*
1240 * Only set the extent size hint if we've already determined that the
1241 * extent size hint should be set on the inode. If no extent size flags
1242 * are set on the inode then unconditionally clear the extent size hint.
1243 */
1244 if (mask & FSX_EXTSIZE) {
1245 int extsize = 0;
1246
1247 if (ip->i_d.di_flags &
1248 (XFS_DIFLAG_EXTSIZE | XFS_DIFLAG_EXTSZINHERIT))
1249 extsize = fa->fsx_extsize >> mp->m_sb.sb_blocklog;
1250 ip->i_d.di_extsize = extsize;
1251 }
1252
1241 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG); 1253 xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_CHG);
1242 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); 1254 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
1243 1255
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
index a554646ff141..94ce027e28e3 100644
--- a/fs/xfs/xfs_ioctl32.c
+++ b/fs/xfs/xfs_ioctl32.c
@@ -160,6 +160,7 @@ xfs_ioctl32_bstat_copyin(
160 get_user(bstat->bs_gen, &bstat32->bs_gen) || 160 get_user(bstat->bs_gen, &bstat32->bs_gen) ||
161 get_user(bstat->bs_projid_lo, &bstat32->bs_projid_lo) || 161 get_user(bstat->bs_projid_lo, &bstat32->bs_projid_lo) ||
162 get_user(bstat->bs_projid_hi, &bstat32->bs_projid_hi) || 162 get_user(bstat->bs_projid_hi, &bstat32->bs_projid_hi) ||
163 get_user(bstat->bs_forkoff, &bstat32->bs_forkoff) ||
163 get_user(bstat->bs_dmevmask, &bstat32->bs_dmevmask) || 164 get_user(bstat->bs_dmevmask, &bstat32->bs_dmevmask) ||
164 get_user(bstat->bs_dmstate, &bstat32->bs_dmstate) || 165 get_user(bstat->bs_dmstate, &bstat32->bs_dmstate) ||
165 get_user(bstat->bs_aextents, &bstat32->bs_aextents)) 166 get_user(bstat->bs_aextents, &bstat32->bs_aextents))
@@ -214,6 +215,7 @@ xfs_bulkstat_one_fmt_compat(
214 put_user(buffer->bs_gen, &p32->bs_gen) || 215 put_user(buffer->bs_gen, &p32->bs_gen) ||
215 put_user(buffer->bs_projid, &p32->bs_projid) || 216 put_user(buffer->bs_projid, &p32->bs_projid) ||
216 put_user(buffer->bs_projid_hi, &p32->bs_projid_hi) || 217 put_user(buffer->bs_projid_hi, &p32->bs_projid_hi) ||
218 put_user(buffer->bs_forkoff, &p32->bs_forkoff) ||
217 put_user(buffer->bs_dmevmask, &p32->bs_dmevmask) || 219 put_user(buffer->bs_dmevmask, &p32->bs_dmevmask) ||
218 put_user(buffer->bs_dmstate, &p32->bs_dmstate) || 220 put_user(buffer->bs_dmstate, &p32->bs_dmstate) ||
219 put_user(buffer->bs_aextents, &p32->bs_aextents)) 221 put_user(buffer->bs_aextents, &p32->bs_aextents))
diff --git a/fs/xfs/xfs_ioctl32.h b/fs/xfs/xfs_ioctl32.h
index 80f4060e8970..b1bb45444df8 100644
--- a/fs/xfs/xfs_ioctl32.h
+++ b/fs/xfs/xfs_ioctl32.h
@@ -67,8 +67,9 @@ typedef struct compat_xfs_bstat {
67 __u32 bs_gen; /* generation count */ 67 __u32 bs_gen; /* generation count */
68 __u16 bs_projid_lo; /* lower part of project id */ 68 __u16 bs_projid_lo; /* lower part of project id */
69#define bs_projid bs_projid_lo /* (previously just bs_projid) */ 69#define bs_projid bs_projid_lo /* (previously just bs_projid) */
70 __u16 bs_forkoff; /* inode fork offset in bytes */
70 __u16 bs_projid_hi; /* high part of project id */ 71 __u16 bs_projid_hi; /* high part of project id */
71 unsigned char bs_pad[12]; /* pad space, unused */ 72 unsigned char bs_pad[10]; /* pad space, unused */
72 __u32 bs_dmevmask; /* DMIG event mask */ 73 __u32 bs_dmevmask; /* DMIG event mask */
73 __u16 bs_dmstate; /* DMIG state info */ 74 __u16 bs_dmstate; /* DMIG state info */
74 __u16 bs_aextents; /* attribute number of extents */ 75 __u16 bs_aextents; /* attribute number of extents */
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index e9c47b6f5e5a..afcf3c926565 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -404,8 +404,8 @@ xfs_quota_calc_throttle(
404 int shift = 0; 404 int shift = 0;
405 struct xfs_dquot *dq = xfs_inode_dquot(ip, type); 405 struct xfs_dquot *dq = xfs_inode_dquot(ip, type);
406 406
407 /* over hi wmark, squash the prealloc completely */ 407 /* no dq, or over hi wmark, squash the prealloc completely */
408 if (dq->q_res_bcount >= dq->q_prealloc_hi_wmark) { 408 if (!dq || dq->q_res_bcount >= dq->q_prealloc_hi_wmark) {
409 *qblocks = 0; 409 *qblocks = 0;
410 *qfreesp = 0; 410 *qfreesp = 0;
411 return; 411 return;
diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c
index f71be9c68017..f1deb961a296 100644
--- a/fs/xfs/xfs_itable.c
+++ b/fs/xfs/xfs_itable.c
@@ -639,7 +639,8 @@ next_ag:
639 xfs_buf_relse(agbp); 639 xfs_buf_relse(agbp);
640 agbp = NULL; 640 agbp = NULL;
641 agino = 0; 641 agino = 0;
642 } while (++agno < mp->m_sb.sb_agcount); 642 agno++;
643 } while (agno < mp->m_sb.sb_agcount);
643 644
644 if (!error) { 645 if (!error) {
645 if (bufidx) { 646 if (bufidx) {
diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h
index d10dc8f397c9..6a51619d8690 100644
--- a/fs/xfs/xfs_linux.h
+++ b/fs/xfs/xfs_linux.h
@@ -56,7 +56,6 @@ typedef __uint64_t __psunsigned_t;
56 56
57#include "kmem.h" 57#include "kmem.h"
58#include "mrlock.h" 58#include "mrlock.h"
59#include "time.h"
60#include "uuid.h" 59#include "uuid.h"
61 60
62#include <linux/semaphore.h> 61#include <linux/semaphore.h>
@@ -179,6 +178,11 @@ typedef __uint64_t __psunsigned_t;
179#define MAX(a,b) (max(a,b)) 178#define MAX(a,b) (max(a,b))
180#define howmany(x, y) (((x)+((y)-1))/(y)) 179#define howmany(x, y) (((x)+((y)-1))/(y))
181 180
181static inline void delay(long ticks)
182{
183 schedule_timeout_uninterruptible(ticks);
184}
185
182/* 186/*
183 * XFS wrapper structure for sysfs support. It depends on external data 187 * XFS wrapper structure for sysfs support. It depends on external data
184 * structures and is embedded in various internal data structures to implement 188 * structures and is embedded in various internal data structures to implement
diff --git a/fs/xfs/xfs_trans_inode.c b/fs/xfs/xfs_trans_inode.c
index 50c3f5614288..cdb4d86520e1 100644
--- a/fs/xfs/xfs_trans_inode.c
+++ b/fs/xfs/xfs_trans_inode.c
@@ -70,7 +70,7 @@ xfs_trans_ichgtime(
70 int flags) 70 int flags)
71{ 71{
72 struct inode *inode = VFS_I(ip); 72 struct inode *inode = VFS_I(ip);
73 timespec_t tv; 73 struct timespec tv;
74 74
75 ASSERT(tp); 75 ASSERT(tp);
76 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); 76 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));